home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / utilities / utilsd / dithering < prev    next >
ArcFS Archive  |  1995-09-23  |  35.2 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: ArcFS Archive (archive/arcFS).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert ArcFS Archive (archive/arcFS) magic Supported
100% file RISC OS archive (ArcFS format) default
99% file data default
100% TrID Acorn ArcFS Archive default
100% gt2 Kopftext: 'Archive' default (weak)
100% detectItEasy Archive: ArcFS default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 41 72 63 68 69 76 65 00 | b4 00 00 00 54 03 00 00 |Archive.|....T...|
|00000010| 28 00 00 00 64 00 00 00 | 00 00 00 00 00 00 00 00 |(...d...|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000060| 82 21 48 65 6c 70 00 00 | 00 00 00 00 97 00 00 00 |.!Help..|........|
|00000070| 45 ff ff ff bd ac ee 24 | 03 00 aa 42 97 00 00 00 |E......$|...B....|
|00000080| 24 00 00 00 82 43 44 42 | 6f 78 5f 47 65 6e 00 00 |$....CDB|ox_Gen..|
|00000090| d1 31 00 00 45 fb ff ff | 0e 8d ee 24 03 00 b4 ed |.1..E...|...$....|
|000000a0| d1 31 00 00 df 00 00 00 | 82 43 44 42 6f 78 5f 48 |.1......|.CDBox_H|
|000000b0| 53 56 74 00 cb 1c 00 00 | 45 fb ff ff 81 90 ee 24 |SVt.....|E......$|
|000000c0| 03 00 2b f1 cb 1c 00 00 | d4 32 00 00 82 54 65 73 |..+.....|.2...Tes|
|000000d0| 74 44 69 74 68 65 72 00 | 9e 39 00 00 45 fb ff ff |tDither.|.9..E...|
|000000e0| d7 93 ee 24 03 00 35 39 | 9e 39 00 00 c3 4f 00 00 |...$..59|.9...O..|
|000000f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000100| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000120| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000130| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000140| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000200| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000210| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000220| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000230| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000240| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000250| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000260| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000270| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000280| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000290| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000002a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000002b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000002c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000002d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000002e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000002f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000300| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000310| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000320| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000330| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000340| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000350| 00 00 00 00 46 69 6c 65 | 44 61 74 61 82 21 48 65 |....File|Data.!He|
|00000360| 6c 70 00 00 00 00 00 00 | 97 00 00 00 45 ff ff ff |lp......|....E...|
|00000370| bd ac ee 24 03 00 aa 42 | 50 44 20 70 72 6f 67 72 |...$...B|PD progr|
|00000380| 61 6d 73 20 74 6f 20 64 | 65 6d 6f 6e 73 74 72 61 |ams to d|emonstra|
|00000390| 74 65 20 63 6f 6c 6f 75 | 72 20 73 65 6c 65 63 74 |te colou|r select|
|000003a0| 6f 72 73 20 66 72 6f 6d | 20 42 41 53 49 43 20 61 |ors from| BASIC a|
|000003b0| 6e 64 20 64 69 74 68 65 | 72 69 6e 67 0a 0a 43 79 |nd dithe|ring..Cy|
|000003c0| 20 42 6f 6f 6b 65 72 0a | 38 36 20 43 68 75 72 63 | Booker.|86 Churc|
|000003d0| 68 20 56 69 65 77 0a 4d | 61 69 6e 20 52 6f 61 64 |h View.M|ain Road|
|000003e0| 0a 43 72 6f 63 6b 65 6e | 68 69 6c 6c 0a 53 77 61 |.Crocken|hill.Swa|
|000003f0| 6e 6c 65 79 0a 4b 65 6e | 74 0a 42 52 38 20 38 4a |nley.Ken|t.BR8 8J|
|00000400| 57 0a 55 4b 0a 0a 30 38 | 2e 30 32 2e 39 34 0a 46 |W.UK..08|.02.94.F|
|00000410| 69 6c 65 44 61 74 61 82 | 43 44 42 6f 78 5f 47 65 |ileData.|CDBox_Ge|
|00000420| 6e 00 00 d1 31 00 00 46 | fd ff ff f0 6b d4 55 03 |n...1..F|....k.U.|
|00000430| 00 b4 ed 0d 00 01 10 f4 | 20 3e 43 44 42 6f 78 5f |........| >CDBox_|
|00000440| 47 65 6e 0d 00 02 11 f4 | 20 3a 20 43 79 20 42 6f |Gen.....| : Cy Bo|
|00000450| 6f 6b 65 72 0d 00 03 16 | f4 20 3a 20 38 36 20 43 |oker....|. : 86 C|
|00000460| 68 75 72 63 68 20 56 69 | 65 77 0d 00 04 11 f4 20 |hurch Vi|ew..... |
|00000470| 3a 20 4d 61 69 6e 20 52 | 6f 61 64 0d 00 05 13 f4 |: Main R|oad.....|
|00000480| 20 3a 20 43 72 6f 63 6b | 65 6e 68 69 6c 6c 0d 00 | : Crock|enhill..|
|00000490| 06 0f f4 20 3a 20 53 77 | 61 6e 6c 65 79 0d 00 07 |... : Sw|anley...|
|000004a0| 0c f4 20 3a 20 4b 65 6e | 74 0d 00 08 10 f4 20 3a |.. : Ken|t..... :|
|000004b0| 20 42 52 38 20 38 20 4a | 57 0d 00 09 35 f4 20 20 | BR8 8 J|W...5. |
|000004c0| 20 20 20 74 68 69 73 20 | 66 69 6c 65 20 63 6f 6e | this |file con|
|000004d0| 74 61 69 6e 73 20 63 6f | 64 65 20 74 6f 20 64 6f |tains co|de to do|
|000004e0| 20 74 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 0d 00 | the fol|lowing..|
|000004f0| 0a 44 f4 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.D. | |
|00000500| 31 2e 20 47 65 6e 65 72 | 61 74 65 20 65 78 74 65 |1. Gener|ate exte|
|00000510| 72 6e 61 6c 20 66 69 6c | 65 20 66 6f 72 20 64 69 |rnal fil|e for di|
|00000520| 74 68 65 72 20 6c 6f 6f | 6b 20 75 70 20 74 61 62 |ther loo|k up tab|
|00000530| 6c 65 0d 00 0b 57 f4 20 | 20 20 20 20 20 20 20 20 |le...W. | |
|00000540| 20 20 20 20 32 2e 20 43 | 6f 6d 70 72 65 73 73 20 | 2. C|ompress |
|00000550| 74 68 69 73 20 66 69 6c | 65 20 69 6e 74 6f 20 61 |this fil|e into a|
|00000560| 20 66 6f 72 6d 20 74 68 | 61 74 20 63 61 6e 20 62 | form th|at can b|
|00000570| 65 20 75 73 65 64 20 62 | 79 20 43 6f 6c 6f 75 72 |e used b|y Colour|
|00000580| 44 42 6f 78 20 63 6f 64 | 65 0d 00 0c 51 f4 20 20 |DBox cod|e...Q. |
|00000590| 20 20 20 20 20 20 20 20 | 20 20 20 33 2e 20 54 65 | | 3. Te|
|000005a0| 73 74 73 20 61 20 42 41 | 53 49 43 20 6d 75 6c 74 |sts a BA|SIC mult|
|000005b0| 69 2d 74 61 73 6b 69 6e | 67 20 52 47 42 20 63 75 |i-taskin|g RGB cu|
|000005c0| 62 65 20 73 6c 69 63 65 | 20 75 73 69 6e 67 20 43 |be slice| using C|
|000005d0| 6f 6c 6f 75 72 54 72 61 | 6e 73 0d 00 0d 49 f4 20 |olourTra|ns...I. |
|000005e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 34 2e 20 54 | | 4. T|
|000005f0| 65 73 74 73 20 61 20 42 | 41 53 49 43 20 6d 75 6c |ests a B|ASIC mul|
|00000600| 74 69 2d 74 61 73 6b 69 | 6e 67 20 52 47 42 20 63 |ti-taski|ng RGB c|
|00000610| 75 62 65 20 73 6c 69 63 | 65 20 75 73 69 6e 67 20 |ube slic|e using |
|00000620| 4c 55 54 0d 00 0e 0e f4 | 20 20 20 20 20 4e 4f 54 |LUT.....| NOT|
|00000630| 45 0d 00 0f 4c f4 20 20 | 20 20 20 20 20 20 20 20 |E...L. | |
|00000640| 20 20 20 63 75 72 72 65 | 6e 74 20 63 6f 6c 6f 75 | curre|nt colou|
|00000650| 72 64 62 6f 78 20 63 6f | 64 65 20 63 61 6e 20 6f |rdbox co|de can o|
|00000660| 6e 6c 79 20 68 61 6e 64 | 6c 65 20 6e 62 69 74 73 |nly hand|le nbits|
|00000670| 20 69 6e 20 7b 34 2c 20 | 35 2c 20 36 7d 0d 00 10 | in {4, |5, 6}...|
|00000680| 34 f4 20 20 20 20 20 20 | 20 20 20 20 20 20 20 28 |4. | (|
|00000690| 69 66 20 6e 62 69 74 73 | 20 3d 20 37 20 74 68 65 |if nbits| = 7 the|
|000006a0| 6e 20 6e 65 65 64 20 6f | 76 65 72 20 34 4d 62 21 |n need o|ver 4Mb!|
|000006b0| 29 0d 00 11 05 f4 0d 00 | 12 3d f4 20 57 68 65 6e |).......|.=. When|
|000006c0| 20 72 75 6e 2c 20 64 6f | 65 73 20 64 65 6d 6f 20 | run, do|es demo |
|000006d0| 6f 66 20 6d 75 6c 74 69 | 2d 74 61 73 6b 69 6e 67 |of multi|-tasking|
|000006e0| 20 72 67 62 20 63 75 62 | 65 20 75 73 69 6e 67 20 | rgb cub|e using |
|000006f0| 6c 75 74 0d 00 13 05 f4 | 0d 00 14 48 f4 20 54 68 |lut.....|...H. Th|
|00000700| 69 73 20 66 69 6c 65 20 | 61 6c 73 6f 20 63 6f 6e |is file |also con|
|00000710| 74 61 69 6e 73 20 63 6f | 64 65 20 74 6f 20 67 65 |tains co|de to ge|
|00000720| 6e 65 72 61 74 65 20 61 | 20 6c 75 74 20 66 6f 72 |nerate a| lut for|
|00000730| 20 64 69 74 68 65 72 20 | 70 61 74 74 65 72 6e 73 | dither |patterns|
|00000740| 0d 00 15 48 f4 20 69 6e | 20 34 62 70 70 20 6d 6f |...H. in| 4bpp mo|
|00000750| 64 65 73 20 66 6f 72 20 | 28 63 75 72 72 65 6e 74 |des for |(current|
|00000760| 6c 79 29 20 74 68 65 20 | 63 75 72 72 65 6e 74 20 |ly) the |current |
|00000770| 70 61 6c 65 74 74 65 20 | 28 69 65 20 74 68 65 20 |palette |(ie the |
|00000780| 73 74 61 6e 64 61 72 64 | 0d 00 16 14 f4 20 77 69 |standard|..... wi|
|00000790| 6d 70 20 70 61 6c 65 74 | 74 65 29 2e 0d 00 17 44 |mp palet|te)....D|
|000007a0| f4 20 54 68 65 20 77 61 | 79 20 74 68 69 73 20 69 |. The wa|y this i|
|000007b0| 73 20 64 6f 6e 65 20 69 | 73 20 74 6f 20 75 73 65 |s done i|s to use|
|000007c0| 20 74 68 65 20 76 64 75 | 20 76 61 72 69 61 62 6c | the vdu| variabl|
|000007d0| 65 20 47 63 6f 6c 4f 72 | 61 45 6f 72 41 64 64 72 |e GcolOr|aEorAddr|
|000007e0| 0d 00 18 49 f4 20 77 68 | 69 63 68 20 63 6f 6e 74 |...I. wh|ich cont|
|000007f0| 61 69 6e 73 20 36 34 20 | 62 79 74 65 73 20 6f 66 |ains 64 |bytes of|
|00000800| 20 72 61 77 20 73 63 72 | 65 65 6e 20 64 61 74 61 | raw scr|een data|
|00000810| 20 73 65 74 20 75 70 20 | 61 73 20 61 6e 20 65 63 | set up |as an ec|
|00000820| 66 20 70 61 74 74 65 72 | 6e 0d 00 19 1f f4 20 77 |f patter|n..... w|
|00000830| 68 65 6e 20 43 6f 6c 6f | 75 72 54 72 61 6e 73 5f |hen Colo|urTrans_|
|00000840| 53 65 74 47 43 4f 4c 2e | 0d 00 1a 4c f4 20 74 68 |SetGCOL.|...L. th|
|00000850| 65 20 50 52 4d 20 67 69 | 76 65 73 20 76 65 72 79 |e PRM gi|ves very|
|00000860| 20 70 6f 6f 72 20 64 6f | 63 75 6d 65 6e 74 61 74 | poor do|cumentat|
|00000870| 69 6f 6e 20 61 62 6f 75 | 74 20 74 68 69 73 2c 20 |ion abou|t this, |
|00000880| 62 75 74 20 49 74 20 73 | 65 65 6d 73 20 6d 79 20 |but It s|eems my |
|00000890| 63 6f 64 65 0d 00 1b 48 | f4 20 74 6f 20 65 78 74 |code...H|. to ext|
|000008a0| 72 61 63 74 20 74 68 65 | 20 34 20 28 78 34 62 69 |ract the| 4 (x4bi|
|000008b0| 74 29 20 63 6f 6c 6f 75 | 72 20 6e 75 6d 62 65 72 |t) colou|r number|
|000008c0| 73 20 75 73 65 64 20 69 | 6e 20 74 68 65 20 64 69 |s used i|n the di|
|000008d0| 74 68 65 72 20 70 61 74 | 74 65 72 6e 0d 00 1c 0b |ther pat|tern....|
|000008e0| f4 20 77 6f 72 6b 73 0d | 00 1d 3a f4 20 4f 62 76 |. works.|..:. Obv|
|000008f0| 69 6f 75 73 6c 79 20 63 | 61 6e 27 74 20 64 6f 20 |iously c|an't do |
|00000900| 38 2d 62 69 74 20 63 6f | 6c 6f 75 72 2c 20 73 6f |8-bit co|lour, so|
|00000910| 20 75 73 65 20 34 2d 62 | 69 74 20 63 6f 6c 6f 75 | use 4-b|it colou|
|00000920| 72 0d 00 1e 2e f4 20 20 | 20 20 20 20 20 20 20 20 |r..... | |
|00000930| 20 20 20 3d 20 30 2c 20 | 26 31 31 2c 20 26 32 32 | = 0, |&11, &22|
|00000940| 2c 20 2e 2e 2e 2c 20 26 | 65 65 2c 20 26 66 66 0d |, ..., &|ee, &ff.|
|00000950| 00 1f 0e f4 20 6f 72 20 | 35 2d 62 69 74 0d 00 20 |.... or |5-bit.. |
|00000960| 3e f4 20 20 20 20 20 20 | 20 20 20 20 20 20 20 3d |>. | =|
|00000970| 20 26 30 30 2c 20 26 30 | 38 2c 20 26 31 30 2c 20 | &00, &0|8, &10, |
|00000980| 2e 2e 2c 20 26 37 62 2c | 20 26 38 34 2c 20 2e 2e |.., &7b,| &84, ..|
|00000990| 2e 2c 20 26 66 37 2c 20 | 26 66 66 0d 00 21 2d f4 |., &f7, |&ff..!-.|
|000009a0| 20 57 65 20 74 68 65 6e | 20 74 72 79 20 61 6e 64 | We then| try and|
|000009b0| 20 63 6f 6d 70 61 63 74 | 20 74 68 69 73 20 74 61 | compact| this ta|
|000009c0| 62 6c 65 20 64 6f 77 6e | 0d 00 22 4d f4 20 43 75 |ble down|.."M. Cu|
|000009d0| 72 72 65 6e 74 6c 79 20 | 77 65 20 64 6f 20 74 68 |rrently |we do th|
|000009e0| 69 73 20 62 79 20 6f 62 | 73 65 72 76 69 6e 67 20 |is by ob|serving |
|000009f0| 74 68 61 74 20 6d 61 6e | 79 20 4d 41 4e 59 20 64 |that man|y MANY d|
|00000a00| 69 74 68 65 72 20 70 61 | 74 74 65 72 6e 73 20 72 |ither pa|tterns r|
|00000a10| 65 70 65 61 74 0d 00 23 | 48 f4 20 64 75 65 20 74 |epeat..#|H. due t|
|00000a20| 6f 20 74 68 65 20 6c 69 | 6d 69 74 65 64 20 6e 75 |o the li|mited nu|
|00000a30| 6d 62 65 72 20 6f 66 20 | 63 6f 6c 6f 75 72 73 20 |mber of |colours |
|00000a40| 69 6e 20 61 20 70 61 6c | 65 74 74 65 2e 20 20 49 |in a pal|ette. I|
|00000a50| 6e 20 66 61 63 74 2c 20 | 74 68 65 72 65 0d 00 24 |n fact, |there..$|
|00000a60| 4c f4 20 69 73 20 75 73 | 75 61 6c 6c 79 20 6c 65 |L. is us|ually le|
|00000a70| 73 73 20 74 68 61 6e 20 | 31 30 32 34 20 64 69 66 |ss than |1024 dif|
|00000a80| 66 65 72 65 6e 74 20 70 | 61 74 74 65 72 6e 73 20 |ferent p|atterns |
|00000a90| 67 65 6e 65 72 61 74 65 | 64 2c 20 61 6e 64 20 73 |generate|d, and s|
|00000aa0| 6f 20 69 6e 73 74 65 61 | 64 0d 00 25 4a f4 20 6f |o instea|d..%J. o|
|00000ab0| 66 20 73 74 6f 72 69 6e | 67 20 74 68 65 20 31 36 |f storin|g the 16|
|00000ac0| 2d 62 69 74 73 20 66 6f | 72 20 65 61 63 68 20 65 |-bits fo|r each e|
|00000ad0| 6c 65 6d 65 6e 74 2c 20 | 77 65 20 73 74 6f 72 65 |lement, |we store|
|00000ae0| 20 6f 6e 6c 79 20 28 73 | 61 79 29 20 31 30 20 62 | only (s|ay) 10 b|
|00000af0| 69 74 73 0d 00 26 4c f4 | 20 61 6e 64 20 75 73 65 |its..&L.| and use|
|00000b00| 20 74 68 69 73 20 61 73 | 20 61 6e 20 6f 66 66 73 | this as| an offs|
|00000b10| 65 74 20 69 6e 74 6f 20 | 61 6e 20 61 63 74 75 61 |et into |an actua|
|00000b20| 6c 20 31 36 2d 62 69 74 | 20 74 61 62 6c 65 20 6f |l 16-bit| table o|
|00000b30| 66 20 61 63 74 75 61 6c | 20 64 69 74 68 65 72 0d |f actual| dither.|
|00000b40| 00 27 0f f4 20 70 61 74 | 74 65 72 6e 73 2e 0d 00 |.'.. pat|terns...|
|00000b50| 28 05 f4 0d 00 29 2b f4 | 20 48 6f 77 20 74 6f 20 |(....)+.| How to |
|00000b60| 65 78 74 65 6e 64 20 74 | 68 69 73 20 74 6f 20 38 |extend t|his to 8|
|00000b70| 62 70 70 20 61 6e 64 20 | 31 36 62 70 70 3f 0d 00 |bpp and |16bpp?..|
|00000b80| 2a 4a f4 20 57 65 6c 6c | 20 38 62 70 70 20 77 6f |*J. Well| 8bpp wo|
|00000b90| 75 6c 64 20 72 65 71 75 | 69 72 65 20 33 32 20 62 |uld requ|ire 32 b|
|00000ba0| 69 74 73 20 28 32 78 32 | 20 70 69 78 65 6c 73 29 |its (2x2| pixels)|
|00000bb0| 20 69 6e 20 74 68 65 20 | 61 6e 63 69 6c 6c 61 72 | in the |ancillar|
|00000bc0| 79 20 61 72 72 61 79 2c | 0d 00 2b 4c f4 20 61 6e |y array,|..+L. an|
|00000bd0| 64 20 61 20 62 74 72 65 | 65 20 74 6f 20 73 74 6f |d a btre|e to sto|
|00000be0| 72 65 20 74 68 65 20 64 | 69 66 66 65 72 65 6e 74 |re the d|ifferent|
|00000bf0| 20 70 61 74 74 65 72 6e | 73 2e 20 20 41 63 74 75 | pattern|s. Actu|
|00000c00| 61 6c 6c 79 2c 20 49 20 | 77 6f 75 6c 64 20 61 73 |ally, I |would as|
|00000c10| 73 75 6d 65 0d 00 2c 4d | f4 20 74 68 61 74 20 69 |sume..,M|. that i|
|00000c20| 6e 73 74 65 61 64 20 6f | 66 20 73 74 6f 72 69 6e |nstead o|f storin|
|00000c30| 67 20 61 73 20 74 6c 2e | 74 72 2e 62 6c 2e 62 72 |g as tl.|tr.bl.br|
|00000c40| 20 77 65 20 73 74 6f 72 | 65 20 61 73 20 74 6c 3a | we stor|e as tl:|
|00000c50| 74 6c 5e 74 72 2e 74 6c | 5e 62 6c 2e 74 6c 5e 62 |tl^tr.tl|^bl.tl^b|
|00000c60| 72 0d 00 2d 4d f4 20 28 | 69 65 20 38 20 62 69 74 |r..-M. (|ie 8 bit|
|00000c70| 73 20 2b 20 61 75 78 20 | 69 6e 64 65 78 29 20 77 |s + aux |index) w|
|00000c80| 65 20 6d 61 79 20 77 65 | 6c 6c 20 72 65 64 75 63 |e may we|ll reduc|
|00000c90| 65 20 74 68 65 20 74 61 | 62 6c 65 20 63 6f 6e 73 |e the ta|ble cons|
|00000ca0| 69 64 65 72 61 62 6c 79 | 2e 20 20 54 68 65 0d 00 |iderably|. The..|
|00000cb0| 2e 49 f4 20 72 65 61 73 | 6f 6e 20 66 6f 72 20 74 |.I. reas|on for t|
|00000cc0| 68 69 73 20 69 73 20 74 | 68 61 74 20 74 68 65 20 |his is t|hat the |
|00000cd0| 74 6f 70 20 36 20 62 69 | 74 73 20 6f 66 20 74 68 |top 6 bi|ts of th|
|00000ce0| 65 20 63 6f 6c 6f 75 72 | 20 6e 75 6d 62 65 72 20 |e colour| number |
|00000cf0| 61 72 65 20 74 68 65 0d | 00 2f 48 f4 20 74 6f 70 |are the.|./H. top|
|00000d00| 20 36 20 62 69 74 73 20 | 6f 66 20 61 20 63 6f 6c | 6 bits |of a col|
|00000d10| 6f 75 72 2c 20 61 6e 64 | 20 74 68 65 73 65 20 77 |our, and| these w|
|00000d20| 6f 75 6c 20 76 65 72 79 | 20 72 61 72 65 6c 79 20 |oul very| rarely |
|00000d30| 63 68 61 6e 67 65 20 62 | 79 20 6d 75 63 68 2e 0d |change b|y much..|
|00000d40| 00 30 3c f4 20 4e 6f 74 | 65 20 74 68 61 74 20 74 |.0<. Not|e that t|
|00000d50| 68 69 73 20 64 6f 65 73 | 6e 27 74 20 77 6f 72 6b |his does|n't work|
|00000d60| 20 66 6f 72 20 34 62 70 | 70 2c 20 62 65 63 61 75 | for 4bp|p, becau|
|00000d70| 73 65 20 49 20 74 72 69 | 65 64 21 0d 00 31 05 f4 |se I tri|ed!..1..|
|00000d80| 0d 00 32 4c f4 20 46 6f | 72 20 31 36 62 70 70 2c |..2L. Fo|r 16bpp,|
|00000d90| 20 77 65 6c 6c 20 69 74 | 20 70 72 6f 62 61 62 6c | well it| probabl|
|00000da0| 79 20 69 73 6e 27 74 20 | 77 6f 72 74 68 20 69 74 |y isn't |worth it|
|00000db0| 20 61 73 20 49 20 61 73 | 73 75 6d 65 20 74 68 65 | as I as|sume the|
|00000dc0| 20 63 6f 6c 6f 75 72 74 | 72 61 6e 73 0d 00 33 2c | colourt|rans..3,|
|00000dd0| f4 20 72 6f 75 74 69 6e | 65 20 69 73 20 76 65 72 |. routin|e is ver|
|00000de0| 79 20 66 61 73 74 2c 20 | 6a 75 73 74 20 73 6f 6d |y fast, |just som|
|00000df0| 65 20 73 68 69 66 74 73 | 0d 00 34 05 f4 0d 00 35 |e shifts|..4....5|
|00000e00| 05 3a 0d 00 36 0e 44 65 | 62 75 67 25 20 3d 20 b9 |.:..6.De|bug% = .|
|00000e10| 0d 00 37 12 ee 20 85 3a | ee 20 85 20 87 3a f2 45 |..7.. .:|. . .:.E|
|00000e20| 3a e0 0d 00 38 05 3a 0d | 00 39 31 46 69 6c 65 50 |:...8.:.|.91FileP|
|00000e30| 72 65 66 69 78 55 6e 63 | 6f 6d 70 72 65 73 73 65 |refixUnc|ompresse|
|00000e40| 64 24 20 3d 20 22 3c 64 | 3e 2e 54 6d 70 2e 63 6f |d$ = "<d|>.Tmp.co|
|00000e50| 6c 6f 75 72 6c 75 74 22 | 0d 00 3a 2b 46 69 6c 65 |lourlut"|..:+File|
|00000e60| 50 72 65 66 69 78 43 6f | 6d 70 72 65 73 73 65 64 |PrefixCo|mpressed|
|00000e70| 24 20 20 20 3d 20 22 3c | 64 3e 2e 54 6d 70 2e 6c |$ = "<|d>.Tmp.l|
|00000e80| 75 74 22 0d 00 3b 30 46 | 69 6c 65 50 72 65 66 69 |ut"..;0F|ilePrefi|
|00000e90| 78 53 74 61 74 69 73 74 | 69 63 73 24 20 20 20 3d |xStatist|ics$ =|
|00000ea0| 20 22 3c 64 3e 2e 54 6d | 70 2e 6c 75 74 73 74 61 | "<d>.Tm|p.lutsta|
|00000eb0| 74 73 22 0d 00 3c 1a f2 | 5f 54 65 73 74 43 75 62 |ts"..<..|_TestCub|
|00000ec0| 65 5f 43 6f 6c 6f 75 72 | 54 72 61 6e 73 0d 00 3d |e_Colour|Trans..=|
|00000ed0| 24 f4 50 52 4f 43 5f 43 | 72 65 61 74 65 5f 55 6e |$.PROC_C|reate_Un|
|00000ee0| 63 6f 6d 70 72 65 73 73 | 65 64 5f 4c 55 54 28 35 |compress|ed_LUT(5|
|00000ef0| 29 0d 00 3e 19 f4 50 52 | 4f 43 5f 43 6f 6d 70 72 |)..>..PR|OC_Compr|
|00000f00| 65 73 73 5f 4c 55 54 28 | 35 29 0d 00 3f 19 f4 50 |ess_LUT(|5)..?..P|
|00000f10| 52 4f 43 5f 54 65 73 74 | 43 75 62 65 5f 4c 55 54 |ROC_Test|Cube_LUT|
|00000f20| 28 35 29 0d 00 40 05 e0 | 0d 00 41 05 3a 0d 00 42 |(5)..@..|..A.:..B|
|00000f30| 1c dd 20 f2 5f 54 65 73 | 74 43 75 62 65 5f 43 6f |.. ._Tes|tCube_Co|
|00000f40| 6c 6f 75 72 54 72 61 6e | 73 0d 00 43 29 20 20 f4 |lourTran|s..C) .|
|00000f50| 20 75 73 65 73 20 63 6f | 6c 6f 75 72 74 72 61 6e | uses co|lourtran|
|00000f60| 73 20 74 6f 20 67 65 6e | 65 72 61 74 65 20 63 75 |s to gen|erate cu|
|00000f70| 62 65 0d 00 44 12 20 20 | 4e 43 65 6c 6c 73 25 20 |be..D. |NCells% |
|00000f80| 3d 20 31 33 0d 00 45 17 | 20 20 de 20 4d 61 70 58 |= 13..E.| . MapX|
|00000f90| 59 5a 54 6f 52 47 42 25 | 28 32 29 0d 00 46 17 20 |YZToRGB%|(2)..F. |
|00000fa0| 20 de 20 4d 61 70 52 47 | 42 54 6f 58 59 5a 25 28 | . MapRG|BToXYZ%(|
|00000fb0| 32 29 0d 00 47 19 20 20 | de 20 4d 61 70 58 59 5a |2)..G. |. MapXYZ|
|00000fc0| 54 6f 53 68 69 66 74 25 | 28 32 29 0d 00 48 1e 20 |ToShift%|(2)..H. |
|00000fd0| 20 54 6f 44 6f 25 20 3d | 20 a4 6d 61 6c 6c 6f 63 | ToDo% =| .malloc|
|00000fe0| 28 36 34 2a 36 34 2b 31 | 29 0d 00 49 4a 20 20 42 |(64*64+1|)..IJ B|
|00000ff0| 25 20 3d 20 a4 6d 61 6c | 6c 6f 63 28 36 34 29 20 |% = .mal|loc(64) |
|00001000| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001010| 20 20 20 20 20 20 20 20 | 20 20 20 20 3a f4 20 47 | | :. G|
|00001020| 63 6f 6c 4f 72 61 45 6f | 72 41 64 64 72 20 31 2d |colOraEo|rAddr 1-|
|00001030| 37 30 35 0d 00 4a 1c 20 | 20 de 20 43 65 6c 6c 73 |705..J. | . Cells|
|00001040| 25 28 4e 43 65 6c 6c 73 | 25 2d 31 2c 20 31 29 0d |%(NCells|%-1, 1).|
|00001050| 00 4b 11 20 20 c8 91 20 | 35 31 32 2c 20 35 31 32 |.K. .. |512, 512|
|00001060| 0d 00 4c 16 20 20 f2 63 | 74 5f 6f 72 69 65 6e 74 |..L. .c|t_orient|
|00001070| 61 74 65 28 32 29 0d 00 | 4d 0c 20 20 5a 25 20 3d |ate(2)..|M. Z% =|
|00001080| 20 30 0d 00 4e 07 20 20 | 87 0d 00 4f 1a 20 20 c8 | 0..N. |...O. .|
|00001090| 97 20 c8 93 20 33 30 30 | 2c 20 30 2c 20 30 2c 20 |. .. 300|, 0, 0, |
|000010a0| 35 31 36 0d 00 50 07 20 | 20 f5 0d 00 51 15 20 20 |516..P. | ...Q. |
|000010b0| 20 20 c8 97 20 78 25 2c | 20 79 25 2c 20 62 25 0d | .. x%,| y%, b%.|
|000010c0| 00 52 35 20 20 20 20 e7 | 20 62 25 20 80 20 26 34 |.R5 .| b% . &4|
|000010d0| 34 34 20 8c 20 f2 63 74 | 5f 6f 72 69 65 6e 74 61 |44 . .ct|_orienta|
|000010e0| 74 65 28 4f 72 69 65 6e | 74 61 74 69 6f 6e 25 20 |te(Orien|tation% |
|000010f0| 2b 20 32 29 0d 00 53 35 | 20 20 20 20 e7 20 62 25 |+ 2)..S5| . b%|
|00001100| 20 80 20 26 31 31 31 20 | 8c 20 f2 63 74 5f 6f 72 | . &111 |. .ct_or|
|00001110| 69 65 6e 74 61 74 65 28 | 4f 72 69 65 6e 74 61 74 |ientate(|Orientat|
|00001120| 69 6f 6e 25 20 82 20 31 | 29 0d 00 54 23 20 20 20 |ion% . 1|)..T# |
|00001130| 20 7a 25 20 3d 20 28 79 | 25 20 2a 20 26 66 66 20 | z% = (y|% * &ff |
|00001140| 2f 20 35 31 32 29 20 2b | 20 30 2e 35 0d 00 55 1a |/ 512) +| 0.5..U.|
|00001150| 20 20 20 20 7a 25 20 3d | 20 a4 6d 69 6e 28 26 66 | z% =| .min(&f|
|00001160| 66 2c 20 7a 25 29 0d 00 | 56 24 20 20 20 20 5a 25 |f, z%)..|V$ Z%|
|00001170| 20 3d 20 7a 25 20 3c 3c | 20 4d 61 70 58 59 5a 54 | = z% <<| MapXYZT|
|00001180| 6f 53 68 69 66 74 25 28 | 32 29 0d 00 57 13 20 20 |oShift%(|2)..W. |
|00001190| 20 20 e7 20 5a 25 3c 3e | 6f 5a 25 20 8c 0d 00 58 | . Z%<>|oZ% ...X|
|000011a0| 12 20 20 20 20 20 20 6f | 5a 25 20 3d 20 5a 25 0d |. o|Z% = Z%.|
|000011b0| 00 59 13 20 20 20 20 20 | 20 f2 72 65 64 6f 28 33 |.Y. | .redo(3|
|000011c0| 32 29 0d 00 5a 3e 20 20 | 20 20 20 20 f1 20 8a 31 |2)..Z> | . .1|
|000011d0| 2c 20 38 29 3b 20 c0 22 | 5a 3d 20 22 2b 20 c3 28 |, 8); ."|Z= "+ .(|
|000011e0| 7a 25 2a 31 30 30 2f 26 | 66 66 29 2b 20 22 25 22 |z%*100/&|ff)+ "%"|
|000011f0| 2b 20 c4 31 30 2c 20 22 | 20 22 29 2c 20 31 30 29 |+ .10, "| "), 10)|
|00001200| 0d 00 5b 09 20 20 20 20 | cd 0d 00 5c 2f 20 20 20 |..[. |...\/ |
|00001210| 20 e7 20 4e 54 6f 44 6f | 25 3d 30 20 80 20 53 74 | . NToDo|%=0 . St|
|00001220| 65 70 25 3e 34 20 8c 20 | f2 72 65 64 6f 28 53 74 |ep%>4 . |.redo(St|
|00001230| 65 70 25 20 81 20 32 29 | 0d 00 5d 22 20 20 20 20 |ep% . 2)|..]" |
|00001240| 6e 25 20 3d 20 a4 6d 69 | 6e 28 4e 54 6f 44 6f 25 |n% = .mi|n(NToDo%|
|00001250| 2c 20 4e 43 65 6c 6c 73 | 25 29 0d 00 5e 0a 20 20 |, NCells|%)..^. |
|00001260| 20 20 c8 96 0d 00 5f 11 | 20 20 20 20 c8 95 20 6e | ...._.| .. n|
|00001270| 25 20 3e 20 30 0d 00 60 | 23 20 20 20 20 20 20 6f |% > 0..`|# o|
|00001280| 25 20 3d 20 54 6f 44 6f | 25 20 2b 20 b3 28 53 69 |% = ToDo|% + .(Si|
|00001290| 7a 65 25 29 20 2d 20 31 | 0d 00 61 18 20 20 20 20 |ze%) - 1|..a. |
|000012a0| 20 20 c8 95 20 3f 6f 25 | 3a 6f 25 2b 3d 31 3a ce | .. ?o%|:o%+=1:.|
|000012b0| 0d 00 62 2d 20 20 20 20 | 20 20 e7 20 6f 25 3d 45 |..b- | . o%=E|
|000012c0| 6e 64 25 20 8c 20 6f 25 | 3d 54 6f 44 6f 25 3a c8 |nd% . o%|=ToDo%:.|
|000012d0| 95 20 3f 6f 25 3a 6f 25 | 2b 3d 31 3a ce 0d 00 63 |. ?o%:o%|+=1:...c|
|000012e0| 40 20 20 20 20 20 20 e7 | 20 6f 25 3e 3d 45 6e 64 |@ .| o%>=End|
|000012f0| 25 20 8c 20 85 20 31 2c | 20 22 42 61 64 20 4e 54 |% . . 1,| "Bad NT|
|00001300| 6f 44 6f 20 22 2b 20 c3 | 28 4e 54 6f 44 6f 25 29 |oDo "+ .|(NToDo%)|
|00001310| 2b 20 22 2c 20 22 2b 20 | c3 28 6e 25 29 0d 00 64 |+ ", "+ |.(n%)..d|
|00001320| 11 20 20 20 20 20 20 3f | 6f 25 20 3d 20 31 0d 00 |. ?|o% = 1..|
|00001330| 65 15 20 20 20 20 20 20 | 6f 25 20 2d 3d 20 54 6f |e. |o% -= To|
|00001340| 44 6f 25 0d 00 66 25 20 | 20 20 20 20 20 78 25 20 |Do%..f% | x% |
|00001350| 3d 20 28 6f 25 20 83 20 | 4c 65 6e 67 74 68 25 29 |= (o% . |Length%)|
|00001360| 20 2a 20 53 74 65 70 25 | 0d 00 67 25 20 20 20 20 | * Step%|..g% |
|00001370| 20 20 79 25 20 3d 20 28 | 6f 25 20 81 20 4c 65 6e | y% = (|o% . Len|
|00001380| 67 74 68 25 29 20 2a 20 | 53 74 65 70 25 0d 00 68 |gth%) * |Step%..h|
|00001390| 2d 20 20 20 20 20 20 58 | 25 20 3d 20 28 78 25 20 |- X|% = (x% |
|000013a0| 2b 20 48 25 29 20 3c 3c | 20 4d 61 70 58 59 5a 54 |+ H%) <<| MapXYZT|
|000013b0| 6f 53 68 69 66 74 25 28 | 30 29 0d 00 69 2d 20 20 |oShift%(|0)..i- |
|000013c0| 20 20 20 20 59 25 20 3d | 20 28 79 25 20 2b 20 48 | Y% =| (y% + H|
|000013d0| 25 29 20 3c 3c 20 4d 61 | 70 58 59 5a 54 6f 53 68 |%) << Ma|pXYZToSh|
|000013e0| 69 66 74 25 28 31 29 0d | 00 6a 3b 20 20 20 20 20 |ift%(1).|.j; |
|000013f0| 20 c8 99 20 22 43 6f 6c | 6f 75 72 54 72 61 6e 73 | .. "Col|ourTrans|
|00001400| 5f 53 65 74 47 43 4f 4c | 22 2c 20 5a 25 20 84 20 |_SetGCOL|", Z% . |
|00001410| 59 25 20 84 20 58 25 2c | 2c 2c 20 26 31 30 30 2c |Y% . X%,|,, &100,|
|00001420| 20 30 0d 00 6b 1f 20 20 | 20 20 20 20 c8 93 20 c8 | 0..k. | .. .|
|00001430| 90 20 78 25 2c 20 79 25 | 2c 20 53 74 65 70 25 2d |. x%, y%|, Step%-|
|00001440| 31 0d 00 6c 15 20 20 20 | 20 20 20 4e 54 6f 44 6f |1..l. | NToDo|
|00001450| 25 20 2d 3d 20 31 0d 00 | 6d 11 20 20 20 20 20 20 |% -= 1..|m. |
|00001460| 6e 25 20 2d 3d 20 31 0d | 00 6e 09 20 20 20 20 ce |n% -= 1.|.n. .|
|00001470| 0d 00 6f 09 20 20 fd 20 | a3 0d 00 70 05 e1 0d 00 |..o. . |...p....|
|00001480| 71 05 3a 0d 00 72 17 dd | 20 f2 63 74 5f 6f 72 69 |q.:..r..| .ct_ori|
|00001490| 65 6e 74 61 74 65 28 6f | 25 29 0d 00 73 12 ea 20 |entate(o|%)..s.. |
|000014a0| 7a 25 2c 20 69 25 2c 20 | 73 24 28 29 0d 00 74 10 |z%, i%, |s$()..t.|
|000014b0| 20 20 de 20 73 24 28 32 | 2c 20 31 29 0d 00 75 3b | . s$(2|, 1)..u;|
|000014c0| 20 20 73 24 28 29 20 3d | 20 22 58 3d 20 22 2c 20 | s$() =| "X= ", |
|000014d0| 22 52 65 64 20 20 22 2c | 20 22 59 3d 20 22 2c 20 |"Red ",| "Y= ", |
|000014e0| 22 47 72 65 65 6e 22 2c | 20 22 5a 3d 20 22 2c 20 |"Green",| "Z= ", |
|000014f0| 22 42 6c 75 65 20 22 0d | 00 76 23 20 20 4f 72 69 |"Blue ".|.v# Ori|
|00001500| 65 6e 74 61 74 69 6f 6e | 25 20 3d 20 a4 6d 6f 64 |entation|% = .mod|
|00001510| 75 6c 6f 28 6f 25 2c 20 | 36 29 0d 00 77 12 20 20 |ulo(o%, |6)..w. |
|00001520| 7a 25 20 3d 20 6f 25 20 | 3e 3e 20 31 0d 00 78 22 |z% = o% |>> 1..x"|
|00001530| 20 20 e7 20 6f 25 20 80 | 20 31 20 8c 20 64 25 20 | . o% .| 1 . d% |
|00001540| 3d 20 2b 31 20 8b 20 64 | 25 20 3d 20 2d 31 0d 00 |= +1 . d|% = -1..|
|00001550| 79 11 20 20 e3 20 69 25 | 3d 20 30 20 b8 20 32 0d |y. . i%|= 0 . 2.|
|00001560| 00 7a 35 20 20 20 20 4d | 61 70 58 59 5a 54 6f 52 |.z5 M|apXYZToR|
|00001570| 47 42 25 28 69 25 29 20 | 3d 20 a4 6d 6f 64 75 6c |GB%(i%) |= .modul|
|00001580| 6f 28 7a 25 20 2b 20 28 | 32 2d 69 25 29 2a 64 25 |o(z% + (|2-i%)*d%|
|00001590| 2c 20 33 29 0d 00 7b 2b | 20 20 20 20 4d 61 70 52 |, 3)..{+| MapR|
|000015a0| 47 42 54 6f 58 59 5a 25 | 28 4d 61 70 58 59 5a 54 |GBToXYZ%|(MapXYZT|
|000015b0| 6f 52 47 42 25 28 69 25 | 29 29 20 3d 20 69 25 0d |oRGB%(i%|)) = i%.|
|000015c0| 00 7c 37 20 20 20 20 4d | 61 70 58 59 5a 54 6f 53 |.|7 M|apXYZToS|
|000015d0| 68 69 66 74 25 28 69 25 | 29 20 3d 20 28 4d 61 70 |hift%(i%|) = (Map|
|000015e0| 58 59 5a 54 6f 52 47 42 | 25 28 69 25 29 20 2a 20 |XYZToRGB|%(i%) * |
|000015f0| 38 29 20 2b 20 38 0d 00 | 7d 37 20 20 20 20 f1 20 |8) + 8..|}7 . |
|00001600| 8a 31 2c 20 69 25 2b 31 | 29 3b 20 73 24 28 69 25 |.1, i%+1|); s$(i%|
|00001610| 2c 20 30 29 3b 20 73 24 | 28 4d 61 70 58 59 5a 54 |, 0); s$|(MapXYZT|
|00001620| 6f 52 47 42 25 28 69 25 | 29 2c 20 31 29 0d 00 7e |oRGB%(i%|), 1)..~|
|00001630| 0a 20 20 ed 20 69 25 0d | 00 7f 0f 20 20 f2 72 65 |. . i%.|... .re|
|00001640| 64 6f 28 33 32 29 0d 00 | 80 0e 20 20 6f 5a 25 20 |do(32)..|.. oZ% |
|00001650| 3d 20 2d 31 0d 00 81 05 | e1 0d 00 82 05 3a 0d 00 |= -1....|.....:..|
|00001660| 83 51 f4 20 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.Q. ****|********|
|00001670| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001680| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001690| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000016a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 0d |********|*******.|
|000016b0| 00 84 51 f4 20 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |..Q. ***|********|
|000016c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000016d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000016e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000016f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001700| 0d 00 85 51 f4 20 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |...Q. **|********|
|00001710| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001720| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001730| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001740| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001750| 2a 0d 00 86 05 3a 0d 00 | 87 1c dd 20 f2 5f 54 65 |*....:..|... ._Te|
|00001760| 73 74 43 75 62 65 5f 4c | 55 54 28 6e 62 69 74 73 |stCube_L|UT(nbits|
|00001770| 25 29 0d 00 88 44 20 20 | f4 20 75 73 65 73 20 6c |%)...D |. uses l|
|00001780| 75 74 20 6f 66 20 6e 62 | 69 74 73 20 73 69 7a 65 |ut of nb|its size|
|00001790| 20 74 6f 20 73 68 6f 77 | 20 6d 75 6c 74 69 2d 74 | to show| multi-t|
|000017a0| 61 73 6b 69 6e 67 20 63 | 75 62 65 20 67 65 6e 65 |asking c|ube gene|
|000017b0| 72 61 74 69 6f 6e 0d 00 | 89 12 20 20 4e 43 65 6c |ration..|.. NCel|
|000017c0| 6c 73 25 20 3d 20 31 33 | 0d 00 8a 3d 20 20 4e 25 |ls% = 13|...= N%|
|000017d0| 20 3d 20 38 20 2d 20 6e | 62 69 74 73 25 20 20 20 | = 8 - n|bits% |
|000017e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000017f0| 20 20 20 20 3a f4 20 23 | 62 69 74 73 20 6e 6f 74 | :. #|bits not|
|00001800| 20 75 73 65 64 0d 00 8b | 3f 20 20 6c 75 74 20 3d | used...|? lut =|
|00001810| 20 a4 5f 6c 6f 61 64 5f | 66 69 6c 65 28 46 69 6c | ._load_|file(Fil|
|00001820| 65 50 72 65 66 69 78 43 | 6f 6d 70 72 65 73 73 65 |ePrefixC|ompresse|
|00001830| 64 24 2b 20 c3 28 6e 62 | 69 74 73 25 29 2c 20 26 |d$+ .(nb|its%), &|
|00001840| 66 66 64 29 0d 00 8c 25 | 20 20 e7 20 6c 75 74 3d |ffd)...%| . lut=|
|00001850| 30 20 8c 20 85 20 31 2c | 20 22 43 61 6e 27 74 20 |0 . . 1,| "Can't |
|00001860| 6c 6f 61 64 20 6c 75 74 | 22 0d 00 8d 17 20 20 de |load lut|".... .|
|00001870| 20 4d 61 70 58 59 5a 54 | 6f 52 47 42 25 28 32 29 | MapXYZT|oRGB%(2)|
|00001880| 0d 00 8e 17 20 20 de 20 | 4d 61 70 52 47 42 54 6f |.... . |MapRGBTo|
|00001890| 58 59 5a 25 28 32 29 0d | 00 8f 19 20 20 de 20 4d |XYZ%(2).|... . M|
|000018a0| 61 70 58 59 5a 54 6f 53 | 68 69 66 74 25 28 32 29 |apXYZToS|hift%(2)|
|000018b0| 0d 00 90 17 20 20 41 72 | 72 61 79 25 20 3d 20 6c |.... Ar|ray% = l|
|000018c0| 75 74 20 2b 20 31 32 0d | 00 91 1a 20 20 54 61 62 |ut + 12.|... Tab|
|000018d0| 6c 65 25 20 3d 20 6c 75 | 74 20 2b 20 6c 75 74 21 |le% = lu|t + lut!|
|000018e0| 30 0d 00 92 14 20 20 4e | 42 69 74 73 25 20 3d 20 |0.... N|Bits% = |
|000018f0| 6c 75 74 21 34 0d 00 93 | 20 20 20 4d 61 73 6b 25 |lut!4...| Mask%|
|00001900| 20 20 3d 20 28 31 20 3c | 3c 20 4e 42 69 74 73 25 | = (1 <|< NBits%|
|00001910| 29 20 2d 20 31 0d 00 94 | 1e 20 20 54 6f 44 6f 25 |) - 1...|. ToDo%|
|00001920| 20 3d 20 a4 6d 61 6c 6c | 6f 63 28 36 34 2a 36 34 | = .mall|oc(64*64|
|00001930| 2b 31 29 0d 00 95 4a 20 | 20 42 25 20 3d 20 a4 6d |+1)...J | B% = .m|
|00001940| 61 6c 6c 6f 63 28 36 34 | 29 20 20 20 20 20 20 20 |alloc(64|) |
|00001950| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001960| 20 20 20 20 20 20 3a f4 | 20 47 63 6f 6c 4f 72 61 | :.| GcolOra|
|00001970| 45 6f 72 41 64 64 72 20 | 31 2d 37 30 35 0d 00 96 |EorAddr |1-705...|
|00001980| 1c 20 20 de 20 43 65 6c | 6c 73 25 28 4e 43 65 6c |. . Cel|ls%(NCel|
|00001990| 6c 73 25 2d 31 2c 20 31 | 29 0d 00 97 11 20 20 c8 |ls%-1, 1|).... .|
|000019a0| 91 20 35 31 32 2c 20 35 | 31 32 0d 00 98 13 20 20 |. 512, 5|12.... |
|000019b0| f2 6f 72 69 65 6e 74 61 | 74 65 28 32 29 0d 00 99 |.orienta|te(2)...|
|000019c0| 0c 20 20 5a 25 20 3d 20 | 30 0d 00 9a 07 20 20 87 |. Z% = |0.... .|
|000019d0| 0d 00 9b 1a 20 20 c8 97 | 20 c8 93 20 33 30 30 2c |.... ..| .. 300,|
|000019e0| 20 30 2c 20 30 2c 20 35 | 31 36 0d 00 9c 07 20 20 | 0, 0, 5|16.... |
|000019f0| f5 0d 00 9d 15 20 20 20 | 20 c8 97 20 78 25 2c 20 |..... | .. x%, |
|00001a00| 79 25 2c 20 62 25 0d 00 | 9e 32 20 20 20 20 e7 20 |y%, b%..|.2 . |
|00001a10| 62 25 20 80 20 26 34 34 | 34 20 8c 20 f2 6f 72 69 |b% . &44|4 . .ori|
|00001a20| 65 6e 74 61 74 65 28 4f | 72 69 65 6e 74 61 74 69 |entate(O|rientati|
|00001a30| 6f 6e 25 20 2b 20 32 29 | 0d 00 9f 32 20 20 20 20 |on% + 2)|...2 |
|00001a40| e7 20 62 25 20 80 20 26 | 31 31 31 20 8c 20 f2 6f |. b% . &|111 . .o|
|00001a50| 72 69 65 6e 74 61 74 65 | 28 4f 72 69 65 6e 74 61 |rientate|(Orienta|
|00001a60| 74 69 6f 6e 25 20 82 20 | 31 29 0d 00 a0 23 20 20 |tion% . |1)...# |
|00001a70| 20 20 7a 25 20 3d 20 28 | 79 25 20 2a 20 26 66 66 | z% = (|y% * &ff|
|00001a80| 20 2f 20 35 31 32 29 20 | 2b 20 30 2e 35 0d 00 a1 | / 512) |+ 0.5...|
|00001a90| 1a 20 20 20 20 7a 25 20 | 3d 20 a4 6d 69 6e 28 26 |. z% |= .min(&|
|00001aa0| 66 66 2c 20 7a 25 29 0d | 00 a2 2c 20 20 20 20 5a |ff, z%).|.., Z|
|00001ab0| 25 20 3d 20 28 7a 25 20 | 3e 3e 20 4e 25 29 20 3c |% = (z% |>> N%) <|
|00001ac0| 3c 20 4d 61 70 58 59 5a | 54 6f 53 68 69 66 74 25 |< MapXYZ|ToShift%|
|00001ad0| 28 32 29 0d 00 a3 13 20 | 20 20 20 e7 20 5a 25 3c |(2).... | . Z%<|
|00001ae0| 3e 6f 5a 25 20 8c 0d 00 | a4 12 20 20 20 20 20 20 |>oZ% ...|.. |
|00001af0| 6f 5a 25 20 3d 20 5a 25 | 0d 00 a5 13 20 20 20 20 |oZ% = Z%|.... |
|00001b00| 20 20 f2 72 65 64 6f 28 | 33 32 29 0d 00 a6 3e 20 | .redo(|32)...> |
|00001b10| 20 20 20 20 20 f1 20 8a | 31 2c 20 38 29 3b 20 c0 | . .|1, 8); .|
|00001b20| 22 5a 3d 20 22 2b 20 c3 | 28 7a 25 2a 31 30 30 2f |"Z= "+ .|(z%*100/|
|00001b30| 26 66 66 29 2b 20 22 25 | 22 2b 20 c4 31 30 2c 20 |&ff)+ "%|"+ .10, |
|00001b40| 22 20 22 29 2c 20 31 30 | 29 0d 00 a7 09 20 20 20 |" "), 10|).... |
|00001b50| 20 cd 0d 00 a8 2f 20 20 | 20 20 e7 20 4e 54 6f 44 | ..../ | . NToD|
|00001b60| 6f 25 3d 30 20 80 20 53 | 74 65 70 25 3e 34 20 8c |o%=0 . S|tep%>4 .|
|00001b70| 20 f2 72 65 64 6f 28 53 | 74 65 70 25 20 81 20 32 | .redo(S|tep% . 2|
|00001b80| 29 0d 00 a9 22 20 20 20 | 20 6e 25 20 3d 20 a4 6d |)..." | n% = .m|
|00001b90| 69 6e 28 4e 54 6f 44 6f | 25 2c 20 4e 43 65 6c 6c |in(NToDo|%, NCell|
|00001ba0| 73 25 29 0d 00 aa 0a 20 | 20 20 20 c8 96 0d 00 ab |s%).... | .....|
|00001bb0| 11 20 20 20 20 c8 95 20 | 6e 25 20 3e 20 30 0d 00 |. .. |n% > 0..|
|00001bc0| ac 23 20 20 20 20 20 20 | 6f 25 20 3d 20 54 6f 44 |.# |o% = ToD|
|00001bd0| 6f 25 20 2b 20 b3 28 53 | 69 7a 65 25 29 20 2d 20 |o% + .(S|ize%) - |
|00001be0| 31 0d 00 ad 18 20 20 20 | 20 20 20 c8 95 20 3f 6f |1.... | .. ?o|
|00001bf0| 25 3a 6f 25 2b 3d 31 3a | ce 0d 00 ae 2d 20 20 20 |%:o%+=1:|....- |
|00001c00| 20 20 20 e7 20 6f 25 3d | 45 6e 64 25 20 8c 20 6f | . o%=|End% . o|
|00001c10| 25 3d 54 6f 44 6f 25 3a | c8 95 20 3f 6f 25 3a 6f |%=ToDo%:|.. ?o%:o|
|00001c20| 25 2b 3d 31 3a ce 0d 00 | af 40 20 20 20 20 20 20 |%+=1:...|.@ |
|00001c30| e7 20 6f 25 3e 3d 45 6e | 64 25 20 8c 20 85 20 31 |. o%>=En|d% . . 1|
|00001c40| 2c 20 22 42 61 64 20 4e | 54 6f 44 6f 20 22 2b 20 |, "Bad N|ToDo "+ |
|00001c50| c3 28 4e 54 6f 44 6f 25 | 29 2b 20 22 2c 20 22 2b |.(NToDo%|)+ ", "+|
|00001c60| 20 c3 28 6e 25 29 0d 00 | b0 11 20 20 20 20 20 20 | .(n%)..|.. |
|00001c70| 3f 6f 25 20 3d 20 31 0d | 00 b1 15 20 20 20 20 20 |?o% = 1.|... |
|00001c80| 20 6f 25 20 2d 3d 20 54 | 6f 44 6f 25 0d 00 b2 25 | o% -= T|oDo%...%|
|00001c90| 20 20 20 20 20 20 78 25 | 20 3d 20 28 6f 25 20 83 | x%| = (o% .|
|00001ca0| 20 4c 65 6e 67 74 68 25 | 29 20 2a 20 53 74 65 70 | Length%|) * Step|
|00001cb0| 25 0d 00 b3 25 20 20 20 | 20 20 20 79 25 20 3d 20 |%...% | y% = |
|00001cc0| 28 6f 25 20 81 20 4c 65 | 6e 67 74 68 25 29 20 2a |(o% . Le|ngth%) *|
|00001cd0| 20 53 74 65 70 25 0d 00 | b4 35 20 20 20 20 20 20 | Step%..|.5 |
|00001ce0| 58 25 20 3d 20 28 28 78 | 25 20 2b 20 48 25 29 20 |X% = ((x|% + H%) |
|00001cf0| 3e 3e 20 4e 25 29 20 3c | 3c 20 4d 61 70 58 59 5a |>> N%) <|< MapXYZ|
|00001d00| 54 6f 53 68 69 66 74 25 | 28 30 29 0d 00 b5 35 20 |ToShift%|(0)...5 |
|00001d10| 20 20 20 20 20 59 25 20 | 3d 20 28 28 79 25 20 2b | Y% |= ((y% +|
|00001d20| 20 48 25 29 20 3e 3e 20 | 4e 25 29 20 3c 3c 20 4d | H%) >> |N%) << M|
|00001d30| 61 70 58 59 5a 54 6f 53 | 68 69 66 74 25 28 31 29 |apXYZToS|hift%(1)|
|00001d40| 0d 00 b6 26 20 20 20 20 | 20 20 62 25 20 3d 20 28 |...& | b% = (|
|00001d50| 58 25 20 84 20 59 25 20 | 84 20 5a 25 29 20 2a 20 |X% . Y% |. Z%) * |
|00001d60| 4e 42 69 74 73 25 0d 00 | b7 37 20 20 20 20 20 20 |NBits%..|.7 |
|00001d70| 69 25 20 3d 20 28 28 41 | 72 72 61 79 25 21 28 62 |i% = ((A|rray%!(b|
|00001d80| 25 20 3e 3e 20 33 29 29 | 20 3e 3e 20 28 62 25 20 |% >> 3))| >> (b% |
|00001d90| 80 20 37 29 29 20 80 20 | 4d 61 73 6b 25 0d 00 b8 |. 7)) . |Mask%...|
|00001da0| 3c 20 20 20 20 20 20 77 | 25 20 3d 20 54 61 62 6c |< w|% = Tabl|
|00001db0| 65 25 21 28 69 25 2a 32 | 29 20 20 20 20 20 20 20 |e%!(i%*2|) |
|00001dc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001dd0| 20 3a f4 20 26 63 64 61 | 62 0d 00 b9 30 20 20 20 | :. &cda|b...0 |
|00001de0| 20 20 20 6f 25 20 3d 20 | 28 77 25 20 80 20 26 46 | o% = |(w% . &F|
|00001df0| 46 29 20 2a 20 26 30 31 | 30 31 30 31 20 84 20 28 |F) * &01|0101 . (|
|00001e00| 77 25 20 3c 3c 20 32 34 | 29 0d 00 ba 3e 20 20 20 |w% << 24|)...> |
|00001e10| 20 20 20 65 25 20 3d 20 | 28 28 77 25 20 3e 3e 20 | e% = |((w% >> |
|00001e20| 38 29 20 80 20 26 46 46 | 29 20 2a 20 26 30 31 30 |8) . &FF|) * &010|
|00001e30| 31 30 31 20 84 20 28 28 | 77 25 20 3e 3e 20 38 29 |101 . ((|w% >> 8)|
|00001e40| 20 3c 3c 20 32 34 29 0d | 00 bb 1a 20 20 20 20 20 | << 24).|... |
|00001e50| 20 e3 20 69 25 3d 20 30 | 20 b8 20 36 33 20 88 20 | . i%= 0| . 63 . |
|00001e60| 38 0d 00 bc 16 20 20 20 | 20 20 20 20 20 42 25 21 |8.... | B%!|
|00001e70| 69 25 20 3d 20 6f 25 0d | 00 bd 1a 20 20 20 20 20 |i% = o%.|... |
|00001e80| 20 20 20 42 25 21 28 69 | 25 2b 34 29 20 3d 20 65 | B%!(i|%+4) = e|
|00001e90| 25 0d 00 be 0e 20 20 20 | 20 20 20 ed 20 69 25 0d |%.... | . i%.|
|00001ea0| 00 bf 24 20 20 20 20 20 | 20 c8 99 20 22 4f 53 5f |..$ | .. "OS_|
|00001eb0| 53 65 74 43 6f 6c 6f 75 | 72 22 2c 20 26 32 30 2c |SetColou|r", &20,|
|00001ec0| 20 42 25 0d 00 c0 1f 20 | 20 20 20 20 20 c8 93 20 | B%.... | .. |
|00001ed0| c8 90 20 78 25 2c 20 79 | 25 2c 20 53 74 65 70 25 |.. x%, y|%, Step%|
|00001ee0| 2d 31 0d 00 c1 15 20 20 | 20 20 20 20 4e 54 6f 44 |-1.... | NToD|
|00001ef0| 6f 25 20 2d 3d 20 31 0d | 00 c2 11 20 20 20 20 20 |o% -= 1.|... |
|00001f00| 20 6e 25 20 2d 3d 20 31 | 0d 00 c3 09 20 20 20 20 | n% -= 1|.... |
|00001f10| ce 0d 00 c4 09 20 20 fd | 20 a3 0d 00 c5 05 e1 0d |..... .| .......|
|00001f20| 00 c6 05 3a 0d 00 c7 14 | dd 20 f2 6f 72 69 65 6e |...:....|. .orien|
|00001f30| 74 61 74 65 28 6f 25 29 | 0d 00 c8 12 ea 20 7a 25 |tate(o%)|..... z%|
|00001f40| 2c 20 69 25 2c 20 73 24 | 28 29 0d 00 c9 10 20 20 |, i%, s$|().... |
|00001f50| de 20 73 24 28 32 2c 20 | 31 29 0d 00 ca 3b 20 20 |. s$(2, |1)...; |
|00001f60| 73 24 28 29 20 3d 20 22 | 58 3d 20 22 2c 20 22 52 |s$() = "|X= ", "R|
|00001f70| 65 64 20 20 22 2c 20 22 | 59 3d 20 22 2c 20 22 47 |ed ", "|Y= ", "G|
|00001f80| 72 65 65 6e 22 2c 20 22 | 5a 3d 20 22 2c 20 22 42 |reen", "|Z= ", "B|
|00001f90| 6c 75 65 20 22 0d 00 cb | 23 20 20 4f 72 69 65 6e |lue "...|# Orien|
|00001fa0| 74 61 74 69 6f 6e 25 20 | 3d 20 a4 6d 6f 64 75 6c |tation% |= .modul|
|00001fb0| 6f 28 6f 25 2c 20 36 29 | 0d 00 cc 12 20 20 7a 25 |o(o%, 6)|.... z%|
|00001fc0| 20 3d 20 6f 25 20 3e 3e | 20 31 0d 00 cd 22 20 20 | = o% >>| 1..." |
|00001fd0| e7 20 6f 25 20 80 20 31 | 20 8c 20 64 25 20 3d 20 |. o% . 1| . d% = |
|00001fe0| 2b 31 20 8b 20 64 25 20 | 3d 20 2d 31 0d 00 ce 11 |+1 . d% |= -1....|
|00001ff0| 20 20 e3 20 69 25 3d 20 | 30 20 b8 20 32 0d 00 cf | . i%= |0 . 2...|
|00002000| 35 20 20 20 20 4d 61 70 | 58 59 5a 54 6f 52 47 42 |5 Map|XYZToRGB|
|00002010| 25 28 69 25 29 20 3d 20 | a4 6d 6f 64 75 6c 6f 28 |%(i%) = |.modulo(|
|00002020| 7a 25 20 2b 20 28 32 2d | 69 25 29 2a 64 25 2c 20 |z% + (2-|i%)*d%, |
|00002030| 33 29 0d 00 d0 2b 20 20 | 20 20 4d 61 70 52 47 42 |3)...+ | MapRGB|
|00002040| 54 6f 58 59 5a 25 28 4d | 61 70 58 59 5a 54 6f 52 |ToXYZ%(M|apXYZToR|
|00002050| 47 42 25 28 69 25 29 29 | 20 3d 20 69 25 0d 00 d1 |GB%(i%))| = i%...|
|00002060| 36 20 20 20 20 4d 61 70 | 58 59 5a 54 6f 53 68 69 |6 Map|XYZToShi|
|00002070| 66 74 25 28 69 25 29 20 | 3d 20 4d 61 70 58 59 5a |ft%(i%) |= MapXYZ|
|00002080| 54 6f 52 47 42 25 28 69 | 25 29 20 2a 20 6e 62 69 |ToRGB%(i|%) * nbi|
|00002090| 74 73 25 0d 00 d2 37 20 | 20 20 20 f1 20 8a 31 2c |ts%...7 | . .1,|
|000020a0| 20 69 25 2b 31 29 3b 20 | 73 24 28 69 25 2c 20 30 | i%+1); |s$(i%, 0|
|000020b0| 29 3b 20 73 24 28 4d 61 | 70 58 59 5a 54 6f 52 47 |); s$(Ma|pXYZToRG|
|000020c0| 42 25 28 69 25 29 2c 20 | 31 29 0d 00 d3 0a 20 20 |B%(i%), |1).... |
|000020d0| ed 20 69 25 0d 00 d4 0f | 20 20 f2 72 65 64 6f 28 |. i%....| .redo(|
|000020e0| 33 32 29 0d 00 d5 0e 20 | 20 6f 5a 25 20 3d 20 2d |32).... | oZ% = -|
|000020f0| 31 0d 00 d6 05 e1 0d 00 | d7 05 3a 0d 00 d8 0f dd |1.......|..:.....|
|00002100| 20 f2 72 65 64 6f 28 73 | 25 29 0d 00 d9 10 20 20 | .redo(s|%).... |
|00002110| 53 74 65 70 25 20 3d 20 | 73 25 0d 00 da 14 20 20 |Step% = |s%.... |
|00002120| 48 25 20 3d 20 53 74 65 | 70 25 20 2f 20 32 0d 00 |H% = Ste|p% / 2..|
|00002130| db 1b 20 20 4c 65 6e 67 | 74 68 25 20 3d 20 32 35 |.. Leng|th% = 25|
|00002140| 36 20 2f 20 53 74 65 70 | 25 0d 00 dc 1f 20 20 53 |6 / Step|%.... S|
|00002150| 69 7a 65 25 20 3d 20 4c | 65 6e 67 74 68 25 20 2a |ize% = L|ength% *|
|00002160| 20 4c 65 6e 67 74 68 25 | 0d 00 dd 16 20 20 4e 54 | Length%|.... NT|
|00002170| 6f 44 6f 25 20 3d 20 53 | 69 7a 65 25 20 20 0d 00 |oDo% = S|ize% ..|
|00002180| de 20 20 20 f2 6d 65 6d | 73 65 74 28 54 6f 44 6f |. .mem|set(ToDo|
|00002190| 25 2c 20 30 2c 20 53 69 | 7a 65 25 2b 31 29 0d 00 |%, 0, Si|ze%+1)..|
|000021a0| df 1a 20 20 45 6e 64 25 | 20 3d 20 54 6f 44 6f 25 |.. End%| = ToDo%|
|000021b0| 20 2b 20 53 69 7a 65 25 | 0d 00 e0 05 e1 0d 00 e1 | + Size%|........|
|000021c0| 05 3a 0d 00 e2 51 f4 20 | 2a 2a 2a 2a 2a 2a 2a 2a |.:...Q. |********|
|000021d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000021e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000021f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002200| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002210| 2a 2a 2a 0d 00 e3 51 f4 | 20 2a 2a 2a 2a 2a 2a 2a |***...Q.| *******|
|00002220| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002230| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002240| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002250| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002260| 2a 2a 2a 2a 0d 00 e4 51 | f4 20 2a 2a 2a 2a 2a 2a |****...Q|. ******|
|00002270| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002280| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002290| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000022a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000022b0| 2a 2a 2a 2a 2a 0d 00 e5 | 05 3a 0d 00 e6 1c dd 20 |*****...|.:..... |
|000022c0| f2 5f 43 6f 6d 70 72 65 | 73 73 5f 4c 55 54 28 6e |._Compre|ss_LUT(n|
|000022d0| 62 69 74 73 25 29 0d 00 | e7 20 20 20 f4 20 63 72 |bits%)..|. . cr|
|000022e0| 65 61 74 65 73 20 61 20 | 66 69 6c 65 20 6f 66 20 |eates a |file of |
|000022f0| 66 6f 72 6d 61 74 0d 00 | e8 37 20 20 f4 20 20 20 |format..|.7 . |
|00002300| 2b 30 20 3d 20 6f 66 66 | 73 65 74 20 74 6f 20 61 |+0 = off|set to a|
|00002310| 75 78 69 6c 6c 61 72 79 | 20 74 61 62 6c 65 20 28 |uxillary| table (|
|00002320| 77 6f 72 64 2d 61 6c 69 | 67 6e 65 64 29 0d 00 e9 |word-ali|gned)...|
|00002330| 45 20 20 f4 20 20 20 2b | 34 20 3d 20 6e 75 6d 62 |E . +|4 = numb|
|00002340| 65 72 20 6f 66 20 62 69 | 74 73 20 75 73 65 64 20 |er of bi|ts used |
|00002350| 66 6f 72 20 65 61 63 68 | 20 65 6c 65 6d 65 6e 74 |for each| element|
|00002360| 20 69 6e 20 61 72 72 61 | 79 20 7b 20 3c 3d 20 31 | in arra|y { <= 1|
|00002370| 30 7d 0d 00 ea 31 20 20 | f4 20 20 20 2b 38 20 3d |0}...1 |. +8 =|
|00002380| 20 73 69 7a 65 20 6f 66 | 20 65 61 63 68 20 64 69 | size of| each di|
|00002390| 6d 65 6e 73 69 6f 6e 20 | 3d 20 32 5e 7b 34 2c 35 |mension |= 2^{4,5|
|000023a0| 2c 36 7d 0d 00 eb 33 20 | 20 f4 20 20 20 2b 31 32 |,6}...3 | . +12|
|000023b0| 20 3d 20 33 2d 64 20 61 | 72 72 61 79 20 5b 62 2c | = 3-d a|rray [b,|
|000023c0| 67 2c 72 5d 20 6f 66 20 | 6e 2d 62 69 74 20 65 6c |g,r] of |n-bit el|
|000023d0| 65 6d 65 6e 74 73 0d 00 | ec 3b 20 20 f4 20 20 20 |ements..|.; . |
|000023e0| 5b 2b 30 5d 20 3d 20 61 | 72 72 61 79 20 6f 66 20 |[+0] = a|rray of |
|000023f0| 64 69 74 68 65 72 20 68 | 61 6c 66 2d 77 6f 72 64 |dither h|alf-word|
|00002400| 73 20 73 74 6f 72 65 64 | 20 61 73 20 26 63 64 61 |s stored| as &cda|
|00002410| 62 0d 00 ed 23 20 20 f4 | 20 20 20 20 20 20 20 20 |b...# .| |
|00002420| 20 20 20 20 20 20 20 20 | 20 20 20 2b 2d 2d 2d 2b | | +---+|
|00002430| 2d 2d 2d 2b 0d 00 ee 23 | 20 20 f4 20 20 20 20 20 |---+...#| . |
|00002440| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 7c 20 | | | |
|00002450| 61 20 7c 20 62 20 7c 0d | 00 ef 23 20 20 f4 20 20 |a | b |.|..# . |
|00002460| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002470| 20 2b 2d 2d 2d 2b 2d 2d | 2d 2b 0d 00 f0 23 20 20 | +---+--|-+...# |
|00002480| f4 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002490| 20 20 20 20 7c 20 63 20 | 7c 20 64 20 7c 0d 00 f1 | | c || d |...|
|000024a0| 23 20 20 f4 20 20 20 20 | 20 20 20 20 20 20 20 20 |# . | |
|000024b0| 20 20 20 20 20 20 20 2b | 2d 2d 2d 2b 2d 2d 2d 2b | +|---+---+|
|000024c0| 0d 00 f2 07 20 20 3a 0d | 00 f3 1b 20 20 6c 65 6e |.... :.|... len|
|000024d0| 67 74 68 25 20 3d 20 31 | 20 3c 3c 20 6e 62 69 74 |gth% = 1| << nbit|
|000024e0| 73 25 0d 00 f4 29 20 20 | 73 69 7a 65 25 20 3d 20 |s%...) |size% = |
|000024f0| 6c 65 6e 67 74 68 25 20 | 2a 20 6c 65 6e 67 74 68 |length% |* length|
|00002500| 25 20 2a 20 6c 65 6e 67 | 74 68 25 0d 00 f5 15 20 |% * leng|th%.... |
|00002510| 20 de 20 61 72 72 61 79 | 20 73 69 7a 65 25 2a 32 | . array| size%*2|
|00002520| 0d 00 f6 52 20 20 de 20 | 6f 75 74 70 75 74 20 31 |...R . |output 1|
|00002530| 32 20 2b 20 28 73 69 7a | 65 25 2a 31 30 2f 38 29 |2 + (siz|e%*10/8)|
|00002540| 20 2b 20 33 20 2b 20 28 | 32 5e 31 30 2a 32 29 20 | + 3 + (|2^10*2) |
|00002550| 20 20 20 20 20 20 20 20 | 20 20 3a f4 20 6d 61 78 | | :. max|
|00002560| 69 6d 75 6d 20 62 75 66 | 66 65 72 20 6e 65 65 64 |imum buf|fer need|
|00002570| 65 64 0d 00 f7 14 20 20 | de 20 75 73 65 64 25 28 |ed.... |. used%(|
|00002580| 26 66 66 66 66 29 0d 00 | f8 11 20 20 75 73 65 64 |&ffff)..|.. used|
|00002590| 25 28 29 20 3d 20 30 0d | 00 f9 53 20 20 c8 99 20 |%() = 0.|..S .. |
|000025a0| 22 4f 53 5f 46 69 6c 65 | 22 2c 20 31 36 2c 20 46 |"OS_File|", 16, F|
|000025b0| 69 6c 65 50 72 65 66 69 | 78 55 6e 63 6f 6d 70 72 |ilePrefi|xUncompr|
|000025c0| 65 73 73 65 64 24 2b 20 | c3 28 6e 62 69 74 73 25 |essed$+ |.(nbits%|
|000025d0| 29 2c 20 61 72 72 61 79 | 2c 20 30 20 20 20 20 20 |), array|, 0 |
|000025e0| 3a f4 20 6c 6f 61 64 20 | 69 74 0d 00 fa 10 20 20 |:. load |it.... |
|000025f0| 61 25 20 3d 20 61 72 72 | 61 79 0d 00 fb 2d 20 20 |a% = arr|ay...- |
|00002600| f1 20 22 46 69 6e 64 69 | 6e 67 20 77 68 69 63 68 |. "Findi|ng which|
|00002610| 20 64 69 74 68 65 72 20 | 77 6f 72 64 73 20 61 72 | dither |words ar|
|00002620| 65 20 75 73 65 64 22 0d | 00 fc 19 20 20 e3 20 69 |e used".|... . i|
|00002630| 25 3d 20 30 20 b8 20 73 | 69 7a 65 25 20 2d 20 31 |%= 0 . s|ize% - 1|
|00002640| 0d 00 fd 27 20 20 20 20 | 75 73 65 64 25 28 3f 61 |...' |used%(?a|
|00002650| 25 20 84 20 28 28 61 25 | 3f 31 29 20 3c 3c 20 38 |% . ((a%|?1) << 8|
|00002660| 29 29 20 2b 3d 20 31 0d | 00 fe 0f 20 20 20 20 61 |)) += 1.|... a|
|00002670| 25 20 2b 3d 20 32 0d 00 | ff 0a 20 20 ed 20 69 25 |% += 2..|.. . i%|
|00002680| 0d 01 00 38 20 20 f1 20 | 22 43 6f 75 6e 74 69 6e |...8 . |"Countin|
|00002690| 67 20 6e 75 6d 62 65 72 | 20 6f 66 20 64 69 66 66 |g number| of diff|
|000026a0| 65 72 65 6e 74 20 64 69 | 74 68 65 72 20 77 6f 72 |erent di|ther wor|
|000026b0| 64 73 20 75 73 65 64 22 | 0d 01 01 0c 20 20 6e 25 |ds used"|.... n%|
|000026c0| 20 3d 20 30 0d 01 02 15 | 20 20 e3 20 69 25 3d 20 | = 0....| . i%= |
|000026d0| 30 20 b8 20 26 66 66 66 | 66 0d 01 03 1d 20 20 20 |0 . &fff|f.... |
|000026e0| 20 e7 20 75 73 65 64 25 | 28 69 25 29 20 8c 20 6e | . used%|(i%) . n|
|000026f0| 25 20 2b 3d 20 31 0d 01 | 04 0a 20 20 ed 20 69 25 |% += 1..|.. . i%|
|00002700| 0d 01 05 0f 20 20 62 69 | 74 73 25 20 3d 20 31 0d |.... bi|ts% = 1.|
|00002710| 01 06 1b 20 20 c8 95 20 | 6e 25 20 3e 3d 20 28 31 |... .. |n% >= (1|
|00002720| 20 3c 3c 20 62 69 74 73 | 25 29 0d 01 07 12 20 20 | << bits|%).... |
|00002730| 20 20 62 69 74 73 25 20 | 2b 3d 20 31 0d 01 08 07 | bits% |+= 1....|
|00002740| 20 20 ce 0d 01 09 50 20 | 20 f1 20 22 54 68 65 72 | ....P | . "Ther|
|00002750| 65 20 61 72 65 20 22 3b | 20 6e 25 3b 20 22 20 64 |e are ";| n%; " d|
|00002760| 69 66 66 65 72 65 6e 74 | 20 64 69 74 68 65 72 20 |ifferent| dither |
|00002770| 77 6f 72 64 73 2c 20 72 | 65 71 75 69 72 69 6e 67 |words, r|equiring|
|00002780| 20 22 3b 20 62 69 74 73 | 25 3b 20 22 20 62 69 74 | "; bits|%; " bit|
|00002790| 73 20 22 0d 01 0a 23 20 | 20 f1 20 22 57 72 69 74 |s "...# | . "Writ|
|000027a0| 69 6e 67 20 64 69 74 68 | 65 72 20 77 6f 72 64 20 |ing dith|er word |
|000027b0| 74 61 62 6c 65 22 0d 01 | 0b 41 20 20 61 75 78 25 |table"..|.A aux%|
|000027c0| 20 3d 20 28 28 73 69 7a | 65 25 2a 62 69 74 73 25 | = ((siz|e%*bits%|
|000027d0| 2b 33 31 29 20 81 20 33 | 32 29 20 2a 20 34 20 20 |+31) . 3|2) * 4 |
|000027e0| 20 20 20 20 20 20 20 20 | 3a f4 20 77 6f 72 64 2d | |:. word-|
|000027f0| 61 6c 69 67 6e 65 64 0d | 01 0c 43 20 20 61 75 78 |aligned.|..C aux|
|00002800| 25 20 2b 3d 20 31 32 20 | 20 20 20 20 20 20 20 20 |% += 12 | |
|00002810| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002820| 20 20 20 20 20 20 20 20 | 20 20 20 3a f4 20 73 6b | | :. sk|
|00002830| 69 70 20 68 65 61 64 65 | 72 21 0d 01 0d 15 20 20 |ip heade|r!.... |
|00002840| 6f 75 74 70 75 74 21 30 | 20 3d 20 61 75 78 25 0d |output!0| = aux%.|
|00002850| 01 0e 16 20 20 6f 75 74 | 70 75 74 21 34 20 3d 20 |... out|put!4 = |
|00002860| 62 69 74 73 25 0d 01 0f | 1c 20 20 6f 75 74 70 75 |bits%...|. outpu|
|00002870| 74 21 38 20 3d 20 31 20 | 3c 3c 20 6e 62 69 74 73 |t!8 = 1 |<< nbits|
|00002880| 25 0d 01 10 14 20 20 61 | 75 78 25 20 2b 3d 20 6f |%.... a|ux% += o|
|00002890| 75 74 70 75 74 0d 01 11 | 10 20 20 69 6e 64 65 78 |utput...|. index|
|000028a0| 25 20 3d 20 30 0d 01 12 | 15 20 20 e3 20 69 25 3d |% = 0...|. . i%=|
|000028b0| 20 30 20 b8 20 26 66 66 | 66 66 0d 01 13 15 20 20 | 0 . &ff|ff.... |
|000028c0| 20 20 e7 20 75 73 65 64 | 25 28 69 25 29 20 8c 0d | . used|%(i%) ..|
|000028d0| 01 14 1c 20 20 20 20 20 | 20 75 73 65 64 25 28 69 |... | used%(i|
|000028e0| 25 29 20 3d 20 69 6e 64 | 65 78 25 0d 01 15 15 20 |%) = ind|ex%.... |
|000028f0| 20 20 20 20 20 69 6e 64 | 65 78 25 20 2b 3d 20 31 | ind|ex% += 1|
|00002900| 0d 01 16 14 20 20 20 20 | 20 20 21 61 75 78 25 20 |.... | !aux% |
|00002910| 3d 20 69 25 0d 01 17 13 | 20 20 20 20 20 20 61 75 |= i%....| au|
|00002920| 78 25 20 2b 3d 20 32 0d | 01 18 09 20 20 20 20 cd |x% += 2.|... .|
|00002930| 0d 01 19 0a 20 20 ed 20 | 69 25 0d 01 1a 1b 20 20 |.... . |i%.... |
|00002940| f1 20 22 43 6f 6d 70 72 | 65 73 73 69 6e 67 20 74 |. "Compr|essing t|
|00002950| 61 62 6c 65 22 0d 01 1b | 10 20 20 69 6e 64 65 78 |able"...|. index|
|00002960| 25 20 3d 20 30 0d 01 1c | 10 20 20 61 25 20 3d 20 |% = 0...|. a% = |
|00002970| 61 72 72 61 79 0d 01 1d | 16 20 20 6f 25 20 3d 20 |array...|. o% = |
|00002980| 6f 75 74 70 75 74 20 2b | 20 31 32 0d 01 1e 0c 20 |output +| 12.... |
|00002990| 20 62 25 20 3d 20 30 0d | 01 1f 1b 20 20 6d 25 20 | b% = 0.|... m% |
|000029a0| 3d 20 28 31 20 3c 3c 20 | 62 69 74 73 25 29 20 2d |= (1 << |bits%) -|
|000029b0| 20 31 0d 01 20 19 20 20 | e3 20 69 25 3d 20 30 20 | 1.. . |. i%= 0 |
|000029c0| b8 20 73 69 7a 65 25 20 | 2d 20 31 0d 01 21 46 20 |. size% |- 1..!F |
|000029d0| 20 20 20 21 6f 25 20 3d | 20 28 21 6f 25 20 80 20 | !o% =| (!o% . |
|000029e0| ac 28 6d 25 20 3c 3c 20 | 62 25 29 29 20 84 20 28 |.(m% << |b%)) . (|
|000029f0| 75 73 65 64 25 28 3f 61 | 25 20 84 20 28 28 61 25 |used%(?a|% . ((a%|
|00002a00| 3f 31 29 20 3c 3c 20 38 | 29 29 20 3c 3c 20 62 25 |?1) << 8|)) << b%|
|00002a10| 29 0d 01 22 13 20 20 20 | 20 62 25 20 2b 3d 20 62 |)..". | b% += b|
|00002a20| 69 74 73 25 0d 01 23 15 | 20 20 20 20 6f 25 20 2b |its%..#.| o% +|
|00002a30| 3d 20 62 25 20 3e 3e 20 | 33 0d 01 24 13 20 20 20 |= b% >> |3..$. |
|00002a40| 20 62 25 20 3d 20 62 25 | 20 80 20 37 0d 01 25 0f | b% = b%| . 7..%.|
|00002a50| 20 20 20 20 61 25 20 2b | 3d 20 32 0d 01 26 0a 20 | a% +|= 2..&. |
|00002a60| 20 ed 20 69 25 0d 01 27 | 4d 20 20 c8 99 20 22 4f | . i%..'|M .. "O|
|00002a70| 53 5f 46 69 6c 65 22 2c | 20 31 30 2c 20 46 69 6c |S_File",| 10, Fil|
|00002a80| 65 50 72 65 66 69 78 43 | 6f 6d 70 72 65 73 73 65 |ePrefixC|ompresse|
|00002a90| 64 24 2b 20 c3 28 6e 62 | 69 74 73 25 29 2c 20 26 |d$+ .(nb|its%), &|
|00002aa0| 66 66 64 2c 2c 20 6f 75 | 74 70 75 74 2c 20 61 75 |ffd,, ou|tput, au|
|00002ab0| 78 25 0d 01 28 05 e1 0d | 01 29 05 3a 0d 01 2a 51 |x%..(...|.).:..*Q|
|00002ac0| f4 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |. ******|********|
|00002ad0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ae0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002af0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002b00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 0d 01 2b |********|*****..+|
|00002b10| 51 f4 20 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |Q. *****|********|
|00002b20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002b30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002b40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002b50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 0d 01 |********|******..|
|00002b60| 2c 51 f4 20 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |,Q. ****|********|
|00002b70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002b80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002b90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ba0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 0d |********|*******.|
|00002bb0| 01 2d 05 3a 0d 01 2e 27 | dd 20 f2 5f 43 72 65 61 |.-.:...'|. ._Crea|
|00002bc0| 74 65 5f 55 6e 63 6f 6d | 70 72 65 73 73 65 64 5f |te_Uncom|pressed_|
|00002bd0| 4c 55 54 28 6e 62 69 74 | 73 25 29 0d 01 2f 1b 20 |LUT(nbit|s%)../. |
|00002be0| 20 6c 65 6e 67 74 68 25 | 20 3d 20 31 20 3c 3c 20 | length%| = 1 << |
|00002bf0| 6e 62 69 74 73 25 0d 01 | 30 29 20 20 73 69 7a 65 |nbits%..|0) size|
|00002c00| 25 20 3d 20 6c 65 6e 67 | 74 68 25 20 2a 20 6c 65 |% = leng|th% * le|
|00002c10| 6e 67 74 68 25 20 2a 20 | 6c 65 6e 67 74 68 25 0d |ngth% * |length%.|
|00002c20| 01 31 0e 20 20 de 20 76 | 61 72 73 20 38 0d 01 32 |.1. . v|ars 8..2|
|00002c30| 16 20 20 de 20 6f 75 74 | 70 75 74 20 73 69 7a 65 |. . out|put size|
|00002c40| 25 2a 32 0d 01 33 17 20 | 20 de 20 63 6f 75 6e 74 |%*2..3. | . count|
|00002c50| 25 28 32 35 36 2a 32 35 | 36 29 0d 01 34 13 20 20 |%(256*25|6)..4. |
|00002c60| de 20 6d 25 28 6c 65 6e | 67 74 68 25 29 0d 01 35 |. m%(len|gth%)..5|
|00002c70| 19 20 20 e3 20 69 25 3d | 20 30 20 b8 20 6c 65 6e |. . i%=| 0 . len|
|00002c80| 67 74 68 25 2d 31 0d 01 | 36 2f 20 20 20 20 6d 25 |gth%-1..|6/ m%|
|00002c90| 28 69 25 29 20 3d 20 28 | 28 69 25 2a 26 66 66 29 |(i%) = (|(i%*&ff)|
|00002ca0| 20 2f 20 28 6c 65 6e 67 | 74 68 25 2d 31 29 29 20 | / (leng|th%-1)) |
|00002cb0| 2b 20 30 2e 35 0d 01 37 | 0a 20 20 ed 20 69 25 0d |+ 0.5..7|. . i%.|
|00002cc0| 01 38 07 20 20 3a 0d 01 | 39 18 20 20 c8 99 20 22 |.8. :..|9. .. "|
|00002cd0| 58 48 6f 75 72 67 6c 61 | 73 73 5f 4f 6e 22 0d 01 |XHourgla|ss_On"..|
|00002ce0| 3a 09 20 20 ea 20 85 0d | 01 3b 59 20 20 ee 20 85 |:. . ..|.;Y . .|
|00002cf0| 20 ea 20 f7 20 85 3a c8 | 99 20 22 58 48 6f 75 72 | . . .:.|. "XHour|
|00002d00| 67 6c 61 73 73 5f 4f 66 | 66 22 3a 85 20 9f 2c 20 |glass_Of|f":. ., |
|00002d10| f6 24 2b 20 a4 65 2b 20 | 22 20 5b 72 67 62 3d 20 |.$+ .e+ |" [rgb= |
|00002d20| 22 2b 20 c3 7e 28 63 67 | 25 20 84 20 28 6d 25 28 |"+ .~(cg|% . (m%(|
|00002d30| 72 25 29 20 3c 3c 20 38 | 29 29 2b 20 22 20 5d 22 |r%) << 8|))+ " ]"|
|00002d40| 0d 01 3c 13 20 20 20 20 | 21 76 61 72 73 20 3d 20 |..<. |!vars = |
|00002d50| 31 37 31 0d 01 3d 13 20 | 20 20 20 76 61 72 73 21 |171..=. | vars!|
|00002d60| 34 20 3d 20 2d 31 0d 01 | 3e 2c 20 20 20 20 c8 99 |4 = -1..|>, ..|
|00002d70| 20 22 4f 53 5f 52 65 61 | 64 56 64 75 56 61 72 69 | "OS_Rea|dVduVari|
|00002d80| 61 62 6c 65 73 22 2c 20 | 76 61 72 73 2c 20 76 61 |ables", |vars, va|
|00002d90| 72 73 0d 01 3f 11 20 20 | 20 20 65 25 3d 20 21 76 |rs..?. | e%= !v|
|00002da0| 61 72 73 0d 01 40 13 20 | 20 20 20 6f 25 20 3d 20 |ars..@. | o% = |
|00002db0| 6f 75 74 70 75 74 0d 01 | 41 14 20 20 20 20 63 6f |output..|A. co|
|00002dc0| 75 6e 74 25 28 29 20 3d | 20 30 0d 01 42 1d 20 20 |unt%() =| 0..B. |
|00002dd0| 20 20 e3 20 62 25 3d 20 | 30 20 b8 20 6c 65 6e 67 | . b%= |0 . leng|
|00002de0| 74 68 25 20 2d 20 31 0d | 01 43 1c 20 20 20 20 20 |th% - 1.|.C. |
|00002df0| 20 63 62 25 20 3d 20 6d | 25 28 62 25 29 20 3c 3c | cb% = m|%(b%) <<|
|00002e00| 20 32 34 0d 01 44 1f 20 | 20 20 20 20 20 e3 20 67 | 24..D. | . g|
|00002e10| 25 3d 20 30 20 b8 20 6c | 65 6e 67 74 68 25 20 2d |%= 0 . l|ength% -|
|00002e20| 20 31 0d 01 45 26 20 20 | 20 20 20 20 20 20 63 67 | 1..E& | cg|
|00002e30| 25 20 3d 20 63 62 25 20 | 84 20 28 6d 25 28 67 25 |% = cb% |. (m%(g%|
|00002e40| 29 20 3c 3c 20 31 36 29 | 0d 01 46 4d 20 20 20 20 |) << 16)|..FM |
|00002e50| 20 20 20 20 c8 99 20 22 | 58 48 6f 75 72 67 6c 61 | .. "|XHourgla|
|00002e60| 73 73 5f 50 65 72 63 65 | 6e 74 61 67 65 22 2c 20 |ss_Perce|ntage", |
|00002e70| 28 62 25 2a 6c 65 6e 67 | 74 68 25 2b 67 25 29 2a |(b%*leng|th%+g%)*|
|00002e80| 31 30 30 2f 28 6c 65 6e | 67 74 68 25 2a 6c 65 6e |100/(len|gth%*len|
|00002e90| 67 74 68 25 29 0d 01 47 | 21 20 20 20 20 20 20 20 |gth%)..G|! |
|00002ea0| 20 e3 20 72 25 3d 20 30 | 20 b8 20 6c 65 6e 67 74 | . r%= 0| . lengt|
|00002eb0| 68 25 20 2d 20 31 0d 01 | 48 46 20 20 20 20 20 20 |h% - 1..|HF |
|00002ec0| 20 20 20 20 c8 99 20 22 | 43 6f 6c 6f 75 72 54 72 | .. "|ColourTr|
|00002ed0| 61 6e 73 5f 53 65 74 47 | 43 4f 4c 22 2c 20 63 67 |ans_SetG|COL", cg|
|00002ee0| 25 20 84 20 28 6d 25 28 | 72 25 29 20 3c 3c 20 38 |% . (m%(|r%) << 8|
|00002ef0| 29 2c 2c 2c 20 26 31 30 | 30 2c 20 30 0d 01 49 1e |),,, &10|0, 0..I.|
|00002f00| 20 20 20 20 20 20 20 20 | 20 20 3f 6f 25 20 3d 20 | | ?o% = |
|00002f10| 3f 65 25 20 82 20 65 25 | 3f 34 0d 01 4a 21 20 20 |?e% . e%|?4..J! |
|00002f20| 20 20 20 20 20 20 20 20 | 6f 25 3f 31 20 3d 20 65 | |o%?1 = e|
|00002f30| 25 3f 38 20 82 20 65 25 | 3f 31 32 0d 01 4b 2e 20 |%?8 . e%|?12..K. |
|00002f40| 20 20 20 20 20 20 20 20 | 20 63 6f 75 6e 74 25 28 | | count%(|
|00002f50| 3f 6f 25 20 84 20 28 28 | 6f 25 3f 31 29 20 3c 3c |?o% . ((|o%?1) <<|
|00002f60| 20 38 29 29 20 2b 3d 20 | 31 0d 01 4c 15 20 20 20 | 8)) += |1..L. |
|00002f70| 20 20 20 20 20 20 20 6f | 25 20 2b 3d 20 32 0d 01 | o|% += 2..|
|00002f80| 4d 10 20 20 20 20 20 20 | 20 20 ed 20 72 25 0d 01 |M. | . r%..|
|00002f90| 4e 0e 20 20 20 20 20 20 | ed 20 67 25 0d 01 4f 0c |N. |. g%..O.|
|00002fa0| 20 20 20 20 ed 20 62 25 | 0d 01 50 1d 20 20 f7 20 | . b%|..P. . |
|00002fb0| 85 3a c8 99 20 22 58 48 | 6f 75 72 67 6c 61 73 73 |.:.. "XH|ourglass|
|00002fc0| 5f 4f 66 66 22 0d 01 51 | 4d 20 20 c8 99 20 22 4f |_Off"..Q|M .. "O|
|00002fd0| 53 5f 46 69 6c 65 22 2c | 20 31 30 2c 20 46 69 6c |S_File",| 10, Fil|
|00002fe0| 65 50 72 65 66 69 78 55 | 6e 63 6f 6d 70 72 65 73 |ePrefixU|ncompres|
|00002ff0| 73 65 64 24 2b 20 c3 28 | 6e 62 69 74 73 25 29 2c |sed$+ .(|nbits%),|
|00003000| 20 26 66 66 64 2c 2c 20 | 6f 75 74 70 75 74 2c 20 | &ffd,, |output, |
|00003010| 6f 25 0d 01 52 0e 20 20 | 6d 61 78 25 20 3d 20 30 |o%..R. |max% = 0|
|00003020| 0d 01 53 15 20 20 e3 20 | 69 25 3d 20 30 20 b8 20 |..S. . |i%= 0 . |
|00003030| 36 35 35 33 35 0d 01 54 | 2f 20 20 20 20 e7 20 6d |65535..T|/ . m|
|00003040| 61 78 25 20 3c 20 63 6f | 75 6e 74 25 28 69 25 29 |ax% < co|unt%(i%)|
|00003050| 20 8c 20 6d 61 78 25 20 | 3d 20 63 6f 75 6e 74 25 | . max% |= count%|
|00003060| 28 69 25 29 0d 01 55 0a | 20 20 ed 20 69 25 0d 01 |(i%)..U.| . i%..|
|00003070| 56 10 20 20 de 20 68 25 | 28 6d 61 78 25 29 0d 01 |V. . h%|(max%)..|
|00003080| 57 15 20 20 e3 20 69 25 | 3d 20 30 20 b8 20 36 35 |W. . i%|= 0 . 65|
|00003090| 35 33 35 0d 01 58 1b 20 | 20 20 20 68 25 28 63 6f |535..X. | h%(co|
|000030a0| 75 6e 74 25 28 69 25 29 | 29 20 2b 3d 20 31 0d 01 |unt%(i%)|) += 1..|
|000030b0| 59 0a 20 20 ed 20 69 25 | 0d 01 5a 2d 20 20 48 25 |Y. . i%|..Z- H%|
|000030c0| 3d 20 ae 28 46 69 6c 65 | 50 72 65 66 69 78 53 74 |= .(File|PrefixSt|
|000030d0| 61 74 69 73 74 69 63 73 | 24 2b 20 c3 28 6e 62 69 |atistics|$+ .(nbi|
|000030e0| 74 73 25 29 29 0d 01 5b | 09 20 20 ea 20 85 0d 01 |ts%))..[|. . ...|
|000030f0| 5c 17 20 20 ee 20 85 20 | ea 20 f7 20 85 3a d9 23 |\. . . |. . .:.#|
|00003100| 48 25 3a f2 45 0d 01 5d | 16 20 20 20 20 e3 20 69 |H%:.E..]|. . i|
|00003110| 25 3d 20 30 20 b8 20 6d | 61 78 25 0d 01 5e 32 20 |%= 0 . m|ax%..^2 |
|00003120| 20 20 20 20 20 e7 20 68 | 25 28 69 25 29 20 8c 20 | . h|%(i%) . |
|00003130| d5 23 48 25 2c 20 c3 28 | 69 25 29 2b 20 22 20 3a |.#H%, .(|i%)+ " :|
|00003140| 20 22 2b 20 c3 28 68 25 | 28 69 25 29 29 0d 01 5f | "+ .(h%|(i%)).._|
|00003150| 0c 20 20 20 20 ed 20 69 | 25 0d 01 60 0e 20 20 f7 |. . i|%..`. .|
|00003160| 20 85 3a d9 23 48 25 0d | 01 61 05 e1 0d 01 62 05 | .:.#H%.|.a....b.|
|00003170| 3a 0d 01 63 47 f4 20 7e | 7e 7e 7e 7e 7e 7e 7e 7e |:..cG. ~|~~~~~~~~|
|00003180| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00003190| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|000031a0| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|000031b0| 7e 7e 7e 7e 7e 7e 7e 7e | 0d 01 64 05 3a 0d 01 65 |~~~~~~~~|..d.:..e|
|000031c0| 08 dd 20 f2 45 0d 01 66 | 11 20 20 85 20 9f 2c 20 |.. .E..f|. . ., |
|000031d0| f6 24 2b 20 a4 65 0d 01 | 67 05 e1 0d 01 68 05 3a |.$+ .e..|g....h.:|
|000031e0| 0d 01 69 08 dd 20 a4 65 | 0d 01 6a 08 ea 20 65 24 |..i.. .e|..j.. e$|
|000031f0| 0d 01 6b 10 20 20 e7 20 | 44 65 62 75 67 25 20 8c |..k. . |Debug% .|
|00003200| 0d 01 6c 1d 20 20 20 20 | 65 24 20 3d 20 22 2c 20 |..l. |e$ = ", |
|00003210| 5b 22 2b 20 c3 28 9e 29 | 2b 20 22 5d 22 0d 01 6d |["+ .(.)|+ "]"..m|
|00003220| 07 20 20 cd 0d 01 6e 08 | 3d 20 65 24 0d 01 6f 05 |. ...n.|= e$..o.|
|00003230| 3a 0d 01 70 47 f4 20 7e | 7e 7e 7e 7e 7e 7e 7e 7e |:..pG. ~|~~~~~~~~|
|00003240| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00003250| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00003260| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00003270| 7e 7e 7e 7e 7e 7e 7e 7e | 0d 01 71 33 f4 20 72 65 |~~~~~~~~|..q3. re|
|00003280| 74 75 72 6e 73 20 70 6f | 69 6e 74 65 72 20 74 6f |turns po|inter to|
|00003290| 20 6d 61 6c 6c 6f 63 28 | 29 27 65 64 20 62 6c 6f | malloc(|)'ed blo|
|000032a0| 63 6b 2c 20 6f 72 20 7a | 65 72 6f 0d 01 72 3f f4 |ck, or z|ero..r?.|
|000032b0| 20 69 66 20 6e 6f 74 20 | 61 20 66 69 6c 65 2c 20 | if not |a file, |
|000032c0| 6e 6f 74 20 63 6f 72 72 | 65 63 74 20 66 69 6c 65 |not corr|ect file|
|000032d0| 74 79 70 65 2c 20 6f 72 | 20 6e 6f 74 20 65 6e 6f |type, or| not eno|
|000032e0| 75 67 68 20 6d 65 6d 6f | 72 79 0d 01 73 05 f4 0d |ugh memo|ry..s...|
|000032f0| 01 74 05 f4 0d 01 75 2c | dd 20 a4 5f 6c 6f 61 64 |.t....u,|. ._load|
|00003300| 5f 66 69 6c 65 28 66 69 | 6c 65 24 2c 20 66 74 79 |_file(fi|le$, fty|
|00003310| 70 65 25 29 20 20 20 20 | 20 20 20 20 20 20 20 20 |pe%) | |
|00003320| 0d 01 76 19 ea 20 73 69 | 7a 25 2c 20 74 25 2c 20 |..v.. si|z%, t%, |
|00003330| 74 79 70 65 25 2c 20 66 | 25 0d 01 77 33 20 20 c8 |type%, f|%..w3 .|
|00003340| 99 20 22 4f 53 5f 46 69 | 6c 65 22 2c 20 32 33 2c |. "OS_Fi|le", 23,|
|00003350| 20 66 69 6c 65 24 20 b8 | 20 74 25 2c 2c 2c 2c 20 | file$ .| t%,,,, |
|00003360| 73 69 7a 25 2c 2c 20 74 | 79 70 65 25 0d 01 78 1e |siz%,, t|ype%..x.|
|00003370| 20 20 e7 20 74 25 3d 31 | 20 80 20 74 79 70 65 25 | . t%=1| . type%|
|00003380| 3d 66 74 79 70 65 25 20 | 8c 20 0d 01 79 1a 20 20 |=ftype% |. ..y. |
|00003390| 20 20 66 25 20 3d 20 a4 | 6d 61 6c 6c 6f 63 28 73 | f% = .|malloc(s|
|000033a0| 69 7a 25 29 0d 01 7a 2d | 20 20 20 20 e7 20 66 25 |iz%)..z-| . f%|
|000033b0| 20 8c 20 c8 99 20 22 4f | 53 5f 46 69 6c 65 22 2c | . .. "O|S_File",|
|000033c0| 20 31 36 2c 20 66 69 6c | 65 24 2c 20 66 25 2c 20 | 16, fil|e$, f%, |
|000033d0| 30 0d 01 7b 07 20 20 cd | 0d 01 7c 08 3d 20 66 25 |0..{. .|..|.= f%|
|000033e0| 0d 01 7d 05 3a 0d 01 7e | 21 dd 20 f2 6d 65 6d 73 |..}.:..~|!. .mems|
|000033f0| 65 74 28 64 65 73 74 25 | 2c 20 62 79 74 65 25 2c |et(dest%|, byte%,|
|00003400| 20 73 69 7a 25 29 0d 01 | 7f 0f ea 20 69 25 2c 20 | siz%)..|... i%, |
|00003410| 77 6f 72 64 25 0d 01 80 | 19 20 20 62 79 74 65 25 |word%...|. byte%|
|00003420| 20 3d 20 62 79 74 65 25 | 20 80 20 26 66 66 0d 01 | = byte%| . &ff..|
|00003430| 81 23 20 20 77 6f 72 64 | 25 20 3d 20 62 79 74 65 |.# word|% = byte|
|00003440| 25 20 84 20 28 62 79 74 | 65 25 20 3c 3c 20 31 36 |% . (byt|e% << 16|
|00003450| 29 0d 01 82 22 20 20 77 | 6f 72 64 25 20 3d 20 77 |)..." w|ord% = w|
|00003460| 6f 72 64 25 20 84 20 28 | 77 6f 72 64 25 20 3c 3c |ord% . (|word% <<|
|00003470| 20 38 29 0d 01 83 11 20 | 20 c8 95 20 73 69 7a 25 | 8).... | .. siz%|
|00003480| 20 3e 20 33 0d 01 84 16 | 20 20 20 20 21 64 65 73 | > 3....| !des|
|00003490| 74 25 20 3d 20 77 6f 72 | 64 25 0d 01 85 12 20 20 |t% = wor|d%.... |
|000034a0| 20 20 64 65 73 74 25 20 | 2b 3d 20 34 0d 01 86 11 | dest% |+= 4....|
|000034b0| 20 20 20 20 73 69 7a 25 | 20 2d 3d 20 34 0d 01 87 | siz%| -= 4...|
|000034c0| 07 20 20 ce 0d 01 88 11 | 20 20 c8 95 20 73 69 7a |. .....| .. siz|
|000034d0| 25 20 3e 20 30 0d 01 89 | 16 20 20 20 20 3f 64 65 |% > 0...|. ?de|
|000034e0| 73 74 25 20 3d 20 62 79 | 74 65 25 0d 01 8a 12 20 |st% = by|te%.... |
|000034f0| 20 20 20 64 65 73 74 25 | 20 2b 3d 20 31 0d 01 8b | dest%| += 1...|
|00003500| 11 20 20 20 20 73 69 7a | 25 20 2d 3d 20 31 0d 01 |. siz|% -= 1..|
|00003510| 8c 07 20 20 ce 0d 01 8d | 35 f4 20 20 53 59 53 20 |.. ....|5. SYS |
|00003520| 22 43 41 73 73 65 6d 62 | 6c 65 72 5f 4d 65 6d 6f |"CAssemb|ler_Memo|
|00003530| 72 79 22 2c 20 31 2c 20 | 64 65 73 74 25 2c 20 62 |ry", 1, |dest%, b|
|00003540| 79 74 65 25 2c 20 73 69 | 7a 25 0d 01 8e 05 e1 0d |yte%, si|z%......|
|00003550| 01 8f 05 3a 0d 01 90 1c | dd 20 a4 6d 69 6e 28 61 |...:....|. .min(a|
|00003560| 2c 20 62 29 3a e7 20 61 | 3e 62 20 8c 20 61 3d 62 |, b):. a|>b . a=b|
|00003570| 0d 01 91 06 3d 61 0d 01 | 92 05 3a 0d 01 93 15 dd |....=a..|..:.....|
|00003580| 20 a4 6d 6f 64 75 6c 6f | 28 61 25 2c 20 62 25 29 | .modulo|(a%, b%)|
|00003590| 0d 01 94 1a 20 20 c8 95 | 20 61 25 3c 30 20 3a 20 |.... ..| a%<0 : |
|000035a0| 61 25 2b 3d 62 25 20 3a | 20 ce 0d 01 95 1c 20 20 |a%+=b% :| ..... |
|000035b0| c8 95 20 61 25 3e 3d 62 | 25 20 3a 20 61 25 2d 3d |.. a%>=b|% : a%-=|
|000035c0| 62 25 20 3a 20 ce 0d 01 | 96 08 3d 20 61 25 0d 01 |b% : ...|..= a%..|
|000035d0| 97 05 3a 0d 01 98 11 dd | 20 a4 6d 61 6c 6c 6f 63 |..:.....| .malloc|
|000035e0| 28 78 25 29 0d 01 99 0d | 20 20 de 20 78 25 20 78 |(x%)....| . x% x|
|000035f0| 25 0d 01 9a 08 3d 20 78 | 25 0d 01 9b 05 3a 0d 01 |%....= x|%....:..|
|00003600| 9c 04 0d ff 46 69 6c 65 | 44 61 74 61 82 43 44 42 |....File|Data.CDB|
|00003610| 6f 78 5f 48 53 56 74 00 | cb 1c 00 00 46 fd ff ff |ox_HSVt.|....F...|
|00003620| 4d 6c d4 55 03 00 2b f1 | 0d 00 01 0f f4 20 3e 53 |Ml.U..+.|..... >S|
|00003630| 65 67 6d 65 6e 74 33 0d | 00 02 11 f4 20 3a 20 43 |egment3.|.... : C|
|00003640| 79 20 42 6f 6f 6b 65 72 | 0d 00 03 16 f4 20 3a 20 |y Booker|..... : |
|00003650| 38 36 20 43 68 75 72 63 | 68 20 56 69 65 77 0d 00 |86 Churc|h View..|
|00003660| 04 11 f4 20 3a 20 4d 61 | 69 6e 20 52 6f 61 64 0d |... : Ma|in Road.|
|00003670| 00 05 13 f4 20 3a 20 43 | 72 6f 63 6b 65 6e 68 69 |.... : C|rockenhi|
|00003680| 6c 6c 0d 00 06 0f f4 20 | 3a 20 53 77 61 6e 6c 65 |ll..... |: Swanle|
|00003690| 79 0d 00 07 0c f4 20 3a | 20 4b 65 6e 74 0d 00 08 |y..... :| Kent...|
|000036a0| 10 f4 20 3a 20 42 52 38 | 20 38 20 4a 57 0d 00 09 |.. : BR8| 8 JW...|
|000036b0| 3c f4 20 20 20 20 20 54 | 65 73 74 20 61 6c 67 6f |<. T|est algo|
|000036c0| 72 69 74 68 6d 20 66 6f | 72 20 64 72 61 77 69 6e |rithm fo|r drawin|
|000036d0| 67 20 61 6e 20 68 73 76 | 20 63 6f 6e 65 20 64 79 |g an hsv| cone dy|
|000036e0| 6e 61 6d 69 63 61 6c 6c | 79 0d 00 0a 34 f4 20 49 |namicall|y...4. I|
|000036f0| 6e 73 74 65 61 64 20 6f | 66 20 64 72 61 77 69 6e |nstead o|f drawin|
|00003700| 67 20 63 75 72 76 65 73 | 2c 20 77 65 20 64 72 61 |g curves|, we dra|
|00003710| 77 20 71 75 61 64 72 61 | 6e 67 6c 65 73 0d 00 0b |w quadra|ngles...|
|00003720| 2f f4 20 57 65 20 70 72 | 65 2d 63 61 6c 63 75 6c |/. We pr|e-calcul|
|00003730| 61 74 65 20 61 6c 6c 20 | 74 72 69 67 20 6d 75 6c |ate all |trig mul|
|00003740| 74 69 70 6c 69 63 61 74 | 69 6f 6e 73 0d 00 0c 44 |tiplicat|ions...D|
|00003750| f4 20 54 68 65 20 63 69 | 72 63 6c 65 20 69 73 20 |. The ci|rcle is |
|00003760| 73 70 6c 69 74 20 69 6e | 74 6f 20 4e 54 25 20 3d |split in|to NT% =|
|00003770| 20 38 2a 32 5e 4e 25 20 | 61 6e 67 6c 65 73 20 5b | 8*2^N% |angles [|
|00003780| 4e 25 20 3d 20 30 2c 20 | 31 2c 20 32 2c 20 33 5d |N% = 0, |1, 2, 3]|
|00003790| 0d 00 0d 2e f4 20 54 68 | 65 20 6f 75 74 65 72 20 |..... Th|e outer |
|000037a0| 72 61 64 69 75 73 20 69 | 73 20 52 20 5b 3d 20 52 |radius i|s R [= R|
|000037b0| 61 64 69 75 73 20 2a 20 | 56 61 6c 75 65 5d 0d 00 |adius * |Value]..|
|000037c0| 0e 1e f4 20 45 61 63 68 | 20 61 6e 6e 75 6c 75 73 |... Each| annulus|
|000037d0| 20 69 73 20 44 52 25 20 | 77 69 64 65 0d 00 0f 2b | is DR% |wide...+|
|000037e0| f4 20 54 68 65 72 65 20 | 61 72 65 20 4e 41 25 20 |. There |are NA% |
|000037f0| 61 6e 6e 75 6c 69 20 3d | 20 66 6c 6f 6f 72 28 52 |annuli =| floor(R|
|00003800| 20 2f 20 44 52 25 29 0d | 00 10 42 f4 20 4e 6f 74 | / DR%).|..B. Not|
|00003810| 65 20 74 72 69 65 64 20 | 6a 75 73 74 20 73 74 6f |e tried |just sto|
|00003820| 72 69 6e 67 20 70 6f 69 | 6e 74 73 20 61 74 20 63 |ring poi|nts at c|
|00003830| 6f 72 6e 65 72 73 20 6f | 66 20 65 61 63 68 20 71 |orners o|f each q|
|00003840| 75 61 64 72 61 6e 67 6c | 65 0d 00 11 43 f4 20 62 |uadrangl|e...C. b|
|00003850| 75 74 20 74 68 69 73 20 | 72 65 73 75 6c 74 73 20 |ut this |results |
|00003860| 69 6e 20 74 6f 6f 20 6d | 75 63 68 20 73 63 72 65 |in too m|uch scre|
|00003870| 65 6e 20 6f 76 65 72 77 | 72 69 74 69 6e 67 2c 20 |en overw|riting, |
|00003880| 73 6f 20 6e 6f 77 20 67 | 6f 69 6e 67 0d 00 12 42 |so now g|oing...B|
|00003890| f4 20 74 6f 20 73 74 6f | 72 65 20 66 6f 72 20 65 |. to sto|re for e|
|000038a0| 61 63 68 20 71 75 61 64 | 72 61 6e 67 6c 65 20 74 |ach quad|rangle t|
|000038b0| 68 65 20 66 6f 75 72 20 | 70 6f 69 6e 74 73 2c 20 |he four |points, |
|000038c0| 73 75 69 74 61 62 6c 79 | 20 67 72 6f 77 6e 0d 00 |suitably| grown..|
|000038d0| 13 17 f4 20 69 6e 20 6f | 6e 65 20 68 61 6c 66 20 |... in o|ne half |
|000038e0| 70 69 78 65 6c 0d 00 14 | 4d f4 20 4e 6f 2c 20 74 |pixel...|M. No, t|
|000038f0| 68 69 73 20 6c 65 61 76 | 65 73 20 73 6f 6d 65 20 |his leav|es some |
|00003900| 67 61 70 73 2c 20 73 6f | 20 74 72 79 69 6e 67 20 |gaps, so| trying |
|00003910| 74 6f 20 61 6c 69 67 6e | 20 74 6f 20 32 20 4f 53 |to align| to 2 OS|
|00003920| 20 75 6e 69 74 20 22 70 | 69 78 65 6c 22 20 67 72 | unit "p|ixel" gr|
|00003930| 69 64 0d 00 15 42 f4 20 | 4e 6f 2c 20 69 66 20 61 |id...B. |No, if a|
|00003940| 6c 69 67 6e 20 61 6c 6c | 20 75 70 20 74 6f 20 32 |lign all| up to 2|
|00003950| 20 70 69 78 65 6c 20 67 | 72 69 64 2c 20 61 74 20 | pixel g|rid, at |
|00003960| 6c 65 61 73 74 20 6c 65 | 61 76 65 73 20 6e 6f 20 |least le|aves no |
|00003970| 67 61 70 73 0d 00 16 05 | f4 0d 00 17 4c f4 20 20 |gaps....|....L. |
|00003980| 20 20 20 4e 6f 74 65 20 | 74 68 61 74 20 66 6f 72 | Note |that for|
|00003990| 20 72 61 64 69 75 73 20 | 52 2c 20 74 68 65 20 6d | radius |R, the m|
|000039a0| 61 78 20 64 69 73 74 61 | 6e 63 65 20 62 65 74 77 |ax dista|nce betw|
|000039b0| 65 65 6e 20 73 74 72 61 | 69 67 68 74 20 6c 69 6e |een stra|ight lin|
|000039c0| 65 20 61 6e 64 0d 00 18 | 47 f4 20 20 20 20 20 61 |e and...|G. a|
|000039d0| 63 74 75 61 6c 20 72 61 | 64 69 75 73 20 6f 63 63 |ctual ra|dius occ|
|000039e0| 75 72 73 20 77 68 65 6e | 20 4e 25 20 3d 20 30 2c |urs when| N% = 0,|
|000039f0| 20 61 6e 64 20 67 65 74 | 20 64 20 3d 20 72 2a 28 | and get| d = r*(|
|00003a00| 31 2d 43 4f 53 28 50 49 | 2f 38 29 29 0d 00 19 25 |1-COS(PI|/8))...%|
|00003a10| f4 20 20 20 20 20 77 68 | 69 63 68 20 66 6f 72 20 |. wh|ich for |
|00003a20| 72 3d 20 31 32 38 20 3d | 3e 20 64 3d 20 39 2e 37 |r= 128 =|> d= 9.7|
|00003a30| 34 0d 00 1a 4d f4 20 54 | 68 65 20 61 62 6f 76 65 |4...M. T|he above|
|00003a40| 20 6d 65 61 6e 73 20 77 | 68 65 6e 20 74 72 79 20 | means w|hen try |
|00003a50| 62 6c 61 6e 6b 69 6e 67 | 20 6f 75 74 20 6e 65 65 |blanking| out nee|
|00003a60| 64 20 74 6f 20 61 64 64 | 20 31 30 20 4f 53 20 75 |d to add| 10 OS u|
|00003a70| 6e 69 74 73 20 74 6f 20 | 72 61 64 69 75 73 0d 00 |nits to |radius..|
|00003a80| 1b 19 f4 20 74 6f 20 65 | 6e 73 75 72 65 20 62 6c |... to e|nsure bl|
|00003a90| 61 6e 6b 20 61 6c 6c 0d | 00 1c 05 f4 0d 00 1d 39 |ank all.|.......9|
|00003aa0| f4 20 20 54 68 69 73 20 | 70 72 6f 64 75 63 65 73 |. This |produces|
|00003ab0| 20 61 20 6e 69 63 65 20 | 64 65 6d 6f 20 6f 66 20 | a nice |demo of |
|00003ac0| 74 68 65 20 66 69 6e 6e | 69 73 68 65 64 20 70 72 |the finn|ished pr|
|00003ad0| 6f 67 72 61 6d 0d 00 1e | 41 f4 20 20 20 20 20 54 |ogram...|A. T|
|00003ae0| 68 65 20 6c 68 73 20 69 | 73 20 74 68 65 20 76 61 |he lhs i|s the va|
|00003af0| 6c 75 65 20 62 61 72 2c | 20 63 6c 69 63 6b 20 77 |lue bar,| click w|
|00003b00| 69 74 68 20 6d 6f 75 73 | 65 20 74 6f 20 73 65 74 |ith mous|e to set|
|00003b10| 20 76 61 6c 75 65 0d 00 | 1f 05 f4 0d 00 20 26 ee | value..|..... &.|
|00003b20| 20 85 3a ee 20 85 20 87 | 3a 85 20 9f 2c 20 f6 24 | .:. . .|:. ., .$|
|00003b30| 2b 20 22 20 7b 22 2b 20 | c3 28 9e 29 2b 20 22 7d |+ " {"+ |.(.)+ "}|
|00003b40| 22 0d 00 21 05 3a 0d 00 | 22 37 56 61 6c 75 65 20 |"..!.:..|"7Value |
|00003b50| 3d 20 2d 31 20 20 20 20 | 20 20 20 20 20 20 20 20 |= -1 | |
|00003b60| 20 20 20 20 20 20 20 20 | 20 20 3a f4 20 30 20 3c | | :. 0 <|
|00003b70| 3d 20 56 61 6c 75 65 20 | 3c 20 31 2e 30 0d 00 23 |= Value |< 1.0..#|
|00003b80| 42 52 61 64 69 75 73 20 | 3d 20 31 32 37 2e 35 20 |BRadius |= 127.5 |
|00003b90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003ba0| 20 3a f4 20 52 61 64 69 | 75 73 20 6f 66 20 63 6f | :. Radi|us of co|
|00003bb0| 6e 65 2c 20 69 6e 20 4f | 53 20 75 6e 69 74 73 0d |ne, in O|S units.|
|00003bc0| 00 24 41 4e 25 20 3d 20 | 30 20 20 20 20 20 20 20 |.$AN% = |0 |
|00003bd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003be0| 20 20 20 3a f4 20 6d 65 | 61 73 75 72 65 20 6f 66 | :. me|asure of|
|00003bf0| 20 61 63 63 75 72 61 63 | 79 20 5b 30 2c 20 33 5d | accurac|y [0, 3]|
|00003c00| 0d 00 25 34 48 61 6c 66 | 50 69 78 65 6c 25 20 3d |..%4Half|Pixel% =|
|00003c10| 20 31 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | 1 | |
|00003c20| 20 20 20 20 3a f4 20 6d | 69 6e 28 78 2c 79 20 68 | :. m|in(x,y h|
|00003c30| 61 6c 66 29 0d 00 26 24 | 45 69 67 74 68 48 75 65 |alf)..&$|EigthHue|
|00003c40| 25 20 20 20 3d 20 28 33 | 36 30 20 2a 20 26 31 30 |% = (3|60 * &10|
|00003c50| 30 30 30 29 20 2f 20 38 | 0d 00 27 14 52 61 64 69 |000) / 8|..'.Radi|
|00003c60| 75 73 46 75 64 67 65 20 | 3d 20 31 30 0d 00 28 1e |usFudge |= 10..(.|
|00003c70| 53 65 67 6d 65 6e 74 50 | 61 72 74 73 50 65 72 46 |SegmentP|artsPerF|
|00003c80| 72 61 6d 65 25 20 3d 20 | 31 33 0d 00 29 05 3a 0d |rame% = |13..).:.|
|00003c90| 00 2a 16 de 20 58 25 28 | 38 2d 31 2c 20 33 32 2d |.*.. X%(|8-1, 32-|
|00003ca0| 31 2c 20 33 29 0d 00 2b | 16 de 20 59 25 28 38 2d |1, 3)..+|.. Y%(8-|
|00003cb0| 31 2c 20 33 32 2d 31 2c | 20 33 29 0d 00 2c 0f de |1, 32-1,| 3)..,..|
|00003cc0| 20 48 75 65 25 28 38 2d | 31 29 0d 00 2d 17 de 20 | Hue%(8-|1)..-.. |
|00003cd0| 53 61 74 75 72 61 74 69 | 6f 6e 25 28 33 32 2d 31 |Saturati|on%(32-1|
|00003ce0| 29 0d 00 2e 18 de 20 44 | 72 61 77 6e 25 28 33 32 |)..... D|rawn%(32|
|00003cf0| 2a 38 2a 38 20 2d 20 31 | 29 0d 00 2f 35 44 69 73 |*8*8 - 1|)../5Dis|
|00003d00| 70 6c 61 79 65 64 52 61 | 64 69 75 73 20 3d 20 2d |playedRa|dius = -|
|00003d10| 31 20 20 20 20 20 20 20 | 20 20 20 20 20 3a f4 20 |1 | :. |
|00003d20| 73 65 6e 74 69 6e 65 6c | 20 76 61 6c 75 65 0d 00 |sentinel| value..|
|00003d30| 30 08 ef 20 32 36 0d 00 | 31 05 87 0d 00 32 1a c8 |0.. 26..|1....2..|
|00003d40| 99 20 22 57 69 6d 70 5f | 53 65 74 43 6f 6c 6f 75 |. "Wimp_|SetColou|
|00003d50| 72 22 2c 20 31 0d 00 33 | 05 da 0d 00 34 0f c8 91 |r", 1..3|....4...|
|00003d60| 20 35 31 32 2c 20 35 31 | 32 0d 00 35 1e c8 97 20 | 512, 51|2..5... |
|00003d70| c8 93 20 2d 35 31 32 2c | 20 2d 35 31 32 2c 20 34 |.. -512,| -512, 4|
|00003d80| 30 2c 20 31 30 32 34 0d | 00 36 18 f2 5f 43 68 61 |0, 1024.|.6.._Cha|
|00003d90| 6e 67 65 5f 56 61 6c 75 | 65 28 31 2e 30 30 29 0d |nge_Valu|e(1.00).|
|00003da0| 00 37 05 f5 0d 00 38 14 | 20 20 20 c8 97 20 78 25 |.7....8.| .. x%|
|00003db0| 2c 20 79 25 2c 20 62 25 | 0d 00 39 2b 20 20 20 e7 |, y%, b%|..9+ .|
|00003dc0| 20 62 25 20 8c 20 f2 5f | 43 68 61 6e 67 65 5f 56 | b% . ._|Change_V|
|00003dd0| 61 6c 75 65 28 28 79 25 | 2b 35 31 32 29 2f 31 30 |alue((y%|+512)/10|
|00003de0| 32 34 29 0d 00 3a 09 f4 | 57 41 49 54 0d 00 3b 13 |24)..:..|WAIT..;.|
|00003df0| 20 20 20 f2 5f 55 70 64 | 61 74 65 5f 48 53 56 0d | ._Upd|ate_HSV.|
|00003e00| 00 3c 07 fd 20 a3 0d 00 | 3d 05 3a 0d 00 3e 12 dd |.<.. ...|=.:..>..|
|00003e10| 20 f2 5f 55 70 64 61 74 | 65 5f 48 53 56 0d 00 3f | ._Updat|e_HSV..?|
|00003e20| 10 ea 20 6e 25 2c 20 69 | 25 2c 20 6a 25 0d 00 40 |.. n%, i|%, j%..@|
|00003e30| 13 20 20 e7 20 4e 41 25 | 20 3d 20 30 20 8c 20 e1 |. . NA%| = 0 . .|
|00003e40| 0d 00 41 16 20 20 e7 20 | 4e 54 6f 44 72 61 77 25 |..A. . |NToDraw%|
|00003e50| 20 3d 20 30 20 8c 0d 00 | 42 14 20 20 20 20 e7 20 | = 0 ...|B. . |
|00003e60| 4e 25 20 3d 20 33 20 8c | 20 e1 0d 00 43 0f 20 20 |N% = 3 .| ...C. |
|00003e70| 20 20 4e 25 20 2b 3d 20 | 31 0d 00 44 1c 20 20 20 | N% += |1..D. |
|00003e80| 20 f2 5f 43 61 6c 63 5f | 48 53 56 5f 43 6f 6e 73 | ._Calc_|HSV_Cons|
|00003e90| 74 61 6e 74 73 0d 00 45 | 07 20 20 cd 0d 00 46 20 |tants..E|. ...F |
|00003ea0| 20 20 6e 25 20 3d 20 53 | 65 67 6d 65 6e 74 50 61 | n% = S|egmentPa|
|00003eb0| 72 74 73 50 65 72 46 72 | 61 6d 65 25 0d 00 47 25 |rtsPerFr|ame%..G%|
|00003ec0| 20 20 e7 20 6e 25 20 3e | 20 4e 54 6f 44 72 61 77 | . n% >| NToDraw|
|00003ed0| 25 20 8c 20 6e 25 20 3d | 20 4e 54 6f 44 72 61 77 |% . n% =| NToDraw|
|00003ee0| 25 0d 00 48 1c 20 20 e7 | 20 6e 25 3d 30 20 8c 20 |%..H. .| n%=0 . |
|00003ef0| 85 20 31 2c 20 22 41 53 | 53 45 52 54 22 0d 00 49 |. 1, "AS|SERT"..I|
|00003f00| 12 20 20 e3 20 69 25 3d | 20 31 20 b8 20 6e 25 0d |. . i%=| 1 . n%.|
|00003f10| 00 4a 43 20 20 20 20 6a | 25 3d 20 b3 28 4e 54 25 |.JC j|%= .(NT%|
|00003f20| 2a 4e 41 25 29 20 2d 20 | 32 20 20 20 20 20 20 20 |*NA%) - |2 |
|00003f30| 20 20 20 20 20 20 20 20 | 20 3a f4 20 6e 6f 77 20 | | :. now |
|00003f40| 69 6e 20 72 61 6e 67 65 | 20 5b 2d 31 2c 20 6e 2d |in range| [-1, n-|
|00003f50| 31 29 0d 00 4b 09 20 20 | 20 20 f5 0d 00 4c 11 20 |1)..K. | ...L. |
|00003f60| 20 20 20 20 20 6a 25 20 | 2b 3d 20 31 0d 00 4d 27 | j% |+= 1..M'|
|00003f70| 20 20 20 20 fd 20 6a 25 | 3d 28 4e 54 25 2a 4e 41 | . j%|=(NT%*NA|
|00003f80| 25 2d 31 29 20 84 20 ac | 20 44 72 61 77 6e 25 28 |%-1) . .| Drawn%(|
|00003f90| 6a 25 29 0d 00 4e 16 20 | 20 20 20 e7 20 44 72 61 |j%)..N. | . Dra|
|00003fa0| 77 6e 25 28 6a 25 29 20 | 8c 0d 00 4f 24 20 20 20 |wn%(j%) |...O$ |
|00003fb0| 20 20 20 6a 25 3d 30 3a | c8 95 20 44 72 61 77 6e | j%=0:|.. Drawn|
|00003fc0| 25 28 6a 25 29 3a 6a 25 | 2b 3d 31 3a ce 0d 00 50 |%(j%):j%|+=1:...P|
|00003fd0| 27 20 20 20 20 20 20 e7 | 20 6a 25 3e 3d 4e 54 25 |' .| j%>=NT%|
|00003fe0| 2a 4e 41 25 20 8c 20 85 | 20 31 2c 20 22 41 53 53 |*NA% . .| 1, "ASS|
|00003ff0| 45 52 54 22 0d 00 51 09 | 20 20 20 20 cd 0d 00 52 |ERT"..Q.| ...R|
|00004000| 2e 20 20 20 20 f2 5f 44 | 72 61 77 5f 53 65 67 6d |. ._D|raw_Segm|
|00004010| 65 6e 74 50 61 72 74 28 | 6a 25 20 81 20 4e 54 25 |entPart(|j% . NT%|
|00004020| 2c 20 6a 25 20 83 20 4e | 54 25 29 0d 00 53 16 20 |, j% . N|T%)..S. |
|00004030| 20 20 20 44 72 61 77 6e | 25 28 6a 25 29 20 3d 20 | Drawn|%(j%) = |
|00004040| b9 0d 00 54 0a 20 20 ed | 20 69 25 0d 00 55 14 20 |...T. .| i%..U. |
|00004050| 20 4e 54 6f 44 72 61 77 | 25 20 2d 3d 20 6e 25 0d | NToDraw|% -= n%.|
|00004060| 00 56 05 e1 0d 00 57 09 | 3a 20 20 20 20 0d 00 58 |.V....W.|: ..X|
|00004070| 17 dd 20 f2 5f 43 68 61 | 6e 67 65 5f 56 61 6c 75 |.. ._Cha|nge_Valu|
|00004080| 65 28 76 29 0d 00 59 2c | ea 20 76 25 2c 20 63 25 |e(v)..Y,|. v%, c%|
|00004090| 2c 20 78 30 2c 20 78 31 | 2c 20 78 32 2c 20 78 33 |, x0, x1|, x2, x3|
|000040a0| 2c 20 79 30 2c 20 79 31 | 2c 20 79 32 2c 20 79 33 |, y0, y1|, y2, y3|
|000040b0| 0d 00 5a 13 20 20 e7 20 | 56 61 6c 75 65 3d 76 20 |..Z. . |Value=v |
|000040c0| 8c 20 e1 0d 00 5b 0f 20 | 20 56 61 6c 75 65 20 3d |. ...[. | Value =|
|000040d0| 20 76 0d 00 5c 1d 20 20 | c8 99 20 22 57 69 6d 70 | v..\. |.. "Wimp|
|000040e0| 5f 53 65 74 43 6f 6c 6f | 75 72 22 2c 20 31 32 0d |_SetColo|ur", 12.|
|000040f0| 00 5d 17 20 20 76 25 20 | 3d 20 56 61 6c 75 65 20 |.]. v% |= Value |
|00004100| 2a 20 31 30 32 34 0d 00 | 5e 1e 20 20 c8 93 20 c8 |* 1024..|^. .. .|
|00004110| 90 20 2d 35 31 32 2c 20 | 2d 35 31 32 2c 20 34 30 |. -512, |-512, 40|
|00004120| 2c 20 76 25 0d 00 5f 1d | 20 20 c8 99 20 22 57 69 |, v%.._.| .. "Wi|
|00004130| 6d 70 5f 53 65 74 43 6f | 6c 6f 75 72 22 2c 20 31 |mp_SetCo|lour", 1|
|00004140| 31 0d 00 60 23 20 20 c8 | 93 20 c8 90 20 2d 35 31 |1..`# .|. .. -51|
|00004150| 32 2c 20 2d 35 31 32 2b | 76 25 2c 20 34 30 2c 20 |2, -512+|v%, 40, |
|00004160| 31 30 32 34 0d 00 61 18 | 20 20 52 20 3d 20 52 61 |1024..a.| R = Ra|
|00004170| 64 69 75 73 20 2a 20 56 | 61 6c 75 65 0d 00 62 47 |dius * V|alue..bG|
|00004180| 20 20 4e 25 20 3d 20 30 | 20 20 20 20 20 20 20 20 | N% = 0| |
|00004190| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000041a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000041b0| 3a f4 20 73 74 61 72 74 | 20 6f 66 66 20 63 6f 61 |:. start| off coa|
|000041c0| 72 73 65 0d 00 63 1a 20 | 20 f2 5f 43 61 6c 63 5f |rse..c. | ._Calc_|
|000041d0| 48 53 56 5f 43 6f 6e 73 | 74 61 6e 74 73 0d 00 64 |HSV_Cons|tants..d|
|000041e0| 1d 20 20 e7 20 44 69 73 | 70 6c 61 79 65 64 52 61 |. . Dis|playedRa|
|000041f0| 64 69 75 73 20 3e 20 52 | 20 8c 0d 00 65 28 20 20 |dius > R| ...e( |
|00004200| 20 20 f4 20 6e 6f 77 20 | 6d 75 73 74 20 69 6d 6d | . now |must imm|
|00004210| 65 64 69 61 74 65 6c 79 | 20 62 6c 61 6e 6b 20 6f |ediately| blank o|
|00004220| 75 74 0d 00 66 1e 20 20 | 20 20 c8 99 20 22 57 69 |ut..f. | .. "Wi|
|00004230| 6d 70 5f 53 65 74 43 6f | 6c 6f 75 72 22 2c 20 31 |mp_SetCo|lour", 1|
|00004240| 0d 00 67 14 20 20 20 20 | e7 20 4e 41 25 20 3e 3d |..g. |. NA% >=|
|00004250| 20 31 20 8c 0d 00 68 28 | 20 20 20 20 20 20 78 30 | 1 ...h(| x0|
|00004260| 20 3d 20 52 20 20 20 20 | 20 20 20 20 20 20 20 20 | = R | |
|00004270| 20 20 20 20 3a 20 79 30 | 20 3d 20 30 0d 00 69 28 | : y0| = 0..i(|
|00004280| 20 20 20 20 20 20 78 31 | 20 3d 20 44 69 73 70 6c | x1| = Displ|
|00004290| 61 79 65 64 52 61 64 69 | 75 73 20 20 3a 20 79 31 |ayedRadi|us : y1|
|000042a0| 20 3d 20 30 0d 00 6a 16 | 20 20 20 20 20 20 e3 20 | = 0..j.| . |
|000042b0| 74 25 3d 20 31 20 b8 20 | 31 35 0d 00 6b 1b 20 20 |t%= 1 . |15..k. |
|000042c0| 20 20 20 20 20 20 74 20 | 3d 20 32 2a af 2a 28 74 | t |= 2*.*(t|
|000042d0| 25 2f 31 35 29 0d 00 6c | 16 20 20 20 20 20 20 20 |%/15)..l|. |
|000042e0| 20 63 6f 73 20 3d 20 9b | 28 74 29 0d 00 6d 16 20 | cos = .|(t)..m. |
|000042f0| 20 20 20 20 20 20 20 73 | 69 6e 20 3d 20 b5 28 74 | s|in = .(t|
|00004300| 29 0d 00 6e 31 20 20 20 | 20 20 20 20 20 78 32 20 |)..n1 | x2 |
|00004310| 3d 20 52 2a 63 6f 73 20 | 20 20 20 20 20 20 20 20 |= R*cos | |
|00004320| 20 20 20 20 20 20 3a 20 | 79 32 20 3d 20 52 2a 73 | : |y2 = R*s|
|00004330| 69 6e 0d 00 6f 3f 20 20 | 20 20 20 20 20 20 78 33 |in..o? | x3|
|00004340| 20 3d 20 44 69 73 70 6c | 61 79 65 64 52 61 64 69 | = Displ|ayedRadi|
|00004350| 75 73 2a 63 6f 73 20 3a | 20 79 33 20 3d 20 44 69 |us*cos :| y3 = Di|
|00004360| 73 70 6c 61 79 65 64 52 | 61 64 69 75 73 2a 73 69 |splayedR|adius*si|
|00004370| 6e 0d 00 70 14 20 20 20 | 20 20 20 20 20 ec 20 78 |n..p. | . x|
|00004380| 30 2c 20 79 30 0d 00 71 | 14 20 20 20 20 20 20 20 |0, y0..q|. |
|00004390| 20 ec 20 78 31 2c 20 79 | 31 0d 00 72 19 20 20 20 | . x1, y|1..r. |
|000043a0| 20 20 20 20 20 f0 20 26 | 35 35 2c 20 78 32 2c 20 | . &|55, x2, |
|000043b0| 79 32 0d 00 73 14 20 20 | 20 20 20 20 20 20 ec 20 |y2..s. | . |
|000043c0| 78 33 2c 20 79 33 0d 00 | 74 19 20 20 20 20 20 20 |x3, y3..|t. |
|000043d0| 20 20 f0 20 26 35 35 2c | 20 78 31 2c 20 79 31 0d | . &55,| x1, y1.|
|000043e0| 00 75 1d 20 20 20 20 20 | 20 20 20 78 30 20 3d 20 |.u. | x0 = |
|000043f0| 78 32 20 3a 20 79 30 20 | 3d 20 79 32 0d 00 76 1d |x2 : y0 |= y2..v.|
|00004400| 20 20 20 20 20 20 20 20 | 78 31 20 3d 20 78 33 20 | |x1 = x3 |
|00004410| 3a 20 79 31 20 3d 20 79 | 33 0d 00 77 0e 20 20 20 |: y1 = y|3..w. |
|00004420| 20 20 20 ed 20 74 25 0d | 00 78 09 20 20 20 20 cc | . t%.|.x. .|
|00004430| 0d 00 79 25 20 20 20 20 | 20 20 c8 8f 20 c8 90 20 |..y% | .. .. |
|00004440| 30 2c 20 30 2c 20 44 69 | 73 70 6c 61 79 65 64 52 |0, 0, Di|splayedR|
|00004450| 61 64 69 75 73 0d 00 7a | 09 20 20 20 20 cd 0d 00 |adius..z|. ...|
|00004460| 7b 07 20 20 cd 0d 00 7c | 37 20 20 3a f4 20 64 72 |{. ...||7 :. dr|
|00004470| 61 77 20 67 72 65 79 20 | 63 65 6e 74 65 72 20 6f |aw grey |center o|
|00004480| 66 20 63 6f 6e 65 20 28 | 67 72 65 79 6e 65 73 73 |f cone (|greyness|
|00004490| 20 69 73 20 22 76 61 6c | 75 65 22 29 0d 00 7d 1c | is "val|ue")..}.|
|000044a0| 20 20 63 25 20 3d 20 28 | 56 61 6c 75 65 2a 32 35 | c% = (|Value*25|
|000044b0| 35 29 20 2b 20 30 2e 35 | 0d 00 7e 3c 20 20 c8 99 |5) + 0.5|..~< ..|
|000044c0| 20 22 43 6f 6c 6f 75 72 | 54 72 61 6e 73 5f 53 65 | "Colour|Trans_Se|
|000044d0| 74 47 43 4f 4c 22 2c 20 | 28 63 25 20 2a 20 26 30 |tGCOL", |(c% * &0|
|000044e0| 31 30 31 30 31 29 20 3c | 3c 20 38 2c 2c 2c 26 31 |10101) <|< 8,,,&1|
|000044f0| 30 30 2c 30 0d 00 7f 1d | 20 20 c8 8f 20 c8 90 20 |00,0....| .. .. |
|00004500| 30 2c 20 30 2c 20 52 20 | 2d 20 44 52 25 2a 4e 41 |0, 0, R |- DR%*NA|
|00004510| 25 0d 00 80 27 20 20 44 | 69 73 70 6c 61 79 65 64 |%...' D|isplayed|
|00004520| 52 61 64 69 75 73 20 3d | 20 52 20 2b 20 52 61 64 |Radius =| R + Rad|
|00004530| 69 75 73 46 75 64 67 65 | 0d 00 81 05 e1 0d 00 82 |iusFudge|........|
|00004540| 05 3a 0d 00 83 1a dd 20 | f2 5f 43 61 6c 63 5f 48 |.:..... |._Calc_H|
|00004550| 53 56 5f 43 6f 6e 73 74 | 61 6e 74 73 0d 00 84 41 |SV_Const|ants...A|
|00004560| 20 20 4f 54 25 20 3d 20 | 31 20 3c 3c 20 4e 25 20 | OT% = |1 << N% |
|00004570| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004580| 20 20 3a f4 20 23 64 69 | 76 69 73 69 6f 6e 73 20 | :. #di|visions |
|00004590| 69 6e 20 6f 6e 65 20 6f | 63 74 61 6e 74 0d 00 85 |in one o|ctant...|
|000045a0| 43 20 20 4e 54 25 20 3d | 20 38 20 2a 20 4f 54 25 |C NT% =| 8 * OT%|
|000045b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000045c0| 20 20 20 3a f4 20 23 64 | 69 76 69 73 69 6f 6e 73 | :. #d|ivisions|
|000045d0| 20 69 6e 20 77 68 6f 6c | 65 20 63 69 72 63 6c 65 | in whol|e circle|
|000045e0| 0d 00 86 3a 20 20 44 52 | 25 20 3d 20 33 32 20 81 |...: DR|% = 32 .|
|000045f0| 20 4f 54 25 20 20 20 20 | 20 20 20 20 20 20 20 20 | OT% | |
|00004600| 20 20 20 20 3a f4 20 73 | 69 7a 65 20 6f 66 20 65 | :. s|ize of e|
|00004610| 61 63 68 20 61 6e 6e 75 | 6c 69 0d 00 87 3a 20 20 |ach annu|li...: |
|00004620| 4e 41 25 20 3d 20 a4 66 | 6c 6f 6f 72 28 52 2c 20 |NA% = .f|loor(R, |
|00004630| 44 52 25 29 20 20 20 20 | 20 20 20 20 20 20 20 3a |DR%) | :|
|00004640| f4 20 23 61 6e 6e 75 6c | 69 20 28 63 6f 6d 70 6c |. #annul|i (compl|
|00004650| 65 74 65 29 0d 00 88 20 | 20 20 e7 20 4e 41 25 20 |ete)... | . NA% |
|00004660| 3e 3d 20 31 20 8c 20 f2 | 5f 43 61 6c 63 5f 4f 63 |>= 1 . .|_Calc_Oc|
|00004670| 74 61 6e 74 0d 00 89 05 | e1 0d 00 8a 05 3a 0d 00 |tant....|.....:..|
|00004680| 8b 04 0d 00 8c 13 dd 20 | f2 5f 43 61 6c 63 5f 4f |....... |._Calc_O|
|00004690| 63 74 61 6e 74 0d 00 8d | 1f ea 20 61 25 2c 20 74 |ctant...|.. a%, t|
|000046a0| 25 2c 20 61 2c 20 63 6f | 73 2c 20 72 2c 20 73 69 |%, a, co|s, r, si|
|000046b0| 6e 2c 20 74 0d 00 8e 15 | 20 20 e3 20 61 25 3d 20 |n, t....| . a%= |
|000046c0| 30 20 b8 20 4e 41 25 2d | 31 0d 00 8f 2c 20 20 20 |0 . NA%-|1..., |
|000046d0| 20 3a f4 20 67 65 74 20 | 72 61 64 69 75 73 20 6f | :. get |radius o|
|000046e0| 66 20 6d 69 64 64 6c 65 | 20 6f 66 20 61 6e 6e 75 |f middle| of annu|
|000046f0| 6c 69 20 61 25 0d 00 90 | 28 20 20 20 20 72 20 3d |li a%...|( r =|
|00004700| 20 28 52 20 2d 20 28 61 | 25 20 2a 20 44 52 25 29 | (R - (a|% * DR%)|
|00004710| 29 20 2d 20 28 44 52 25 | 20 2f 20 32 29 0d 00 91 |) - (DR%| / 2)...|
|00004720| 32 20 20 20 20 53 61 74 | 75 72 61 74 69 6f 6e 25 |2 Sat|uration%|
|00004730| 28 61 25 29 20 3d 20 28 | 28 72 20 2f 20 52 29 20 |(a%) = (|(r / R) |
|00004740| 2a 20 26 31 30 30 30 30 | 29 20 2b 20 30 2e 35 0d |* &10000|) + 0.5.|
|00004750| 00 92 0a 20 20 ed 20 61 | 25 0d 00 93 04 0d 00 94 |... . a|%.......|
|00004760| 15 20 20 e3 20 74 25 3d | 20 30 20 b8 20 4f 54 25 |. . t%=| 0 . OT%|
|00004770| 2d 31 0d 00 95 35 20 20 | 20 20 3a f4 20 61 6e 67 |-1...5 | :. ang|
|00004780| 6c 65 20 69 6e 20 6d 69 | 64 64 6c 65 20 6f 66 20 |le in mi|ddle of |
|00004790| 73 65 67 6d 65 6e 74 20 | 69 6e 20 72 61 6e 67 65 |segment |in range|
|000047a0| 20 28 30 2c 20 31 29 0d | 00 96 1c 20 20 20 20 74 | (0, 1).|... t|
|000047b0| 20 3d 20 28 74 25 20 2b | 20 30 2e 35 29 20 2f 20 | = (t% +| 0.5) / |
|000047c0| 4f 54 25 0d 00 97 31 20 | 20 20 20 48 75 65 25 28 |OT%...1 | Hue%(|
|000047d0| 74 25 29 20 3d 20 28 33 | 36 30 20 2a 20 26 31 30 |t%) = (3|60 * &10|
|000047e0| 30 30 30 20 2a 20 28 74 | 20 2f 20 38 29 29 20 2b |000 * (t| / 8)) +|
|000047f0| 20 30 2e 35 0d 00 98 0a | 20 20 ed 20 74 25 0d 00 | 0.5....| . t%..|
|00004800| 99 04 0d 00 9a 25 20 20 | 56 61 6c 75 65 25 20 3d |.....% |Value% =|
|00004810| 20 28 56 61 6c 75 65 20 | 2a 20 26 31 30 30 30 30 | (Value |* &10000|
|00004820| 29 20 2b 20 30 2e 35 0d | 00 9b 04 0d 00 9c 1f 20 |) + 0.5.|....... |
|00004830| 20 64 65 6c 74 61 20 3d | 20 98 28 48 61 6c 66 50 | delta =| .(HalfP|
|00004840| 69 78 65 6c 25 20 2f 20 | 52 29 0d 00 9d 15 20 20 |ixel% / |R).... |
|00004850| e3 20 74 25 3d 20 30 20 | b8 20 4f 54 25 2d 31 0d |. t%= 0 |. OT%-1.|
|00004860| 00 9e 1f 20 20 20 20 3a | f4 20 61 6e 67 6c 65 73 |... :|. angles|
|00004870| 20 7b 30 2c 20 2e 2e 2c | 20 50 49 2f 34 7d 0d 00 | {0, ..,| PI/4}..|
|00004880| 9f 21 20 20 20 20 74 6d | 69 6e 20 3d 20 28 af 2f |.! tm|in = (./|
|00004890| 34 29 20 2a 20 28 74 25 | 20 2f 20 4f 54 25 29 0d |4) * (t%| / OT%).|
|000048a0| 00 a0 23 20 20 20 20 74 | 6d 61 78 20 3d 20 74 6d |..# t|max = tm|
|000048b0| 69 6e 20 2b 20 28 28 af | 2f 34 29 20 2f 20 4f 54 |in + ((.|/4) / OT|
|000048c0| 25 29 0d 00 a1 18 20 20 | 20 20 63 6f 73 6d 69 6e |%).... | cosmin|
|000048d0| 20 3d 20 9b 28 74 6d 69 | 6e 29 0d 00 a2 18 20 20 | = .(tmi|n).... |
|000048e0| 20 20 73 69 6e 6d 69 6e | 20 3d 20 b5 28 74 6d 69 | sinmin| = .(tmi|
|000048f0| 6e 29 0d 00 a3 18 20 20 | 20 20 63 6f 73 6d 61 78 |n).... | cosmax|
|00004900| 20 3d 20 9b 28 74 6d 61 | 78 29 0d 00 a4 18 20 20 | = .(tma|x).... |
|00004910| 20 20 73 69 6e 6d 61 78 | 20 3d 20 b5 28 74 6d 61 | sinmax| = .(tma|
|00004920| 78 29 0d 00 a5 17 20 20 | 20 20 e3 20 61 25 3d 20 |x).... | . a%= |
|00004930| 30 20 b8 20 4e 41 25 2d | 31 0d 00 a6 1f 20 20 20 |0 . NA%-|1.... |
|00004940| 20 20 20 72 6d 61 78 20 | 3d 20 52 20 2d 20 28 61 | rmax |= R - (a|
|00004950| 25 20 2a 20 44 52 25 29 | 0d 00 a7 1b 20 20 20 20 |% * DR%)|.... |
|00004960| 20 20 72 6d 69 6e 20 3d | 20 72 6d 61 78 20 2d 20 | rmin =| rmax - |
|00004970| 44 52 25 0d 00 a8 2f 20 | 20 20 20 20 20 58 25 28 |DR%.../ | X%(|
|00004980| 74 25 2c 20 61 25 2c 20 | 30 29 20 3d 20 a4 72 6f |t%, a%, |0) = .ro|
|00004990| 75 6e 64 75 70 28 72 6d | 69 6e 2a 63 6f 73 6d 69 |undup(rm|in*cosmi|
|000049a0| 6e 29 0d 00 a9 2f 20 20 | 20 20 20 20 59 25 28 74 |n).../ | Y%(t|
|000049b0| 25 2c 20 61 25 2c 20 30 | 29 20 3d 20 a4 72 6f 75 |%, a%, 0|) = .rou|
|000049c0| 6e 64 75 70 28 72 6d 69 | 6e 2a 73 69 6e 6d 69 6e |ndup(rmi|n*sinmin|
|000049d0| 29 0d 00 aa 2f 20 20 20 | 20 20 20 58 25 28 74 25 |).../ | X%(t%|
|000049e0| 2c 20 61 25 2c 20 31 29 | 20 3d 20 a4 72 6f 75 6e |, a%, 1)| = .roun|
|000049f0| 64 75 70 28 72 6d 61 78 | 2a 63 6f 73 6d 69 6e 29 |dup(rmax|*cosmin)|
|00004a00| 0d 00 ab 2f 20 20 20 20 | 20 20 59 25 28 74 25 2c |.../ | Y%(t%,|
|00004a10| 20 61 25 2c 20 31 29 20 | 3d 20 a4 72 6f 75 6e 64 | a%, 1) |= .round|
|00004a20| 75 70 28 72 6d 61 78 2a | 73 69 6e 6d 69 6e 29 0d |up(rmax*|sinmin).|
|00004a30| 00 ac 2f 20 20 20 20 20 | 20 58 25 28 74 25 2c 20 |../ | X%(t%, |
|00004a40| 61 25 2c 20 32 29 20 3d | 20 a4 72 6f 75 6e 64 75 |a%, 2) =| .roundu|
|00004a50| 70 28 72 6d 61 78 2a 63 | 6f 73 6d 61 78 29 0d 00 |p(rmax*c|osmax)..|
|00004a60| ad 2f 20 20 20 20 20 20 | 59 25 28 74 25 2c 20 61 |./ |Y%(t%, a|
|00004a70| 25 2c 20 32 29 20 3d 20 | a4 72 6f 75 6e 64 75 70 |%, 2) = |.roundup|
|00004a80| 28 72 6d 61 78 2a 73 69 | 6e 6d 61 78 29 0d 00 ae |(rmax*si|nmax)...|
|00004a90| 2f 20 20 20 20 20 20 58 | 25 28 74 25 2c 20 61 25 |/ X|%(t%, a%|
|00004aa0| 2c 20 33 29 20 3d 20 a4 | 72 6f 75 6e 64 75 70 28 |, 3) = .|roundup(|
|00004ab0| 72 6d 69 6e 2a 63 6f 73 | 6d 61 78 29 0d 00 af 2f |rmin*cos|max).../|
|00004ac0| 20 20 20 20 20 20 59 25 | 28 74 25 2c 20 61 25 2c | Y%|(t%, a%,|
|00004ad0| 20 33 29 20 3d 20 a4 72 | 6f 75 6e 64 75 70 28 72 | 3) = .r|oundup(r|
|00004ae0| 6d 69 6e 2a 73 69 6e 6d | 61 78 29 0d 00 b0 0c 20 |min*sinm|ax).... |
|00004af0| 20 20 20 ed 20 61 25 0d | 00 b1 0a 20 20 ed 20 74 | . a%.|... . t|
|00004b00| 25 0d 00 b2 12 20 20 44 | 72 61 77 6e 25 28 29 20 |%.... D|rawn%() |
|00004b10| 3d 20 a3 0d 00 b3 1a 20 | 20 4e 54 6f 44 72 61 77 |= ..... | NToDraw|
|00004b20| 25 20 3d 20 4e 54 25 20 | 2a 20 4e 41 25 0d 00 b4 |% = NT% |* NA%...|
|00004b30| 05 e1 0d 00 b5 05 3a 0d | 00 b6 16 f4 20 5b 2d 31 |......:.|.... [-1|
|00004b40| 20 2e 2e 20 2b 31 29 20 | 2d 2d 3e 20 30 0d 00 b7 | .. +1) |--> 0...|
|00004b50| 0f dd 20 a4 72 6f 75 6e | 64 28 78 29 0d 00 b8 1a |.. .roun|d(x)....|
|00004b60| 3d 20 a8 28 28 78 20 2f | 20 32 29 20 2b 20 30 2e |= .((x /| 2) + 0.|
|00004b70| 35 29 20 2a 20 32 0d 00 | b9 05 3a 0d 00 ba 11 dd |5) * 2..|..:.....|
|00004b80| 20 a4 72 6f 75 6e 64 75 | 70 28 78 29 0d 00 bb 18 | .roundu|p(x)....|
|00004b90| 3d 20 32 20 2a 20 a4 63 | 65 69 6c 69 6e 67 28 78 |= 2 * .c|eiling(x|
|00004ba0| 2c 20 32 29 0d 00 bc 05 | 3a 0d 00 bd 13 dd 20 a4 |, 2)....|:..... .|
|00004bb0| 72 6f 75 6e 64 64 6f 77 | 6e 28 78 29 0d 00 be 16 |rounddow|n(x)....|
|00004bc0| 3d 20 32 20 2a 20 a4 66 | 6c 6f 6f 72 28 78 2c 20 |= 2 * .f|loor(x, |
|00004bd0| 32 29 0d 00 bf 05 3a 0d | 00 c0 51 f4 20 7e 7e 7e |2)....:.|..Q. ~~~|
|00004be0| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00004bf0| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00004c00| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00004c10| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00004c20| 7e 7e 7e 7e 7e 7e 7e 7e | 0d 00 c1 29 f4 20 69 6e |~~~~~~~~|...). in|
|00004c30| 74 65 67 65 72 20 72 6f | 75 6e 64 20 78 2f 79 20 |teger ro|und x/y |
|00004c40| 74 6f 77 61 72 64 73 20 | 2b 69 6e 66 69 6e 69 74 |towards |+infinit|
|00004c50| 79 0d 00 c2 05 f4 0d 00 | c3 14 dd 20 a4 63 65 69 |y.......|... .cei|
|00004c60| 6c 69 6e 67 28 78 2c 20 | 79 29 0d 00 c4 12 20 20 |ling(x, |y).... |
|00004c70| e7 20 b4 78 20 3c 3e 20 | b4 79 20 8c 0d 00 c5 11 |. .x <> |.y .....|
|00004c80| 20 20 20 20 78 20 3d 20 | 78 20 2f 20 79 0d 00 c6 | x = |x / y...|
|00004c90| 07 20 20 cc 0d 00 c7 13 | 20 20 20 20 78 20 3d 20 |. .....| x = |
|00004ca0| 94 78 20 2f 20 94 79 0d | 00 c8 07 20 20 cd 0d 00 |.x / .y.|... ...|
|00004cb0| c9 11 20 20 e7 20 78 20 | 3c 3e 20 a8 78 20 8c 0d |.. . x |<> .x ..|
|00004cc0| 00 ca 13 20 20 20 20 78 | 20 3d 20 31 20 2b 20 a8 |... x| = 1 + .|
|00004cd0| 20 78 0d 00 cb 07 20 20 | cd 0d 00 cc 07 3d 20 78 | x.... |.....= x|
|00004ce0| 0d 00 cd 05 3a 0d 00 ce | 51 f4 20 7e 7e 7e 7e 7e |....:...|Q. ~~~~~|
|00004cf0| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00004d00| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00004d10| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00004d20| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00004d30| 7e 7e 7e 7e 7e 7e 0d 00 | cf 29 f4 20 69 6e 74 65 |~~~~~~..|.). inte|
|00004d40| 67 65 72 20 72 6f 75 6e | 64 20 78 2f 79 20 74 6f |ger roun|d x/y to|
|00004d50| 77 61 72 64 73 20 2d 69 | 6e 66 69 6e 69 74 79 0d |wards -i|nfinity.|
|00004d60| 00 d0 05 f4 0d 00 d1 12 | dd 20 a4 66 6c 6f 6f 72 |........|. .floor|
|00004d70| 28 78 2c 20 79 29 0d 00 | d2 12 20 20 e7 20 b4 78 |(x, y)..|.. . .x|
|00004d80| 20 3c 3e 20 b4 79 20 8c | 0d 00 d3 14 20 20 20 20 | <> .y .|.... |
|00004d90| 78 20 3d 20 2d 94 78 20 | 2f 20 94 79 0d 00 d4 07 |x = -.x |/ .y....|
|00004da0| 20 20 cc 0d 00 d5 11 20 | 20 20 20 78 20 3d 20 78 | ..... | x = x|
|00004db0| 20 2f 20 79 0d 00 d6 07 | 20 20 cd 0d 00 d7 09 3d | / y....| .....=|
|00004dc0| 20 a8 20 78 0d 00 d8 05 | 3a 0d 00 d9 20 dd 20 f2 | . x....|:... . .|
|00004dd0| 5f 44 72 61 77 5f 53 65 | 67 6d 65 6e 74 50 61 72 |_Draw_Se|gmentPar|
|00004de0| 74 28 61 25 2c 20 74 25 | 29 0d 00 da 39 ea 20 78 |t(a%, t%|)...9. x|
|00004df0| 30 25 2c 78 31 25 2c 78 | 32 25 2c 78 33 25 2c 20 |0%,x1%,x|2%,x3%, |
|00004e00| 79 30 25 2c 79 31 25 2c | 79 32 25 2c 79 33 25 2c |y0%,y1%,|y2%,y3%,|
|00004e10| 20 68 75 65 25 2c 20 73 | 61 74 75 72 61 74 69 6f | hue%, s|aturatio|
|00004e20| 6e 25 0d 00 db 32 20 20 | f2 5f 44 72 61 77 5f 53 |n%...2 |._Draw_S|
|00004e30| 65 67 6d 65 6e 74 50 61 | 72 74 5f 50 6f 69 6e 74 |egmentPa|rt_Point|
|00004e40| 28 78 30 25 2c 79 30 25 | 2c 20 61 25 2c 20 74 25 |(x0%,y0%|, a%, t%|
|00004e50| 2c 20 30 29 0d 00 dc 32 | 20 20 f2 5f 44 72 61 77 |, 0)...2| ._Draw|
|00004e60| 5f 53 65 67 6d 65 6e 74 | 50 61 72 74 5f 50 6f 69 |_Segment|Part_Poi|
|00004e70| 6e 74 28 78 31 25 2c 79 | 31 25 2c 20 61 25 2c 20 |nt(x1%,y|1%, a%, |
|00004e80| 74 25 2c 20 31 29 0d 00 | dd 32 20 20 f2 5f 44 72 |t%, 1)..|.2 ._Dr|
|00004e90| 61 77 5f 53 65 67 6d 65 | 6e 74 50 61 72 74 5f 50 |aw_Segme|ntPart_P|
|00004ea0| 6f 69 6e 74 28 78 32 25 | 2c 79 32 25 2c 20 61 25 |oint(x2%|,y2%, a%|
|00004eb0| 2c 20 74 25 2c 20 32 29 | 0d 00 de 32 20 20 f2 5f |, t%, 2)|...2 ._|
|00004ec0| 44 72 61 77 5f 53 65 67 | 6d 65 6e 74 50 61 72 74 |Draw_Seg|mentPart|
|00004ed0| 5f 50 6f 69 6e 74 28 78 | 33 25 2c 79 33 25 2c 20 |_Point(x|3%,y3%, |
|00004ee0| 61 25 2c 20 74 25 2c 20 | 33 29 0d 00 df 36 20 20 |a%, t%, |3)...6 |
|00004ef0| 68 75 65 25 20 3d 20 48 | 75 65 25 28 74 25 20 83 |hue% = H|ue%(t% .|
|00004f00| 20 4f 54 25 29 20 2b 20 | 28 28 74 25 20 81 20 4f | OT%) + |((t% . O|
|00004f10| 54 25 29 20 2a 20 45 69 | 67 74 68 48 75 65 25 29 |T%) * Ei|gthHue%)|
|00004f20| 0d 00 e0 2a 20 20 e7 20 | 68 75 65 25 20 3e 3d 20 |...* . |hue% >= |
|00004f30| 33 36 30 2a 26 31 30 30 | 30 30 20 8c 20 85 20 31 |360*&100|00 . . 1|
|00004f40| 2c 20 22 41 53 53 45 52 | 54 22 0d 00 e1 21 20 20 |, "ASSER|T"...! |
|00004f50| e7 20 68 75 65 25 20 3c | 3d 20 30 20 8c 20 85 20 |. hue% <|= 0 . . |
|00004f60| 31 2c 20 22 41 53 53 45 | 52 54 22 0d 00 e2 23 20 |1, "ASSE|RT"...# |
|00004f70| 20 73 61 74 75 72 61 74 | 69 6f 6e 25 20 3d 20 53 | saturat|ion% = S|
|00004f80| 61 74 75 72 61 74 69 6f | 6e 25 28 61 25 29 0d 00 |aturatio|n%(a%)..|
|00004f90| e3 57 20 20 c8 99 20 22 | 43 6f 6c 6f 75 72 54 72 |.W .. "|ColourTr|
|00004fa0| 61 6e 73 5f 43 6f 6e 76 | 65 72 74 48 53 56 54 6f |ans_Conv|ertHSVTo|
|00004fb0| 52 47 42 22 2c 20 68 75 | 65 25 2c 20 73 61 74 75 |RGB", hu|e%, satu|
|00004fc0| 72 61 74 69 6f 6e 25 2c | 20 56 61 6c 75 65 25 20 |ration%,| Value% |
|00004fd0| b8 20 72 65 64 25 2c 20 | 67 72 65 65 6e 25 2c 20 |. red%, |green%, |
|00004fe0| 62 6c 75 65 25 0d 00 e4 | 1e 20 20 72 65 64 25 20 |blue%...|. red% |
|00004ff0| 20 20 3d 20 a4 72 67 62 | 28 72 65 64 25 29 20 3c | = .rgb|(red%) <|
|00005000| 3c 20 38 0d 00 e5 21 20 | 20 67 72 65 65 6e 25 20 |< 8...! | green% |
|00005010| 3d 20 a4 72 67 62 28 67 | 72 65 65 6e 25 29 20 3c |= .rgb(g|reen%) <|
|00005020| 3c 20 31 36 0d 00 e6 20 | 20 20 62 6c 75 65 25 20 |< 16... | blue% |
|00005030| 20 3d 20 a4 72 67 62 28 | 62 6c 75 65 25 29 20 3c | = .rgb(|blue%) <|
|00005040| 3c 20 32 34 0d 00 e7 40 | 20 20 c8 99 20 22 43 6f |< 24...@| .. "Co|
|00005050| 6c 6f 75 72 54 72 61 6e | 73 5f 53 65 74 47 43 4f |lourTran|s_SetGCO|
|00005060| 4c 22 2c 20 72 65 64 25 | 20 84 20 67 72 65 65 6e |L", red%| . green|
|00005070| 25 20 84 20 62 6c 75 65 | 25 2c 2c 2c 20 26 31 30 |% . blue|%,,, &10|
|00005080| 30 2c 20 30 0d 00 e8 11 | 20 20 20 ec 20 78 30 25 |0, 0....| . x0%|
|00005090| 2c 20 79 30 25 0d 00 e9 | 11 20 20 20 ec 20 78 31 |, y0%...|. . x1|
|000050a0| 25 2c 20 79 31 25 0d 00 | ea 16 20 20 20 f0 20 26 |%, y1%..|.. . &|
|000050b0| 35 35 2c 20 78 32 25 2c | 20 79 32 25 0d 00 eb 11 |55, x2%,| y2%....|
|000050c0| 20 20 20 ec 20 78 33 25 | 2c 20 79 33 25 0d 00 ec | . x3%|, y3%...|
|000050d0| 16 20 20 20 f0 20 26 35 | 35 2c 20 78 30 25 2c 20 |. . &5|5, x0%, |
|000050e0| 79 30 25 0d 00 ed 15 f4 | 20 20 20 4d 4f 56 45 20 |y0%.....| MOVE |
|000050f0| 78 30 25 2c 20 79 30 25 | 0d 00 ee 15 f4 20 20 20 |x0%, y0%|..... |
|00005100| 44 52 41 57 20 78 31 25 | 2c 20 79 31 25 0d 00 ef |DRAW x1%|, y1%...|
|00005110| 15 f4 20 20 20 44 52 41 | 57 20 78 32 25 2c 20 79 |.. DRA|W x2%, y|
|00005120| 32 25 0d 00 f0 15 f4 20 | 20 20 44 52 41 57 20 78 |2%..... | DRAW x|
|00005130| 33 25 2c 20 79 33 25 0d | 00 f1 15 f4 20 20 20 44 |3%, y3%.|.... D|
|00005140| 52 41 57 20 78 30 25 2c | 20 79 30 25 0d 00 f2 05 |RAW x0%,| y0%....|
|00005150| e1 0d 00 f3 05 3a 0d 00 | f4 0e dd 20 a4 72 67 62 |.....:..|... .rgb|
|00005160| 28 41 25 29 0d 00 f5 26 | 20 20 41 25 20 3d 20 28 |(A%)...&| A% = (|
|00005170| 28 41 25 20 2a 20 32 35 | 35 29 20 2f 20 26 31 30 |(A% * 25|5) / &10|
|00005180| 30 30 30 29 20 2b 20 30 | 2e 35 0d 00 f6 21 20 20 |000) + 0|.5...! |
|00005190| e7 20 41 25 20 3c 20 30 | 20 8c 20 85 20 31 20 2c |. A% < 0| . . 1 ,|
|000051a0| 20 22 6e 65 67 61 74 69 | 76 65 22 0d 00 f7 21 20 | "negati|ve"...! |
|000051b0| 20 e7 20 41 25 20 3e 20 | 32 35 35 20 8c 20 85 20 | . A% > |255 . . |
|000051c0| 31 2c 20 22 74 6f 6f 20 | 62 69 67 22 0d 00 f8 08 |1, "too |big"....|
|000051d0| 3d 20 41 25 0d 00 f9 05 | 3a 0d 00 fa 36 dd 20 f2 |= A%....|:...6. .|
|000051e0| 5f 44 72 61 77 5f 53 65 | 67 6d 65 6e 74 50 61 72 |_Draw_Se|gmentPar|
|000051f0| 74 5f 50 6f 69 6e 74 28 | f8 20 78 25 2c 20 f8 20 |t_Point(|. x%, . |
|00005200| 79 25 2c 20 61 25 2c 20 | 74 25 2c 20 69 25 29 0d |y%, a%, |t%, i%).|
|00005210| 00 fb 1f 20 20 78 25 20 | 3d 20 58 25 28 74 25 20 |... x% |= X%(t% |
|00005220| 83 20 4f 54 25 2c 20 61 | 25 2c 20 69 25 29 0d 00 |. OT%, a|%, i%)..|
|00005230| fc 1f 20 20 79 25 20 3d | 20 59 25 28 74 25 20 83 |.. y% =| Y%(t% .|
|00005240| 20 4f 54 25 2c 20 61 25 | 2c 20 69 25 29 0d 00 fd | OT%, a%|, i%)...|
|00005250| 13 20 20 74 25 20 3d 20 | 74 25 20 81 20 4f 54 25 |. t% = |t% . OT%|
|00005260| 0d 00 fe 1e 20 20 e7 20 | 74 25 20 3e 20 37 20 8c |.... . |t% > 7 .|
|00005270| 20 85 20 31 2c 20 22 62 | 61 64 20 74 25 22 0d 00 | . 1, "b|ad t%"..|
|00005280| ff 19 20 20 74 25 20 3d | 20 74 25 20 82 20 28 74 |.. t% =| t% . (t|
|00005290| 25 20 3e 3e 20 31 29 0d | 01 00 1a 20 20 e7 20 74 |% >> 1).|... . t|
|000052a0| 25 20 80 20 31 20 8c 20 | c8 94 20 78 25 2c 20 79 |% . 1 . |.. x%, y|
|000052b0| 25 0d 01 01 19 20 20 e7 | 20 74 25 20 80 20 32 20 |%.... .| t% . 2 |
|000052c0| 8c 20 78 25 20 3d 20 2d | 78 25 0d 01 02 19 20 20 |. x% = -|x%.... |
|000052d0| e7 20 74 25 20 80 20 34 | 20 8c 20 79 25 20 3d 20 |. t% . 4| . y% = |
|000052e0| 2d 79 25 0d 01 03 05 e1 | 0d 01 04 05 3a 0d 01 05 |-y%.....|....:...|
|000052f0| 04 0d ff 46 69 6c 65 44 | 61 74 61 82 54 65 73 74 |...FileD|ata.Test|
|00005300| 44 69 74 68 65 72 00 9e | 39 00 00 46 fd ff ff a6 |Dither..|9..F....|
|00005310| 6c d4 55 03 00 35 39 0d | 00 01 11 f4 20 3e 54 65 |l.U..59.|.... >Te|
|00005320| 73 74 44 69 74 68 65 72 | 0d 00 02 11 f4 20 3a 20 |stDither|..... : |
|00005330| 43 79 20 42 6f 6f 6b 65 | 72 0d 00 03 16 f4 20 3a |Cy Booke|r..... :|
|00005340| 20 38 36 20 43 68 75 72 | 63 68 20 56 69 65 77 0d | 86 Chur|ch View.|
|00005350| 00 04 11 f4 20 3a 20 4d | 61 69 6e 20 52 6f 61 64 |.... : M|ain Road|
|00005360| 0d 00 05 13 f4 20 3a 20 | 43 72 6f 63 6b 65 6e 68 |..... : |Crockenh|
|00005370| 69 6c 6c 0d 00 06 0f f4 | 20 3a 20 53 77 61 6e 6c |ill.....| : Swanl|
|00005380| 65 79 0d 00 07 0c f4 20 | 3a 20 4b 65 6e 74 0d 00 |ey..... |: Kent..|
|00005390| 08 10 f4 20 3a 20 42 52 | 38 20 38 20 4a 57 0d 00 |... : BR|8 8 JW..|
|000053a0| 09 3c f4 20 72 75 6e 20 | 74 68 69 73 20 69 6e 20 |.<. run |this in |
|000053b0| 61 20 31 36 20 63 6f 6c | 6f 75 72 20 57 69 6d 70 |a 16 col|our Wimp|
|000053c0| 20 6d 6f 64 65 20 77 69 | 74 68 20 64 65 66 61 75 | mode wi|th defau|
|000053d0| 6c 74 20 70 61 6c 65 74 | 74 65 0d 00 0a 3b f4 20 |lt palet|te...;. |
|000053e0| 74 68 65 20 62 6f 74 74 | 6f 6d 20 68 61 6c 66 20 |the bott|om half |
|000053f0| 75 73 65 73 20 61 6e 20 | 61 63 63 75 72 61 74 65 |uses an |accurate|
|00005400| 20 32 78 32 20 64 69 74 | 68 65 72 20 61 6c 67 6f | 2x2 dit|her algo|
|00005410| 72 69 74 68 6d 0d 00 0b | 23 f4 20 74 68 65 20 74 |rithm...|#. the t|
|00005420| 6f 70 20 68 61 6c 66 20 | 75 73 65 73 20 43 6f 6c |op half |uses Col|
|00005430| 6f 75 72 54 72 61 6e 73 | 0d 00 0c 54 f4 20 69 66 |ourTrans|...T. if|
|00005440| 20 63 68 61 6e 67 65 20 | 70 61 72 61 6d 65 74 65 | change |paramete|
|00005450| 72 73 20 74 6f 20 78 64 | 69 74 68 65 72 5f 72 67 |rs to xd|ither_rg|
|00005460| 62 20 74 68 65 6e 20 77 | 6f 72 6b 73 20 69 6e 20 |b then w|orks in |
|00005470| 61 6e 79 20 6d 6f 64 65 | 2f 70 61 6c 65 74 74 65 |any mode|/palette|
|00005480| 20 28 75 70 74 6f 20 38 | 62 70 70 29 0d 00 0d 05 | (upto 8|bpp)....|
|00005490| f4 0d 00 0e 4c f4 20 74 | 68 65 20 73 75 70 72 69 |....L. t|he supri|
|000054a0| 73 69 6e 67 20 66 61 63 | 74 20 69 73 20 74 68 61 |sing fac|t is tha|
|000054b0| 74 20 66 6f 72 20 34 62 | 70 70 20 69 74 20 6c 6f |t for 4b|pp it lo|
|000054c0| 6f 6b 73 20 61 73 20 74 | 68 6f 75 67 68 20 77 65 |oks as t|hough we|
|000054d0| 20 68 61 76 65 20 63 68 | 61 6e 67 65 64 0d 00 0f | have ch|anged...|
|000054e0| 4f f4 20 74 68 65 20 77 | 6f 72 6b 69 6e 67 20 72 |O. the w|orking r|
|000054f0| 65 73 6f 6c 75 74 69 6f | 6e 20 66 72 6f 6d 20 30 |esolutio|n from 0|
|00005500| 2e 2e 32 35 35 20 74 6f | 20 30 2e 2e 36 35 35 33 |..255 to| 0..6553|
|00005510| 36 20 28 65 78 74 72 61 | 20 32 2e 34 20 64 65 63 |6 (extra| 2.4 dec|
|00005520| 69 6d 61 6c 20 70 6c 61 | 63 65 73 29 0d 00 10 23 |imal pla|ces)...#|
|00005530| f4 20 6f 6e 6c 79 20 64 | 6f 75 62 6c 65 73 20 74 |. only d|oubles t|
|00005540| 68 65 20 22 72 65 73 6f | 6c 75 74 69 6f 6e 22 0d |he "reso|lution".|
|00005550| 00 11 05 f4 0d 00 12 21 | f4 20 61 6c 6c 20 73 75 |.......!|. all su|
|00005560| 62 2d 72 6f 75 74 69 6e | 65 73 20 63 6f 6e 66 6f |b-routin|es confo|
|00005570| 72 6d 20 74 6f 0d 00 13 | 27 f4 20 20 20 20 20 70 |rm to...|'. p|
|00005580| 61 72 61 6d 65 74 65 72 | 73 20 69 6e 20 52 30 2c |arameter|s in R0,|
|00005590| 20 52 31 2c 20 52 32 2c | 20 2e 2e 2e 0d 00 14 36 | R1, R2,| ......6|
|000055a0| f4 20 20 20 20 20 72 65 | 74 75 72 6e 73 20 69 6e |. re|turns in|
|000055b0| 20 52 30 2c 20 52 31 2c | 20 52 32 2c 20 2e 2e 2e | R0, R1,| R2, ...|
|000055c0| 20 5b 46 30 2c 20 46 31 | 2c 20 46 32 2c 20 2e 2e | [F0, F1|, F2, ..|
|000055d0| 2e 5d 0d 00 15 20 f4 20 | 20 20 20 20 63 6f 72 72 |.]... . | corr|
|000055e0| 75 70 74 73 20 52 30 2d | 52 33 2c 20 69 70 2c 20 |upts R0-|R3, ip, |
|000055f0| 6c 72 0d 00 16 25 f4 20 | 20 20 20 20 70 72 65 73 |lr...%. | pres|
|00005600| 65 72 76 65 73 20 52 34 | 2d 52 39 2c 20 73 6c 2c |erves R4|-R9, sl,|
|00005610| 20 67 62 2c 20 73 70 0d | 00 17 25 f4 20 20 20 20 | gb, sp.|..%. |
|00005620| 20 69 66 20 6e 61 6d 65 | 20 68 61 73 20 60 78 27 | if name| has `x'|
|00005630| 20 70 72 65 66 69 78 20 | 74 68 65 6e 0d 00 18 3b | prefix |then...;|
|00005640| f4 20 20 20 20 20 20 20 | 20 20 20 20 20 20 50 53 |. | PS|
|00005650| 52 5f 56 20 73 65 74 20 | 6f 6e 20 53 57 49 20 65 |R_V set |on SWI e|
|00005660| 72 72 6f 72 2c 20 50 53 | 52 5f 4e 5a 43 20 75 6e |rror, PS|R_NZC un|
|00005670| 64 65 66 69 6e 65 64 0d | 00 19 37 f4 20 20 20 20 |defined.|..7. |
|00005680| 20 20 20 20 20 20 20 20 | 20 50 53 52 5f 56 20 63 | | PSR_V c|
|00005690| 6c 65 61 72 20 69 66 20 | 4f 4b 2c 20 20 50 52 53 |lear if |OK, PRS|
|000056a0| 5f 4e 5a 43 20 70 72 65 | 73 65 72 76 65 64 0d 00 |_NZC pre|served..|
|000056b0| 1a 2a f4 20 20 20 20 20 | 65 6c 73 65 20 69 66 20 |.*. |else if |
|000056c0| 6e 61 6d 65 20 68 61 73 | 20 60 76 27 20 70 72 65 |name has| `v' pre|
|000056d0| 66 69 78 20 74 68 65 6e | 0d 00 1b 39 f4 20 20 20 |fix then|...9. |
|000056e0| 20 20 20 20 20 20 20 20 | 20 20 50 53 52 5f 5a 20 | | PSR_Z |
|000056f0| 69 73 20 73 74 61 74 65 | 20 6f 66 20 52 30 2c 20 |is state| of R0, |
|00005700| 50 53 52 5f 4e 43 56 20 | 70 72 65 73 65 72 76 65 |PSR_NCV |preserve|
|00005710| 64 0d 00 1c 21 f4 20 20 | 20 20 20 65 6c 73 65 20 |d...!. | else |
|00005720| 50 53 52 5f 4e 5a 43 56 | 20 70 72 65 73 65 72 76 |PSR_NZCV| preserv|
|00005730| 65 64 0d 00 1d 05 f4 0d | 00 1e 27 20 ee 20 85 3a |ed......|..' . .:|
|00005740| ee 20 85 20 87 3a 85 20 | 9f 2c 20 f6 24 2b 20 22 |. . .:. |., .$+ "|
|00005750| 20 5b 22 2b 20 c3 28 9e | 29 2b 20 22 5d 22 0d 00 | ["+ .(.|)+ "]"..|
|00005760| 1f 0d 20 20 73 70 20 3d | 20 31 33 0d 00 20 0d 20 |.. sp =| 13.. . |
|00005770| 20 6c 72 20 3d 20 31 34 | 0d 00 21 33 20 20 67 62 | lr = 14|..!3 gb|
|00005780| 20 3d 20 31 32 20 20 20 | 20 20 20 20 20 20 20 20 | = 12 | |
|00005790| 20 20 20 20 20 20 20 20 | 20 20 20 20 3a f4 20 6e | | :. n|
|000057a0| 6f 74 20 41 50 43 53 20 | 21 21 21 0d 00 22 33 20 |ot APCS |!!!.."3 |
|000057b0| 20 69 70 20 3d 20 31 31 | 20 20 20 20 20 20 20 20 | ip = 11| |
|000057c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 3a | | :|
|000057d0| f4 20 6e 6f 74 20 41 50 | 43 53 20 21 21 21 0d 00 |. not AP|CS !!!..|
|000057e0| 23 17 20 20 50 53 52 5f | 56 20 3d 20 26 31 30 30 |#. PSR_|V = &100|
|000057f0| 30 30 30 30 30 0d 00 24 | 07 20 20 3a 0d 00 25 10 |00000..$|. :..%.|
|00005800| 20 20 4c 25 20 3d 20 31 | 30 32 34 30 0d 00 26 1e | L% = 1|0240..&.|
|00005810| 20 20 de 20 63 6f 64 65 | 25 20 4c 25 20 3a 20 4c | . code|% L% : L|
|00005820| 25 20 2b 3d 20 63 6f 64 | 65 25 0d 00 27 20 20 20 |% += cod|e%..' |
|00005830| e3 20 70 61 73 73 25 3d | 20 25 31 30 30 30 20 b8 |. pass%=| %1000 .|
|00005840| 20 25 31 30 31 30 20 88 | 20 32 0d 00 28 1b 20 20 | %1010 .| 2..(. |
|00005850| 20 20 4f 25 20 3d 20 30 | 20 3a 20 50 25 20 3d 20 | O% = 0| : P% = |
|00005860| 63 6f 64 65 25 0d 00 29 | 12 20 20 20 20 5b 4f 50 |code%..)|. [OP|
|00005870| 54 20 70 61 73 73 25 0d | 00 2a 18 20 20 20 20 20 |T pass%.|.*. |
|00005880| 20 20 20 a4 75 64 69 76 | 69 64 65 5f 32 35 35 0d | .udiv|ide_255.|
|00005890| 00 2b 16 20 20 20 20 20 | 20 20 20 a4 75 64 69 76 |.+. | .udiv|
|000058a0| 69 64 65 5f 33 0d 00 2c | 14 20 20 20 20 20 20 20 |ide_3..,|. |
|000058b0| 20 a4 75 64 69 76 6d 6f | 64 0d 00 2d 18 20 20 20 | .udivmo|d..-. |
|000058c0| 20 20 20 20 20 a4 78 64 | 69 74 68 65 72 5f 72 67 | .xd|ither_rg|
|000058d0| 62 0d 00 2e 28 20 20 20 | 20 20 20 20 20 a4 63 6f |b...( | .co|
|000058e0| 6e 76 65 72 74 5f 70 61 | 6c 65 74 74 65 65 6e 74 |nvert_pa|letteent|
|000058f0| 72 79 5f 74 6f 5f 72 67 | 62 0d 00 2f 28 20 20 20 |ry_to_rg|b../( |
|00005900| 20 20 20 20 20 a4 63 6f | 6e 76 65 72 74 5f 72 67 | .co|nvert_rg|
|00005910| 62 5f 74 6f 5f 70 61 6c | 65 74 74 65 65 6e 74 72 |b_to_pal|etteentr|
|00005920| 79 0d 00 30 45 2e 50 61 | 6c 65 74 74 65 20 20 20 |y..0E.Pa|lette |
|00005930| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005940| 20 20 20 20 20 3b 20 73 | 74 61 6e 64 61 72 64 20 | ; s|tandard |
|00005950| 31 36 2d 63 6f 6c 6f 75 | 72 20 77 69 6d 70 20 70 |16-colou|r wimp p|
|00005960| 61 6c 65 74 74 65 0d 00 | 31 1d 20 20 20 20 20 20 |alette..|1. |
|00005970| 20 20 45 51 55 44 20 20 | 20 20 26 46 46 46 46 46 | EQUD | &FFFFF|
|00005980| 46 30 30 0d 00 32 1d 20 | 20 20 20 20 20 20 20 45 |F00..2. | E|
|00005990| 51 55 44 20 20 20 20 26 | 44 44 44 44 44 44 30 30 |QUD &|DDDDDD00|
|000059a0| 0d 00 33 1d 20 20 20 20 | 20 20 20 20 45 51 55 44 |..3. | EQUD|
|000059b0| 20 20 20 20 26 42 42 42 | 42 42 42 30 30 0d 00 34 | &BBB|BBB00..4|
|000059c0| 1d 20 20 20 20 20 20 20 | 20 45 51 55 44 20 20 20 |. | EQUD |
|000059d0| 20 26 39 39 39 39 39 39 | 30 30 0d 00 35 1d 20 20 | &999999|00..5. |
|000059e0| 20 20 20 20 20 20 45 51 | 55 44 20 20 20 20 26 37 | EQ|UD &7|
|000059f0| 37 37 37 37 37 30 30 0d | 00 36 1d 20 20 20 20 20 |7777700.|.6. |
|00005a00| 20 20 20 45 51 55 44 20 | 20 20 20 26 35 35 35 35 | EQUD | &5555|
|00005a10| 35 35 30 30 0d 00 37 1d | 20 20 20 20 20 20 20 20 |5500..7.| |
|00005a20| 45 51 55 44 20 20 20 20 | 26 33 33 33 33 33 33 30 |EQUD |&3333330|
|00005a30| 30 0d 00 38 1d 20 20 20 | 20 20 20 20 20 45 51 55 |0..8. | EQU|
|00005a40| 44 20 20 20 20 26 30 30 | 30 30 30 30 30 30 0d 00 |D &00|000000..|
|00005a50| 39 1d 20 20 20 20 20 20 | 20 20 45 51 55 44 20 20 |9. | EQUD |
|00005a60| 20 20 26 39 39 34 34 30 | 30 30 30 0d 00 3a 1d 20 | &99440|000..:. |
|00005a70| 20 20 20 20 20 20 20 45 | 51 55 44 20 20 20 20 26 | E|QUD &|
|00005a80| 30 30 45 45 45 45 30 30 | 0d 00 3b 1d 20 20 20 20 |00EEEE00|..;. |
|00005a90| 20 20 20 20 45 51 55 44 | 20 20 20 20 26 30 30 43 | EQUD| &00C|
|00005aa0| 43 30 30 30 30 0d 00 3c | 1d 20 20 20 20 20 20 20 |C0000..<|. |
|00005ab0| 20 45 51 55 44 20 20 20 | 20 26 30 30 30 30 44 44 | EQUD | &0000DD|
|00005ac0| 30 30 0d 00 3d 1d 20 20 | 20 20 20 20 20 20 45 51 |00..=. | EQ|
|00005ad0| 55 44 20 20 20 20 26 42 | 42 45 45 45 45 30 30 0d |UD &B|BEEEE00.|
|00005ae0| 00 3e 1d 20 20 20 20 20 | 20 20 20 45 51 55 44 20 |.>. | EQUD |
|00005af0| 20 20 20 26 30 30 38 38 | 35 35 30 30 0d 00 3f 1d | &0088|5500..?.|
|00005b00| 20 20 20 20 20 20 20 20 | 45 51 55 44 20 20 20 20 | |EQUD |
|00005b10| 26 30 30 42 42 46 46 30 | 30 0d 00 40 1d 20 20 20 |&00BBFF0|0..@. |
|00005b20| 20 20 20 20 20 45 51 55 | 44 20 20 20 20 26 46 46 | EQU|D &FF|
|00005b30| 42 42 30 30 30 30 0d 00 | 41 0c 2e 78 64 69 74 68 |BB0000..|A..xdith|
|00005b40| 65 72 0d 00 42 1f 20 20 | 20 20 20 20 20 20 53 54 |er..B. | ST|
|00005b50| 4d 46 44 20 20 20 28 73 | 70 29 21 2c 20 7b 6c 72 |MFD (s|p)!, {lr|
|00005b60| 7d 0d 00 43 1b 20 20 20 | 20 20 20 20 20 4d 4f 56 |}..C. | MOV|
|00005b70| 20 20 20 20 20 52 33 2c | 20 23 32 30 0d 00 44 1f | R3,| #20..D.|
|00005b80| 20 20 20 20 20 20 20 20 | 41 44 52 20 20 20 20 20 | |ADR |
|00005b90| 52 34 2c 20 50 61 6c 65 | 74 74 65 0d 00 45 1a 20 |R4, Pale|tte..E. |
|00005ba0| 20 20 20 20 20 20 20 4d | 4f 56 20 20 20 20 20 52 | M|OV R|
|00005bb0| 35 2c 20 23 34 0d 00 46 | 1f 20 20 20 20 20 20 20 |5, #4..F|. |
|00005bc0| 20 42 4c 20 20 20 20 20 | 20 78 64 69 74 68 65 72 | BL | xdither|
|00005bd0| 5f 72 67 62 0d 00 47 1f | 20 20 20 20 20 20 20 20 |_rgb..G.| |
|00005be0| 4c 44 4d 76 73 46 44 20 | 28 73 70 29 21 2c 20 7b |LDMvsFD |(sp)!, {|
|00005bf0| 70 63 7d 0d 00 48 22 20 | 20 20 20 20 20 20 20 53 |pc}..H" | S|
|00005c00| 54 4d 46 44 20 20 20 28 | 73 70 29 21 2c 20 7b 52 |TMFD (|sp)!, {R|
|00005c10| 30 2d 52 33 7d 0d 00 49 | 22 20 20 20 20 20 20 20 |0-R3}..I|" |
|00005c20| 20 53 54 4d 46 44 20 20 | 20 28 73 70 29 21 2c 20 | STMFD | (sp)!, |
|00005c30| 7b 52 30 2d 52 33 7d 0d | 00 4a 1f 20 20 20 20 20 |{R0-R3}.|.J. |
|00005c40| 20 20 20 4d 4f 56 20 20 | 20 20 20 52 30 2c 20 23 | MOV | R0, #|
|00005c50| 31 20 3c 3c 20 35 0d 00 | 4b 1a 20 20 20 20 20 20 |1 << 5..|K. |
|00005c60| 20 20 4d 4f 56 20 20 20 | 20 20 52 31 2c 20 73 70 | MOV | R1, sp|
|00005c70| 0d 00 4c 23 20 20 20 20 | 20 20 20 20 53 57 49 20 |..L# | SWI |
|00005c80| 20 20 20 20 22 58 4f 53 | 5f 53 65 74 43 6f 6c 6f | "XOS|_SetColo|
|00005c90| 75 72 22 0d 00 4d 22 20 | 20 20 20 20 20 20 20 41 |ur"..M" | A|
|00005ca0| 44 44 20 20 20 20 20 73 | 70 2c 20 73 70 2c 20 23 |DD s|p, sp, #|
|00005cb0| 34 2a 34 2a 32 0d 00 4e | 1f 20 20 20 20 20 20 20 |4*4*2..N|. |
|00005cc0| 20 4c 44 4d 46 44 20 20 | 20 28 73 70 29 21 2c 20 | LDMFD | (sp)!, |
|00005cd0| 7b 70 63 7d 0d 00 4f 09 | 20 20 20 20 5d 0d 00 50 |{pc}..O.| ]..P|
|00005ce0| 0d 20 20 ed 20 70 61 73 | 73 25 0d 00 51 18 20 20 |. . pas|s%..Q. |
|00005cf0| de 20 73 28 32 29 2c 20 | 65 28 32 29 2c 20 63 28 |. s(2), |e(2), c(|
|00005d00| 32 29 0d 00 52 1c 20 20 | 73 28 29 20 3d 20 30 2e |2)..R. |s() = 0.|
|00005d10| 30 33 2c 20 30 2e 38 30 | 2c 20 30 2e 34 32 0d 00 |03, 0.80|, 0.42..|
|00005d20| 53 1c 20 20 65 28 29 20 | 3d 20 30 2e 39 34 2c 20 |S. e() |= 0.94, |
|00005d30| 30 2e 30 35 2c 20 30 2e | 37 39 0d 00 54 11 20 20 |0.05, 0.|79..T. |
|00005d40| e3 20 69 25 3d 20 30 20 | b8 20 32 0d 00 55 19 20 |. i%= 0 |. 2..U. |
|00005d50| 20 20 20 73 28 69 25 29 | 20 3d 20 b3 28 31 29 2a | s(i%)| = .(1)*|
|00005d60| b3 28 31 29 0d 00 56 1f | 20 20 20 20 65 28 69 25 |.(1)..V.| e(i%|
|00005d70| 29 20 3d 20 31 20 2d 20 | 28 b3 28 31 29 2a b3 28 |) = 1 - |(.(1)*.(|
|00005d80| 31 29 29 0d 00 57 15 20 | 20 20 20 c8 95 20 b3 28 |1))..W. | .. .(|
|00005d90| 31 29 20 3c 20 30 2e 37 | 0d 00 58 09 20 20 20 20 |1) < 0.7|..X. |
|00005da0| ce 0d 00 59 07 20 20 ed | 0d 00 5a 11 20 20 6e 73 |...Y. .|..Z. ns|
|00005db0| 74 65 70 20 3d 20 35 31 | 32 0d 00 5b 1d 20 20 e3 |tep = 51|2..[. .|
|00005dc0| 20 69 3d 20 30 20 b8 20 | 31 2e 30 30 20 88 20 31 | i= 0 . |1.00 . 1|
|00005dd0| 2f 6e 73 74 65 70 0d 00 | 5c 15 20 20 20 20 63 28 |/nstep..|\. c(|
|00005de0| 29 20 3d 20 65 28 29 2d | 73 28 29 0d 00 5d 13 20 |) = e()-|s()..]. |
|00005df0| 20 20 20 63 28 29 20 3d | 20 69 2a 63 28 29 0d 00 | c() =| i*c()..|
|00005e00| 5e 17 20 20 20 20 63 28 | 29 20 3d 20 63 28 29 20 |^. c(|) = c() |
|00005e10| 2b 20 73 28 29 0d 00 5f | 1e 20 20 20 20 41 25 20 |+ s().._|. A% |
|00005e20| 3d 20 63 28 30 29 2a 26 | 31 30 30 30 30 20 2b 20 |= c(0)*&|10000 + |
|00005e30| 30 2e 35 0d 00 60 1e 20 | 20 20 20 42 25 20 3d 20 |0.5..`. | B% = |
|00005e40| 63 28 31 29 2a 26 31 30 | 30 30 30 20 2b 20 30 2e |c(1)*&10|000 + 0.|
|00005e50| 35 0d 00 61 1e 20 20 20 | 20 43 25 20 3d 20 63 28 |5..a. | C% = c(|
|00005e60| 32 29 2a 26 31 30 30 30 | 30 20 2b 20 30 2e 35 0d |2)*&1000|0 + 0.5.|
|00005e70| 00 62 11 20 20 20 20 d6 | 20 78 64 69 74 68 65 72 |.b. .| xdither|
|00005e80| 0d 00 63 28 20 20 20 20 | c8 93 20 c8 90 20 69 2a |..c( |.. .. i*|
|00005e90| 31 30 32 34 2c 20 30 2c | 20 31 30 32 34 2f 6e 73 |1024, 0,| 1024/ns|
|00005ea0| 74 65 70 2c 20 35 31 32 | 0d 00 64 1b 20 20 20 20 |tep, 512|..d. |
|00005eb0| 41 25 20 3d 20 63 28 30 | 29 2a 26 66 66 20 2b 20 |A% = c(0|)*&ff + |
|00005ec0| 30 2e 35 0d 00 65 1b 20 | 20 20 20 42 25 20 3d 20 |0.5..e. | B% = |
|00005ed0| 63 28 31 29 2a 26 66 66 | 20 2b 20 30 2e 35 0d 00 |c(1)*&ff| + 0.5..|
|00005ee0| 66 1b 20 20 20 20 43 25 | 20 3d 20 63 28 32 29 2a |f. C%| = c(2)*|
|00005ef0| 26 66 66 20 2b 20 30 2e | 35 0d 00 67 44 20 20 20 |&ff + 0.|5..gD |
|00005f00| 20 c8 99 20 22 43 6f 6c | 6f 75 72 54 72 61 6e 73 | .. "Col|ourTrans|
|00005f10| 5f 53 65 74 47 43 4f 4c | 22 2c 20 28 41 25 3c 3c |_SetGCOL|", (A%<<|
|00005f20| 38 29 2b 28 42 25 3c 3c | 31 36 29 2b 28 43 25 3c |8)+(B%<<|16)+(C%<|
|00005f30| 3c 32 34 29 2c 2c 2c 26 | 31 30 30 2c 30 0d 00 68 |<24),,,&|100,0..h|
|00005f40| 2c 20 20 20 20 c8 93 20 | c8 90 20 69 2a 31 30 32 |, .. |.. i*102|
|00005f50| 34 2c 20 35 31 32 2c 20 | 31 30 32 34 2f 6e 73 74 |4, 512, |1024/nst|
|00005f60| 65 70 2c 20 35 31 32 20 | 20 0d 00 69 09 20 20 ed |ep, 512 | ..i. .|
|00005f70| 20 69 0d 00 6a 21 f4 20 | 20 2a 53 63 72 65 65 6e | i..j!. | *Screen|
|00005f80| 53 61 76 65 20 3c 64 3e | 2e 54 6d 70 2e 73 63 72 |Save <d>|.Tmp.scr|
|00005f90| 65 65 6e 0d 00 6b 05 e0 | 0d 00 6c 05 3a 0d 00 6d |een..k..|..l.:..m|
|00005fa0| 11 dd 20 f2 6c 69 6e 6b | 28 61 24 29 3a e1 0d 00 |.. .link|(a$):...|
|00005fb0| 6e 05 3a 0d 00 6f 10 dd | 20 a4 75 64 69 76 69 64 |n.:..o..| .udivid|
|00005fc0| 65 5f 33 0d 00 70 0e 5b | 4f 50 54 20 70 61 73 73 |e_3..p.[|OPT pass|
|00005fd0| 25 0d 00 71 53 3b 20 7e | 7e 7e 7e 7e 7e 7e 7e 7e |%..qS; ~|~~~~~~~~|
|00005fe0| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00005ff0| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00006000| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00006010| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00006020| 7e 7e 7e 7e 0d 00 72 2a | 3b 20 43 61 6c 63 75 6c |~~~~..r*|; Calcul|
|00006030| 61 74 65 73 20 72 6f 75 | 6e 64 28 6e 2f 33 29 20 |ates rou|nd(n/3) |
|00006040| 65 78 74 72 65 6d 65 6c | 79 20 66 61 73 74 0d 00 |extremel|y fast..|
|00006050| 73 05 3b 0d 00 74 12 3b | 20 49 6e 20 20 20 20 52 |s.;..t.;| In R|
|00006060| 30 20 3d 20 6e 0d 00 75 | 1d 3b 20 4f 75 74 20 20 |0 = n..u|.; Out |
|00006070| 20 52 30 20 3d 20 72 6f | 75 6e 64 28 6e 20 81 20 | R0 = ro|und(n . |
|00006080| 33 29 0d 00 76 05 3b 0d | 00 77 0e 2e 75 64 69 76 |3)..v.;.|.w..udiv|
|00006090| 69 64 65 5f 33 0d 00 78 | 27 20 20 20 20 20 20 20 |ide_3..x|' |
|000060a0| 20 4d 4f 56 20 20 20 20 | 20 52 32 2c 20 52 30 2c | MOV | R2, R0,|
|000060b0| 20 4c 53 52 20 23 33 32 | 20 2d 20 32 0d 00 79 26 | LSR #32| - 2..y&|
|000060c0| 20 20 20 20 20 20 20 20 | 41 44 44 53 20 20 20 20 | |ADDS |
|000060d0| 52 31 2c 20 52 30 2c 20 | 52 30 2c 20 4c 53 4c 20 |R1, R0, |R0, LSL |
|000060e0| 23 32 0d 00 7a 44 20 20 | 20 20 20 20 20 20 41 44 |#2..zD | AD|
|000060f0| 44 63 73 20 20 20 52 32 | 2c 20 52 32 2c 20 23 31 |Dcs R2|, R2, #1|
|00006100| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 3b 20 | | ; |
|00006110| 52 32 2e 52 31 20 3d 20 | 52 30 20 2a 20 26 30 30 |R2.R1 = |R0 * &00|
|00006120| 30 30 30 30 30 35 0d 00 | 7b 27 20 20 20 20 20 20 |000005..|{' |
|00006130| 20 20 41 44 44 20 20 20 | 20 20 52 32 2c 20 52 32 | ADD | R2, R2|
|00006140| 2c 20 52 32 2c 20 4c 53 | 4c 20 23 31 36 0d 00 7c |, R2, LS|L #16..||
|00006150| 27 20 20 20 20 20 20 20 | 20 41 44 44 53 20 20 20 |' | ADDS |
|00006160| 20 52 33 2c 20 52 31 2c | 20 52 31 2c 20 4c 53 4c | R3, R1,| R1, LSL|
|00006170| 20 23 31 36 0d 00 7d 44 | 20 20 20 20 20 20 20 20 | #16..}D| |
|00006180| 41 44 43 20 20 20 20 20 | 52 32 2c 20 52 32 2c 20 |ADC |R2, R2, |
|00006190| 52 31 2c 20 4c 53 52 20 | 23 33 32 20 2d 20 31 36 |R1, LSR |#32 - 16|
|000061a0| 3b 20 52 32 2e 52 33 20 | 3d 20 52 30 20 2a 20 26 |; R2.R3 |= R0 * &|
|000061b0| 30 30 30 35 30 30 30 35 | 0d 00 7e 26 20 20 20 20 |00050005|..~& |
|000061c0| 20 20 20 20 41 44 44 20 | 20 20 20 20 52 32 2c 20 | ADD | R2, |
|000061d0| 52 32 2c 20 52 32 2c 20 | 4c 53 4c 20 23 38 0d 00 |R2, R2, |LSL #8..|
|000061e0| 7f 26 20 20 20 20 20 20 | 20 20 41 44 44 53 20 20 |.& | ADDS |
|000061f0| 20 20 52 31 2c 20 52 33 | 2c 20 52 33 2c 20 4c 53 | R1, R3|, R3, LS|
|00006200| 4c 20 23 38 0d 00 80 44 | 20 20 20 20 20 20 20 20 |L #8...D| |
|00006210| 41 44 43 20 20 20 20 20 | 52 32 2c 20 52 32 2c 20 |ADC |R2, R2, |
|00006220| 52 33 2c 20 4c 53 52 20 | 23 33 32 20 2d 20 38 20 |R3, LSR |#32 - 8 |
|00006230| 3b 20 52 32 2e 52 31 20 | 3d 20 52 30 20 2a 20 26 |; R2.R1 |= R0 * &|
|00006240| 30 35 30 35 30 35 30 35 | 0d 00 81 26 20 20 20 20 |05050505|...& |
|00006250| 20 20 20 20 41 44 44 20 | 20 20 20 20 52 32 2c 20 | ADD | R2, |
|00006260| 52 32 2c 20 52 32 2c 20 | 4c 53 4c 20 23 34 0d 00 |R2, R2, |LSL #4..|
|00006270| 82 26 20 20 20 20 20 20 | 20 20 41 44 44 53 20 20 |.& | ADDS |
|00006280| 20 20 52 33 2c 20 52 31 | 2c 20 52 31 2c 20 4c 53 | R3, R1|, R1, LS|
|00006290| 4c 20 23 34 0d 00 83 44 | 20 20 20 20 20 20 20 20 |L #4...D| |
|000062a0| 41 44 43 20 20 20 20 20 | 52 30 2c 20 52 32 2c 20 |ADC |R0, R2, |
|000062b0| 52 31 2c 20 4c 53 52 20 | 23 33 32 20 2d 20 34 20 |R1, LSR |#32 - 4 |
|000062c0| 3b 20 52 30 2e 52 33 20 | 3d 20 52 30 20 2a 20 26 |; R0.R3 |= R0 * &|
|000062d0| 35 35 35 35 35 35 35 35 | 0d 00 84 36 20 20 20 20 |55555555|...6 |
|000062e0| 20 20 20 20 41 44 44 6d | 69 20 20 20 52 30 2c 20 | ADDm|i R0, |
|000062f0| 52 30 2c 20 23 31 20 20 | 20 20 20 20 20 20 20 20 |R0, #1 | |
|00006300| 20 20 20 20 3b 20 72 6f | 75 6e 64 20 75 70 0d 00 | ; ro|und up..|
|00006310| 85 1a 20 20 20 20 20 20 | 20 20 4d 4f 56 53 20 20 |.. | MOVS |
|00006320| 20 20 70 63 2c 20 6c 72 | 0d 00 86 09 5d 3a 3d 20 | pc, lr|....]:= |
|00006330| 30 0d 00 87 05 3a 0d 00 | 88 12 dd 20 a4 75 64 69 |0....:..|... .udi|
|00006340| 76 69 64 65 5f 32 35 35 | 0d 00 89 0e 5b 4f 50 54 |vide_255|....[OPT|
|00006350| 20 70 61 73 73 25 0d 00 | 8a 53 3b 20 7e 7e 7e 7e | pass%..|.S; ~~~~|
|00006360| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00006370| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00006380| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00006390| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|000063a0| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 0d 00 8b 2c 3b 20 43 |~~~~~~~~|~...,; C|
|000063b0| 61 6c 63 75 6c 61 74 65 | 73 20 72 6f 75 6e 64 28 |alculate|s round(|
|000063c0| 6e 2f 32 35 35 29 20 65 | 78 74 72 65 6d 65 6c 79 |n/255) e|xtremely|
|000063d0| 20 66 61 73 74 0d 00 8c | 05 3b 0d 00 8d 12 3b 20 | fast...|.;....; |
|000063e0| 49 6e 20 20 20 20 52 30 | 20 3d 20 6e 0d 00 8e 1f |In R0| = n....|
|000063f0| 3b 20 4f 75 74 20 20 20 | 52 30 20 3d 20 72 6f 75 |; Out |R0 = rou|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.