View Single Post
Old 14 July 2020, 12:37   #43
robinsonb5
Registered User
 
Join Date: Mar 2012
Location: Norfolk, UK
Posts: 1,153
I've been tinkering with this a little this morning - I've picked a couple of busy-looking frames and done a horizontal edge-detect to find the boundaries for blitter fill.

I'm assuming here that we'd want to use a separate buffer for even and odd frames, and would blitter-fill into separate destination buffers, leaving the source unchanged. We can avoid clearing buffers by just overwriting what's changed since two frames previously.

So taking this random pair of frames, two frames apart in the animation, and finding the differences between them, the second one can be encoded as a series of 1637 word writes over the top of the first one. In a horribly inefficient text-based format, in which the first number is the number of words to skip and the second is the literal word to be written, the second frame looks like this:

Code:
02 0001
00 8000
42 0001
00 4000
12 0001
00 8000
27 0000
13 0000
13 0000
00 0000
5c 0000
4e 000c
07 0018
13 0028
13 0024
10 0000
02 0012
09 0000
06 0000
12 0000
00 0000
12 0000
00 0000
11 0000
02 0000
10 0000
02 0000
10 0000
01 0088
00 0000
10 0000
01 0402
00 0000
10 0000
01 4000
00 8000
10 0000
00 8000
01 1000
0c 0140
03 0001
02 0400
0c 0140
03 0002
13 0004
02 0080
00 0000
0f 0004
02 0080
00 0000
0f 0008
02 0040
00 0000
0f 0008
02 0040
00 0000
0f 0010
02 0020
00 0000
0f 0010
02 0010
00 0000
0b 0000
03 0010
02 0008
00 4800
0f 0010
03 0800
0f 0020
03 0400
0f 0020
03 0400
0f 0040
03 0400
0e 0000
00 0080
03 0400
0c 0c00
01 0000
00 0100
03 0400
08 0000
05 0000
00 0200
03 0400
08 0000
05 0000
00 0400
0c 0000
05 0000
00 1000
04 0000
07 0000
05 0000
00 1000
03 0800
00 0000
0d 0000
00 2000
03 0400
00 0000
0d 0000
00 2000
03 0400
00 0000
0d 0000
00 4000
03 0200
00 0000
0d 0000
00 4000
04 0000
09 0900
03 0000
00 8000
03 0040
00 0000
09 0480
03 0000
00 8000
03 0040
00 0000
09 0280
03 0000
00 8000
03 0040
00 0018
00 0000
00 0000
0b 0000
00 8000
03 0040
00 0028
00 0000
00 0000
0b 0000
00 8000
03 0040
00 0050
00 0000
00 0000
00 0000
0a 0000
00 8000
03 0040
00 0060
00 0000
00 0000
0b 0000
00 8000
03 0040
00 00c0
00 0000
00 0000
0b 0001
04 0040
00 0600
00 0000
00 6000
0b 0001
04 0020
00 078c
00 0000
00 a001
00 4000
0a 0000
00 8000
03 0020
00 0480
00 0001
00 2001
00 8000
0a 0000
00 4000
03 0020
00 0500
00 0001
00 4743
00 1800
09 0000
00 000a
00 8000
03 0026
00 5a18
00 0001
00 4746
00 0000
04 0000
04 0000
00 0010
04 002c
00 81c0
00 0001
00 478a
00 000c
04 0000
04 0000
00 0010
04 0038
00 4100
00 0002
00 8792
00 0000
04 0000
04 0000
00 0020
04 0010
00 4800
00 0004
00 8624
00 0090
09 0000
00 0100
04 0010
00 a000
00 0009
00 0350
00 0140
09 0000
00 0400
04 0006
00 4000
00 000a
00 0220
00 0900
09 0000
00 0800
04 0120
00 4000
00 0014
00 0440
00 4400
09 0000
00 1000
04 0120
00 8000
00 0014
00 0880
00 9000
09 0000
00 1000
04 0221
01 0014
00 2202
00 2000
08 0000
01 4000
04 0441
01 0022
00 8989
00 a000
01 3000
06 0000
00 0200
05 0442
01 004a
00 1404
00 6000
06 0004
00 2000
00 0000
00 0400
05 0482
01 0094
00 0080
00 0000
06 0002
00 0400
00 0000
00 1000
05 0482
01 0080
00 1000
00 0000
08 0000
00 2000
05 0881
00 0000
00 0082
01 0000
08 0000
00 2000
05 0881
00 0000
00 0108
00 0000
00 0000
00 0000
07 0000
00 4000
05 1042
00 0000
00 0110
00 0000
00 0050
08 0000
00 8000
05 1642
00 0000
00 0240
00 0000
00 30c0
08 0001
06 0e82
00 0005
00 0480
00 0000
00 3180
00 0000
07 0004
06 0c04
00 0006
00 0900
00 0000
00 5600
00 0000
07 0010
06 3608
00 000c
00 1201
00 81b0
00 8981
00 8000
07 0010
06 2e04
00 1418
00 2404
00 4007
00 0a80
07 0000
00 0020
06 4804
00 4830
00 4809
00 0007
00 0054
07 0000
00 0040
05 0000
00 5004
00 5050
00 50b4
00 00c8
00 4400
00 8000
06 0000
00 0100
05 0000
00 9002
00 a0a0
00 9090
00 0008
00 4725
00 5000
06 0000
00 0800
05 0000
00 9003
00 2221
00 2140
00 0008
00 4880
00 0000
06 0000
00 1000
05 0000
00 a000
00 245c
00 4280
00 0010
00 9340
00 0000
06 0000
00 2000
05 0001
00 2030
00 1a80
00 8600
00 0070
00 a800
00 0000
06 0000
00 4000
05 0001
00 4050
00 3000
00 9400
00 004b
00 9000
00 0000
06 0000
00 8000
05 0001
00 8000
00 0000
00 1000
00 004c
00 2000
00 a000
06 0002
06 0000
00 00a0
00 1400
00 4500
00 0058
00 8000
07 0002
07 00c0
00 2801
00 0500
00 0041
00 0000
00 0000
06 0002
07 0000
00 30a1
01 0040
00 8000
00 0180
06 0002
07 0050
00 6109
00 3000
00 0080
00 2000
00 0180
01 0000
04 0002
07 0110
00 a210
00 8000
00 008d
00 1040
00 3180
01 0000
04 0004
07 0222
00 429a
00 0000
00 0110
00 0440
00 3180
01 0000
04 0004
06 0000
00 0442
00 808c
00 0000
00 0120
00 0000
00 f180
01 0000
04 0008
06 0000
00 0509
00 0414
00 0000
00 0220
00 0000
00 1980
00 0000
00 0000
00 0000
03 0008
06 0000
00 0022
00 0814
00 0000
00 0440
00 0000
00 1980
00 0000
00 0300
00 0000
03 0004
06 0000
00 0042
00 100c
00 0000
00 1080
00 0000
00 6d80
00 0000
00 3000
00 0000
03 0004
06 000c
00 0088
00 100c
00 0000
00 2103
00 0060
00 6880
00 0000
00 2800
00 0000
03 0004
06 0009
00 0110
00 2009
00 0000
00 8412
00 00c0
00 6480
00 0000
00 5000
00 0000
03 0004
06 0009
00 0120
00 4012
00 00c2
00 0842
00 0180
00 5480
00 000c
00 a000
00 0000
03 0004
06 0008
00 8140
00 8074
00 6080
00 2102
00 0300
00 3500
00 018e
00 580a
04 0004
06 0009
00 0180
00 8025
00 8100
00 8801
00 0600
00 2c80
00 0284
00 800a
00 6000
03 0004
06 0005
00 0001
00 0027
02 2a14
00 1c40
00 0c1d
00 0026
00 8000
03 0004
06 0005
00 0002
00 0022
00 2021
00 4000
00 8054
00 1080
00 2836
00 0022
04 0004
06 0005
00 0004
00 0044
00 8080
01 0280
00 1080
00 603c
00 0542
04 0004
06 0003
00 0008
00 004a
00 0100
01 0060
00 1080
00 0044
00 2484
04 0004
06 0003
00 0008
00 0094
00 0400
01 0024
00 4103
00 0048
00 dc08
04 0004
06 0000
00 0010
00 0098
00 1000
01 0014
00 a90a
00 008b
00 1320
00 0000
03 0004
06 0000
00 0010
00 0080
00 2000
01 0011
00 0494
00 0096
00 1640
02 c000
01 0008
06 0000
00 0010
00 0100
00 4000
01 0083
00 48a4
00 0138
00 2c80
00 0000
03 0008
06 0000
00 0013
00 0201
02 0080
00 481a
00 0216
00 8200
00 0000
03 0008
07 0020
00 0804
02 0200
00 502a
00 0409
00 0400
00 0000
03 0008
07 0020
00 1010
02 0400
00 9046
00 08d2
00 0800
00 0300
03 0008
07 0020
00 4040
01 0000
00 206a
00 9086
00 11a8
00 1280
04 0004
07 0024
00 0080
01 0000
00 4231
00 a10f
00 2060
00 2318
00 2800
03 0002
07 0018
00 0100
01 0000
00 9061
00 0109
00 4000
00 3b01
00 2000
03 0004
07 0000
00 0400
00 0000
00 0002
00 4002
00 0104
00 000c
00 201b
04 0010
07 0000
00 0800
00 0000
00 0008
00 80c8
00 6104
00 0531
00 0018
04 0040
07 0000
00 2000
00 0000
00 0021
00 01a0
00 a10e
00 0052
00 0030
03 0000
00 0080
07 0000
00 4000
00 0001
00 4080
00 2208
00 221c
00 0144
00 0420
03 0000
00 0200
07 0000
00 8000
00 0008
00 0000
00 0040
00 1234
00 0290
00 0420
03 0000
00 0400
07 0001
01 0040
00 0008
00 4200
00 1258
00 0040
00 0840
03 0000
00 1000
09 0100
00 0020
00 2430
00 12a8
00 0080
00 8400
03 0000
00 2000
08 0000
00 0211
00 0200
00 2830
00 09d0
00 0208
00 2000
03 0000
00 4000
08 0000
00 0840
00 81c0
00 4861
00 8800
00 0305
00 2000
03 0000
00 8000
07 0000
00 4000
00 2080
00 8040
00 5060
00 8000
00 0100
00 b800
03 0002
09 4001
00 0101
00 1180
00 6060
00 8000
00 0080
00 9000
03 0004
09 4008
00 0b02
00 1110
00 a048
00 8000
00 0880
00 2000
03 0004
09 4040
00 1508
00 0021
00 2048
00 4000
00 4045
00 0400
03 0004
09 2080
00 1980
00 4122
00 2048
00 4000
00 8000
00 a880
03 0004
09 1200
00 0043
00 0099
00 0040
00 0001
01 9000
03 0004
09 1401
00 c000
00 00c9
00 0080
00 0004
05 0008
09 0010
00 c000
00 00d4
00 0400
00 0020
05 0008
09 0021
00 2060
00 00d8
00 1000
00 0100
05 0008
09 0040
00 a000
00 0050
00 4050
00 0800
05 0010
09 0040
00 9000
00 0050
00 8300
00 2000
05 0010
09 0080
00 50c0
00 0050
00 8900
00 4000
05 0020
09 0130
00 3180
00 5086
00 0a01
06 0020
09 0100
00 1980
00 4914
00 0004
06 0040
09 0100
00 0d80
00 0450
00 6020
06 0040
0a 0900
00 08c1
00 8080
06 0080
0a c500
00 1003
00 0200
06 0080
09 0100
00 5500
00 400c
00 0400
06 0080
09 0080
00 1100
00 8048
00 1000
06 0100
09 0080
00 0902
00 0210
00 2000
03 0000
02 0100
09 0080
00 0508
00 0810
00 8000
01 0000
01 0000
02 0200
0a 0340
00 2021
01 0000
00 0000
04 0200
09 0040
00 0200
00 8042
01 0000
00 0000
04 0200
09 0040
00 0401
00 0084
00 0001
00 0200
00 0000
04 0100
09 0040
00 1008
00 0108
00 0002
00 0100
00 0000
01 0060
02 0080
09 0040
00 4020
00 0410
00 0004
00 0080
00 0088
01 0060
02 0040
09 0021
00 0040
00 0840
00 0008
00 0080
00 0204
04 0040
09 0024
00 0040
00 1080
00 0008
00 0080
00 0802
04 0020
09 0000
00 0c20
00 2100
00 0008
00 0080
00 2002
04 0020
09 0000
00 2440
00 4200
00 0008
00 0040
00 2001
04 0020
09 0000
00 8280
00 8200
00 0008
00 0040
00 4000
00 8000
01 0000
01 0010
08 0000
00 0002
00 0481
00 0400
00 0008
00 0020
00 4000
00 8000
01 0000
00 0011
00 0010
08 0000
00 0008
00 04e2
00 0800
00 0004
00 0020
00 4000
00 4000
01 0000
00 0020
00 2010
09 0010
00 0884
00 1000
00 0004
00 0020
00 4000
00 2000
01 0000
00 0040
00 1010
09 0010
00 1090
00 1000
00 0004
00 0020
00 4000
00 2000
01 0000
00 0080
00 0808
09 0014
00 00a0
00 2000
00 0004
00 0040
00 2000
00 2000
01 0000
00 0080
00 0410
09 0000
00 0000
00 8000
00 0008
00 0080
00 0800
00 2000
01 0000
00 0200
00 0410
09 0008
00 0402
01 0008
00 0200
00 0400
00 2000
01 0000
00 0400
00 0410
09 0010
00 0804
01 0010
00 0400
00 0200
00 4000
01 0000
00 0200
00 0408
09 0010
00 1020
01 0010
00 1000
00 0100
00 8000
01 0000
00 0200
00 0404
09 0010
00 4080
01 0008
00 4000
00 0080
00 4000
01 0000
00 0100
00 0404
08 0000
00 0020
00 8200
00 00c0
00 0008
00 8000
00 0100
00 4000
01 0000
00 0080
00 0202
08 0000
00 0022
00 0800
00 0140
00 0022
00 0000
00 0100
00 2000
01 0000
00 0080
00 0102
08 0000
00 0028
00 1000
00 0240
00 0000
00 0000
00 0100
00 1000
01 0000
00 0080
00 0082
08 0000
00 0030
00 4000
00 0280
01 0000
00 0200
00 0800
01 0000
00 0040
00 0101
08 0000
01 8000
02 0000
00 0200
00 0800
01 0000
00 0020
00 0201
07 0000
00 0000
00 0001
00 3000
02 0000
00 0200
00 0400
01 0000
00 0040
00 0800
00 8000
06 0000
00 0028
01 0400
02 0000
00 0400
00 0400
01 0000
00 0080
00 7000
00 4000
06 0000
00 2828
00 0000
00 00b0
02 0000
00 0400
00 0200
01 0000
00 0100
00 2000
00 2000
07 8508
00 0000
00 4410
00 0000
01 0000
00 0400
00 0200
01 0000
00 0200
00 2000
00 1000
07 8010
00 0030
00 800c
00 0000
01 0000
00 0400
00 0100
01 0000
00 0200
00 2000
00 0400
06 0000
00 0810
00 0042
00 4002
00 8000
01 0000
00 0400
00 0080
01 0000
00 0400
00 2000
00 0200
06 0000
00 0220
00 0082
00 2000
02 0000
00 0400
00 0068
01 0000
00 0400
00 2000
00 0100
06 0088
00 0060
00 0084
00 1c00
02 0000
00 0400
00 0068
01 0000
00 0800
00 2000
00 0080
06 0201
00 0000
00 0080
00 a000
02 0000
00 0400
00 0010
01 0000
00 0800
00 1000
00 0040
06 0400
00 4000
00 0080
00 a000
02 0000
00 0200
00 0020
01 0000
00 0800
00 0800
00 0010
06 0800
00 0800
00 0100
00 9000
02 0000
00 0200
00 0040
01 0000
00 0800
00 1000
00 0004
06 0800
01 0100
00 e200
02 0000
00 0200
00 0040
01 0000
00 0800
00 0800
07 1000
00 0040
00 0100
00 fc00
02 0000
00 0100
00 5080
01 0000
00 0800
00 0800
01 0400
04 0000
00 1000
00 0040
00 0200
00 6000
02 0000
00 0100
00 0080
01 0000
00 1001
00 8800
01 00a8
04 0000
00 2000
00 0040
00 0200
03 0000
00 0200
00 0080
01 0000
01 0800
01 0004
04 0000
00 4000
00 0080
00 0200
03 0000
00 0200
00 0100
01 0000
00 8000
00 0800
01 0001
01 0000
00 0000
01 0000
00 8000
00 0080
00 0400
03 0000
00 0200
00 0100
01 0002
00 0000
00 0800
01 0000
00 8000
00 0000
00 1200
00 0000
00 0001
01 0080
00 0400
03 0000
00 0200
00 0100
01 0008
00 0000
00 0800
02 2000
00 0080
01 0002
00 0024
01 0080
00 0400
03 0000
00 0200
00 0080
01 0010
00 0000
00 1000
02 1000
00 0100
00 0008
00 0020
02 0080
00 0400
03 0000
00 0200
00 0040
01 0010
00 0000
00 1000
02 0811
00 0400
00 0001
00 0080
02 0080
00 0400
03 0000
00 0400
00 0010
01 0010
00 0000
00 1000
03 5000
04 0080
00 0400
03 0000
00 0400
00 050d
01 0040
00 0000
00 1000
08 0080
00 0200
03 0000
00 0400
00 0480
00 4000
00 0080
01 2000
08 0080
00 0200
03 0000
00 0800
00 0440
00 8000
00 0080
01 8000
08 0080
00 0200
03 0000
00 0800
00 0410
00 8000
00 0002
01 8000
08 0100
00 0200
03 0000
00 0800
00 0208
00 2000
00 0002
00 0001
09 0100
00 0200
03 0000
00 1000
00 0202
00 1000
00 0006
00 8001
09 0100
00 0200
03 0000
00 1000
00 0201
00 2000
00 0000
00 8001
09 0100
00 0200
03 0000
00 2000
00 0100
01 000c
00 8001
09 0200
00 0100
03 0000
00 2000
00 0100
01 0019
00 0001
09 0200
00 0100
03 0000
00 2000
00 0080
01 0031
00 0001
09 0400
00 0100
03 0000
00 2000
00 0080
01 0062
00 0002
09 0400
00 0100
03 0000
00 2000
00 0080
01 0002
00 0002
09 0800
00 0100
03 0000
00 2000
00 0040
01 0002
00 0002
09 1000
00 0080
03 0000
00 2000
00 0040
01 0001
00 0002
09 1000
00 0080
03 0000
00 2000
00 0020
01 0001
00 0002
09 2000
00 0080
03 0000
00 2000
00 0020
01 0001
00 0004
09 2000
00 0080
03 0000
00 1000
00 0020
01 0001
00 0004
09 2000
00 0080
03 0000
00 0800
00 0020
01 0001
00 0004
09 2000
00 0080
03 0000
00 0080
00 0020
01 0002
00 0004
09 2000
00 0080
04 0040
00 0040
01 0002
00 0004
08 0000
00 2000
00 0080
04 0040
00 1000
01 0002
00 0004
08 0000
00 2000
00 0080
04 0040
00 1000
01 0002
00 0008
08 0000
00 4000
00 0080
04 0040
00 1000
01 0002
00 0008
08 0000
00 4000
00 0080
04 0020
00 0800
01 0004
00 0008
08 0000
00 4000
00 0080
04 0020
00 0800
01 0004
00 0008
08 0000
00 4000
00 0080
04 0020
00 0400
01 0004
00 0004
08 0000
00 4000
00 0080
04 0020
00 0400
01 0004
00 0004
08 0000
00 4000
00 0080
04 0020
00 0400
01 0004
00 0004
08 0000
00 4000
00 0080
04 0020
00 0400
01 0008
00 0002
08 0000
00 4000
00 0100
04 0020
00 0400
01 0008
00 0001
08 0000
00 4000
00 0100
04 0010
00 0200
01 0008
01 8000
07 0000
00 4000
00 0100
04 0010
00 0200
01 0008
01 2000
07 0000
00 8000
00 0100
04 0010
00 0200
01 0008
01 1000
07 0000
00 8000
00 0100
04 0010
00 0200
01 0008
01 1000
07 0000
00 8000
00 0200
04 0010
00 0200
01 0008
00 0000
00 2000
07 0000
00 8000
00 0200
04 0010
00 0200
01 0008
00 0000
00 4000
07 0000
00 8000
00 0200
04 0010
00 0200
01 0008
00 0001
08 0000
00 8000
00 0200
04 0010
00 0200
01 0008
00 0002
08 0000
00 8000
00 0100
04 0010
00 0100
01 0008
00 0004
08 0000
00 8000
00 0100
04 0010
00 0100
01 0008
00 0004
08 0000
00 8000
00 0100
04 0010
00 010c
01 0008
00 9002
08 0000
00 8000
00 0100
04 0010
00 c241
Once encoded more efficiently, and converted to binary, that strikes me as something that will compress pretty well.
Attached Thumbnails
Click image for larger version

Name:	batest.jpg
Views:	236
Size:	34.9 KB
ID:	68136  
robinsonb5 is offline  
 
Page generated in 0.06992 seconds with 12 queries