AtarI PLAYER EDITOR 0.6

The ATARI PLAYER EDITOR is a Flash application for designing animated Atari player graphics in mutlicolour mode.

Updates

Version 0.2: Hold down alt, ctrl or shift key and click on a pixel to set the pen colour.

Version 0.3: List file output changed.

Version 0.4: Screen layout changes for 1024x768 resolution.

Version 0.5: List file output changed; second BASIC listing added.

Version 0.6: .apl file format changed so it does not use ActionScript encoding.

FRAMES

Click on the arrows to change the number of frames; you must have at least 1 frame and can have a maximum of 16 frames.

HEIGHT

Click on the arrows to change the height of all frames; you may have a minimum height of 8 scan lines, a maximum height of 48 scan lines.

GAP

In order to have multicolour players you must overlap two players and this controls the gap between them. Click on the arrows to change the gap; you may have a minimum gap of 0 pixels (full overlap), a maximum gap of 8 pixels (no overlap).

Where pixels of the two players overlap, each pixel can be any one of 4 colours; player 0 colour, player 1 colour, the logical or of the player colours, background colour.

Where pixels of the two players do not overlap, each pixel can only be one of 2 colours; the respective player colour, background colour.

PEN COLOUR

The inverse selection indicates the currently selected pen colour (above it is player 0 colour; the other colours are player 1 colour, logical or colour and background colour).

Click on the appropriate colour to select it as the pen colour; when your draw on the frame grid it will use this colour (where possible).

FRAME COLOURS

If you click a second time after selecting player 0, player 1 or background colour, a palette menu will appear. Click on a colour to select it. If you decide not to change the colour, click outside of the palette menu and it will close.

Note that the player colours are stored per frame, so each frame may use different colours.

FILE OPERATIONS

Click on the appropriate file operation and a dialog box will appear for you to select a file.

You can load and save files in an encoded format understood by the ATARI PLAYER EDITOR. I have used a file extension of .apl.

If you list a file it will save the data to a file in human readable text format.

CLEAR

Click to clear all pixels in the current frame.

PIXEL SHIFT

Click on the arrows to shift the current frame by 1 pixel in the appropriate direction.

FLIP

Click the appropriate option to horizontally or vertically flip the current frame.

CURRENT FRAME

Click on the arrows to step through the frames; alternatively click on the appropriate frame image.

UNDO LAST OPERATION

Click to undo the last operation.

ANIMATION DISPLAY

The animation will constantly play; you can control the speed by clicking on the arrows. A value of 0 will stop the animation, 1 will update every frame, 2 will update every 2 frames etc.

COPY BUFFER DISPLAY

This display shows you what is stored in the copy buffer; if you paste a frame this is what will be used.

SIZE DISPLAY

This display shows the current frame as single, double and quad width images.

FRAME IMAGES

Click on the appropriate frame to select it for editing; the current frame is outlined.

FRAME MENU

If you click on the frame a second time, a frame menu will appear. Click on the appropriate operation or click outside of the frame menu to close it.

The following operations may be performed:

FRAME GRID

You may edit the current frame by drawing in the frame grid. You draw in the currently selected pen colour by clicking on a pixel or moving the mouse with the button held down. If the selected pen colour is not possible on a particular pixel (because it is not overlapped appropriately) then that pixel will not be updated.

Version 0.2 update: if you hold down the alt, ctrl or shift key and click on a pixel in the frame grid, the pen colour will be taken from that pixel.

RESOURCES

ATARI PLAYER EDITOR: http://www.playsoft.co.uk/aplayed.html

Instructions: http://www.playsoft.co.uk/aplayed_instructions.html

An example .apl file: http://www.playsoft.co.uk/mwalk.apl

An example .xex file (48K): http://www.playsoft.co.uk/test.xex

LIST FILE FORMAT

Version 0.3 update: the list file now contains the data in 3 sections for C, BASIC and Assembly programmers.

Version 0.5 update: a second BASIC listing is generated with different ordering.

The list file for mwalk.apl is given below.

For C programmers:

#define FRAMES (4)
#define HEIGHT (29)
#define GAP (0)
const unsigned char P0COLOURS[FRAMES] =
{
0x14, 0x14, 0x14, 0x14
};
const unsigned char P1COLOURS[FRAMES] =
{
0x28, 0x28, 0x28, 0x28
};
const unsigned char P0DATA[FRAMES][HEIGHT] =
{
{
0x00, 0x00, 0x1c, 0x2a, 0x5e, 0x40, 0x9f, 0xbc,
0x68, 0x7c, 0xfc, 0xff, 0x7f, 0x1c, 0x00, 0x3e,
0x47, 0x52, 0x53, 0x62, 0x77, 0x3f, 0x26, 0x24,
0x24, 0x24, 0x24, 0x38, 0x3c
},
{
0x00, 0x00, 0x1c, 0x2a, 0x5e, 0x40, 0x9f, 0xbc,
0x68, 0x7c, 0xfc, 0xff, 0x7f, 0x1c, 0x00, 0x3e,
0x47, 0x52, 0x53, 0x62, 0x77, 0x3f, 0x22, 0x30,
0x70, 0x78, 0xf0, 0xe6, 0x63
},
{
0x00, 0x00, 0x1c, 0x2a, 0x5e, 0x40, 0x9f, 0xbc,
0x7c, 0x7c, 0xe8, 0xff, 0x7f, 0x1c, 0x00, 0x3e,
0x47, 0x52, 0x4b, 0x2a, 0x3f, 0x3f, 0x26, 0x24,
0x24, 0x24, 0x24, 0x38, 0x3c
},
{
0x00, 0x00, 0x1c, 0x2a, 0x5e, 0x40, 0x9f, 0xbc,
0x7c, 0x7c, 0xe8, 0xff, 0x7f, 0x1c, 0x00, 0x3e,
0x47, 0x52, 0x4b, 0x2a, 0x3f, 0x3f, 0x62, 0x46,
0x4e, 0x8e, 0x96, 0xe6, 0x63
}
};
const unsigned char P1DATA[FRAMES][HEIGHT] =
{
{
0x00, 0x00, 0x00, 0x1c, 0x3c, 0x3f, 0x60, 0x5c,
0x3c, 0x28, 0x68, 0x5f, 0x0f, 0x20, 0x3c, 0x00,
0x38, 0x2d, 0x2c, 0x3d, 0x38, 0x30, 0x18, 0x18,
0x18, 0x18, 0x18, 0x1c, 0x1e
},
{
0x00, 0x00, 0x00, 0x1c, 0x3c, 0x3f, 0x60, 0x5c,
0x3c, 0x28, 0x68, 0x5f, 0x0f, 0x20, 0x3c, 0x00,
0x38, 0x2d, 0x2c, 0x3d, 0x38, 0x30, 0x1c, 0x0e,
0x0e, 0x06, 0x06, 0xc6, 0x63
},
{
0x00, 0x00, 0x00, 0x1c, 0x3c, 0x3f, 0x60, 0x5c,
0x28, 0x28, 0x7c, 0x5f, 0x0f, 0x20, 0x3c, 0x00,
0x38, 0x2d, 0x34, 0x1d, 0x0c, 0x0c, 0x18, 0x18,
0x18, 0x18, 0x18, 0x1c, 0x1e
},
{
0x00, 0x00, 0x00, 0x1c, 0x3c, 0x3f, 0x60, 0x5c,
0x28, 0x28, 0x7c, 0x5f, 0x0f, 0x20, 0x3c, 0x00,
0x38, 0x2d, 0x34, 0x1d, 0x0c, 0x0c, 0x1c, 0x38,
0x30, 0x70, 0x60, 0xc6, 0x63
}
};

For BASIC programmers:

10000 REM **** FRAMES ****
10010 DATA 4
10020 REM **** HEIGHT ****
10030 DATA 29
10040 REM **** GAP ****
10050 DATA 0
10060 REM **** P0 COLOURS ****
10070 DATA 20,20,20,20
10080 REM **** P1 COLOURS ****
10090 DATA 40,40,40,40
10100 REM **** P0 DATA ****
10110 REM **** FRAME 1
10120 DATA 0,0,28,42,94,64,159,188
10130 DATA 104,124,252,255,127,28,0,62
10140 DATA 71,82,83,98,119,63,38,36
10150 DATA 36,36,36,56,60
10160 REM **** FRAME 2
10170 DATA 0,0,28,42,94,64,159,188
10180 DATA 104,124,252,255,127,28,0,62
10190 DATA 71,82,83,98,119,63,34,48
10200 DATA 112,120,240,230,99
10210 REM **** FRAME 3
10220 DATA 0,0,28,42,94,64,159,188
10230 DATA 124,124,232,255,127,28,0,62
10240 DATA 71,82,75,42,63,63,38,36
10250 DATA 36,36,36,56,60
10260 REM **** FRAME 4
10270 DATA 0,0,28,42,94,64,159,188
10280 DATA 124,124,232,255,127,28,0,62
10290 DATA 71,82,75,42,63,63,98,70
10300 DATA 78,142,150,230,99
10310 REM **** P1 DATA ****
10320 REM **** FRAME 1
10330 DATA 0,0,0,28,60,63,96,92
10340 DATA 60,40,104,95,15,32,60,0
10350 DATA 56,45,44,61,56,48,24,24
10360 DATA 24,24,24,28,30
10370 REM **** FRAME 2
10380 DATA 0,0,0,28,60,63,96,92
10390 DATA 60,40,104,95,15,32,60,0
10400 DATA 56,45,44,61,56,48,28,14
10410 DATA 14,6,6,198,99
10420 REM **** FRAME 3
10430 DATA 0,0,0,28,60,63,96,92
10440 DATA 40,40,124,95,15,32,60,0
10450 DATA 56,45,52,29,12,12,24,24
10460 DATA 24,24,24,28,30
10470 REM **** FRAME 4
10480 DATA 0,0,0,28,60,63,96,92
10490 DATA 40,40,124,95,15,32,60,0
10500 DATA 56,45,52,29,12,12,28,56
10510 DATA 48,112,96,198,99

For BASIC programmers (2):

10000 REM **** FRAMES ****
10010 DATA 4
10020 REM **** HEIGHT ****
10030 DATA 29
10040 REM **** GAP ****
10050 DATA 0
10060 REM **** FRAME 1 COLOURS (P0, P1) ****
10070 DATA 20,40
10080 REM **** FRAME 2 COLOURS (P0, P1) ****
10090 DATA 20,40
10100 REM **** FRAME 3 COLOURS (P0, P1) ****
10110 DATA 20,40
10120 REM **** FRAME 4 COLOURS (P0, P1) ****
10130 DATA 20,40
10140 REM **** FRAME 1 ****
10150 REM **** P0 DATA
10160 DATA 0,0,28,42,94,64,159,188
10170 DATA 104,124,252,255,127,28,0,62
10180 DATA 71,82,83,98,119,63,38,36
10190 DATA 36,36,36,56,60
10200 REM **** P1 DATA
10210 DATA 0,0,0,28,60,63,96,92
10220 DATA 60,40,104,95,15,32,60,0
10230 DATA 56,45,44,61,56,48,24,24
10240 DATA 24,24,24,28,30
10250 REM **** FRAME 2 ****
10260 REM **** P0 DATA
10270 DATA 0,0,28,42,94,64,159,188
10280 DATA 104,124,252,255,127,28,0,62
10290 DATA 71,82,83,98,119,63,34,48
10300 DATA 112,120,240,230,99
10310 REM **** P1 DATA
10320 DATA 0,0,0,28,60,63,96,92
10330 DATA 60,40,104,95,15,32,60,0
10340 DATA 56,45,44,61,56,48,28,14
10350 DATA 14,6,6,198,99
10360 REM **** FRAME 3 ****
10370 REM **** P0 DATA
10380 DATA 0,0,28,42,94,64,159,188
10390 DATA 124,124,232,255,127,28,0,62
10400 DATA 71,82,75,42,63,63,38,36
10410 DATA 36,36,36,56,60
10420 REM **** P1 DATA
10430 DATA 0,0,0,28,60,63,96,92
10440 DATA 40,40,124,95,15,32,60,0
10450 DATA 56,45,52,29,12,12,24,24
10460 DATA 24,24,24,28,30
10470 REM **** FRAME 4 ****
10480 REM **** P0 DATA
10490 DATA 0,0,28,42,94,64,159,188
10500 DATA 124,124,232,255,127,28,0,62
10510 DATA 71,82,75,42,63,63,98,70
10520 DATA 78,142,150,230,99
10530 REM **** P1 DATA
10540 DATA 0,0,0,28,60,63,96,92
10550 DATA 40,40,124,95,15,32,60,0
10560 DATA 56,45,52,29,12,12,28,56
10570 DATA 48,112,96,198,99

For Assembler programmers:

FRAMES
.BYTE 4
HEIGHT
.BYTE 29
GAP
.BYTE 0
P0COLOURS
.BYTE $14,$14,$14,$14
P1COLOURS
.BYTE $28,$28,$28,$28
P0DATA
; FRAME 1
.BYTE $00,$00,$1c,$2a,$5e,$40,$9f,$bc
.BYTE $68,$7c,$fc,$ff,$7f,$1c,$00,$3e
.BYTE $47,$52,$53,$62,$77,$3f,$26,$24
.BYTE $24,$24,$24,$38,$3c
; FRAME 2
.BYTE $00,$00,$1c,$2a,$5e,$40,$9f,$bc
.BYTE $68,$7c,$fc,$ff,$7f,$1c,$00,$3e
.BYTE $47,$52,$53,$62,$77,$3f,$22,$30
.BYTE $70,$78,$f0,$e6,$63
; FRAME 3
.BYTE $00,$00,$1c,$2a,$5e,$40,$9f,$bc
.BYTE $7c,$7c,$e8,$ff,$7f,$1c,$00,$3e
.BYTE $47,$52,$4b,$2a,$3f,$3f,$26,$24
.BYTE $24,$24,$24,$38,$3c
; FRAME 4
.BYTE $00,$00,$1c,$2a,$5e,$40,$9f,$bc
.BYTE $7c,$7c,$e8,$ff,$7f,$1c,$00,$3e
.BYTE $47,$52,$4b,$2a,$3f,$3f,$62,$46
.BYTE $4e,$8e,$96,$e6,$63
P1DATA
; FRAME 1
.BYTE $00,$00,$00,$1c,$3c,$3f,$60,$5c
.BYTE $3c,$28,$68,$5f,$0f,$20,$3c,$00
.BYTE $38,$2d,$2c,$3d,$38,$30,$18,$18
.BYTE $18,$18,$18,$1c,$1e
; FRAME 2
.BYTE $00,$00,$00,$1c,$3c,$3f,$60,$5c
.BYTE $3c,$28,$68,$5f,$0f,$20,$3c,$00
.BYTE $38,$2d,$2c,$3d,$38,$30,$1c,$0e
.BYTE $0e,$06,$06,$c6,$63
; FRAME 3
.BYTE $00,$00,$00,$1c,$3c,$3f,$60,$5c
.BYTE $28,$28,$7c,$5f,$0f,$20,$3c,$00
.BYTE $38,$2d,$34,$1d,$0c,$0c,$18,$18
.BYTE $18,$18,$18,$1c,$1e
; FRAME 4
.BYTE $00,$00,$00,$1c,$3c,$3f,$60,$5c
.BYTE $28,$28,$7c,$5f,$0f,$20,$3c,$00
.BYTE $38,$2d,$34,$1d,$0c,$0c,$1c,$38
.BYTE $30,$70,$60,$c6,$63

 

.apl file format version 1

This is the original format which has been superseded by version 2.

The first 4 bytes 0x08 0x55 0x70 0x19 identify the file as version 1.

The following ActionScript code saves the data:

private static function browseForSaveFile ():void
{
printString
(50, 8, "SAVE", true);

fileRef
= new FileReference ();

fileRef
.addEventListener (Event.CANCEL, saveComplete);
fileRef
.addEventListener (Event.COMPLETE, saveComplete);

var data:ByteArray = new ByteArray();

data
.writeInt (FILE_VERSION);
data
.writeInt (frames);
data
.writeInt (height);
data
.writeInt (gap);
data
.writeObject (p0Colour);
data
.writeObject (p1Colour);
data
.writeInt (bgColour);
data
.writeObject (p0Data);
data
.writeObject (p1Data);
data
.writeInt (frame);
data
.writeInt (penColour);
data
.writeInt (anim_rate);

fileRef
.save (data);

inhibitPress
= true;
}

Above p0Colour and p1Colour are single dimensional arrays with 17 elements (maximum number of frames + 1 for the copy buffer); p0Data and p1Data are two dimensional arrays (actually an array of arrays), the first dimension is 17 again, the second dimension is 48 (the maximum height).

The actual data stored in the file will depend on how ActionScript encodes the data.

.apl file format version 2

The version 2 file format supersedes version 1 and removes all reliance on ActionScript encoding.

The first 4 bytes 0x9a 0xf8 0x39 0x21 identify the file as version 2.

0 : 0x9a 0xf8 0x39 0x21 - file version identifier

4 : 0x04 - number of frames

5 : 0x1d - height

6 : 0x00 - gap

7 : 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 - P0 colour, frames 1..16

15 : 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14

23 : 0x14 - P0 colour, copy buffer

24 : 0x28 0x28 0x28 0x28 0x18 0x18 0x18 0x18 - P1 colour, frames 1..16

32 : 0x18 0x18 0x18 0x18 0x18 0x18 0x18 0x18

40 : 0x28 - P1 colour, copy buffer

41 : 0x00 - background colour

42 : 0x00 0x00 0x1c 0x2a 0x5e 0x40 0x9f 0xbc - P0 data, frame 1 (48 bytes)

50 : 0x68 0x7c 0xfc 0xff 0x7f 0x1c 0x00 0x3e

58 : 0x47 0x52 0x53 0x62 0x77 0x3f 0x26 0x24

66 : 0x24 0x24 0x24 0x38 0x3c 0x00 0x00 0x00

74 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

82 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

90 : 0x00 0x00 0x1c 0x2a 0x5e 0x40 0x9f 0xbc - P0 data, frame 2 (48 bytes)

98 : 0x68 0x7c 0xfc 0xff 0x7f 0x1c 0x00 0x3e

106 : 0x47 0x52 0x53 0x62 0x77 0x3f 0x22 0x30

114 : 0x70 0x78 0xf0 0xe6 0x63 0x00 0x00 0x00

122 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

130 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

138 : 0x00 0x00 0x1c 0x2a 0x5e 0x40 0x9f 0xbc - P0 data, frame 3 (48 bytes)

146 : 0x7c 0x7c 0xe8 0xff 0x7f 0x1c 0x00 0x3e

154 : 0x47 0x52 0x4b 0x2a 0x3f 0x3f 0x26 0x24

162 : 0x24 0x24 0x24 0x38 0x3c 0x00 0x00 0x00

170 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

178 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

186 : 0x00 0x00 0x1c 0x2a 0x5e 0x40 0x9f 0xbc - P0 data, frame 4 (48 bytes)

194 : 0x7c 0x7c 0xe8 0xff 0x7f 0x1c 0x00 0x3e

202 : 0x47 0x52 0x4b 0x2a 0x3f 0x3f 0x62 0x46

210 : 0x4e 0x8e 0x96 0xe6 0x63 0x00 0x00 0x00

218 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

226 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

234 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 5 (48 bytes)

242 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

250 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

258 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

266 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

274 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

282 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 6 (48 bytes)

290 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

298 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

306 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

314 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

322 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

330 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 7 (48 bytes)

338 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

346 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

354 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

362 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

370 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

378 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 8 (48 bytes)

386 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

394 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

402 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

410 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

418 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

426 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 9 (48 bytes)

434 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

442 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

450 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

458 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

466 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

474 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 10 (48 bytes)

482 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

490 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

498 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

506 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

514 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

522 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 11 (48 bytes)

530 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

538 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

546 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

554 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

562 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

570 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 12 (48 bytes)

578 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

586 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

594 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

602 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

610 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

618 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 13 (48 bytes)

626 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

634 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

642 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

650 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

658 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

666 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 14 (48 bytes)

674 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

682 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

690 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

698 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

706 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

714 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 15 (48 bytes)

722 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

730 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

738 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

746 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

754 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

762 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P0 data, frame 16 (48 bytes)

770 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

778 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

786 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

794 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

802 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

810 : 0x00 0x00 0x1c 0x2a 0x5e 0x40 0x9f 0xbc - P0 data, copy buffer (48 bytes)

818 : 0x68 0x7c 0xfc 0xff 0x7f 0x1c 0x00 0x3e

826 : 0x47 0x52 0x53 0x62 0x77 0x3f 0x22 0x30

834 : 0x70 0x78 0xf8 0xe6 0x63 0x00 0x00 0x00

842 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

850 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

858 : 0x00 0x00 0x00 0x1c 0x3c 0x3f 0x60 0x5c - P1 data, frame 1 (48 bytes)

866 : 0x3c 0x28 0x68 0x5f 0x0f 0x20 0x3c 0x00

874 : 0x38 0x2d 0x2c 0x3d 0x38 0x30 0x18 0x18

882 : 0x18 0x18 0x18 0x1c 0x1e 0x00 0x00 0x00

890 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

898 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

906 : 0x00 0x00 0x00 0x1c 0x3c 0x3f 0x60 0x5c - P1 data, frame 2 (48 bytes)

914 : 0x3c 0x28 0x68 0x5f 0x0f 0x20 0x3c 0x00

922 : 0x38 0x2d 0x2c 0x3d 0x38 0x30 0x1c 0x0e

930 : 0x0e 0x06 0x06 0xc6 0x63 0x00 0x00 0x00

938 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

946 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

954 : 0x00 0x00 0x00 0x1c 0x3c 0x3f 0x60 0x5c - P1 data, frame 3 (48 bytes)

962 : 0x28 0x28 0x7c 0x5f 0x0f 0x20 0x3c 0x00

970 : 0x38 0x2d 0x34 0x1d 0x0c 0x0c 0x18 0x18

978 : 0x18 0x18 0x18 0x1c 0x1e 0x00 0x00 0x00

986 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

994 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1002 : 0x00 0x00 0x00 0x1c 0x3c 0x3f 0x60 0x5c - P1 data, frame 4 (48 bytes)

1010 : 0x28 0x28 0x7c 0x5f 0x0f 0x20 0x3c 0x00

1018 : 0x38 0x2d 0x34 0x1d 0x0c 0x0c 0x1c 0x38

1026 : 0x30 0x70 0x60 0xc6 0x63 0x00 0x00 0x00

1034 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1042 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1050 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 5 (48 bytes)

1058 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1066 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1074 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1082 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1090 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1098 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 6 (48 bytes)

1106 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1114 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1122 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1130 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1138 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1146 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 7 (48 bytes)

1154 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1162 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1170 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1178 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1186 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1194 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 8 (48 bytes)

1202 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1210 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1218 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1226 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1234 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1242 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 9 (48 bytes)

1250 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1258 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1266 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1274 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1282 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1290 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 10 (48 bytes)

1298 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1306 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1314 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1322 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1330 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1338 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 11 (48 bytes)

1346 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1354 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1362 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1370 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1378 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1386 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 12 (48 bytes)

1394 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1402 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1410 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1418 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1426 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1434 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 13 (48 bytes)

1442 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1450 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1458 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1466 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1474 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1482 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 14 (48 bytes)

1490 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1498 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1506 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1514 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1522 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1530 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 15 (48 bytes)

1538 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1546 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1554 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1562 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1570 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1578 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 - P1 data, frame 16 (48 bytes)

1586 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1594 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1602 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1610 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1618 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1626 : 0x00 0x00 0x00 0x1c 0x3c 0x3f 0x60 0x5c - P1 data, copy buffer (48 bytes)

1634 : 0x3c 0x28 0x68 0x5f 0x0f 0x20 0x3c 0x00

1642 : 0x38 0x2d 0x2c 0x3d 0x38 0x30 0x1c 0x0e

1650 : 0x0e 0x06 0x06 0xc6 0x63 0x00 0x00 0x00

1658 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1666 : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

1674 : 0x01 - selected frame

1675 : 0x03 - pen colour

1676 : 0x04 - animation rate