Skip to content

Instantly share code, notes, and snippets.

@magical magical/dpsprdiff-working.pl Secret
Created Jul 29, 2017

Embed
What would you like to do?
#<a_magical_me> it'd be fun sometime to see the algorithm you guys originally used to decrypt the sprites
#<a_magical_me> just for kicks and giggles
#<Eevee> ha
#<Eevee> well zhen lin had a totally working algorithm before I did so I never finished mine
#<Eevee> but this does spit out a correct sprite: http://pastebin.com/m6977031a
#<Eevee> dpsprdiff-working.pl
#<Eevee> one of a dozen dpsprdiff*.pl scripts
#<Eevee> I was in rather a hurry and didn't have git yet 8|
#<Eevee> there's a good collection of other such garbage
#<Eevee> I think I managed to construct a mask without knowing the original algorithm or constants by reusing the first row or so of pixels
#<Eevee> alas this didn't work for a few big pokemon
#<Eevee> and it was pretty clever in the end I guess
#<a_magical_me> wow
#<Eevee> yeeah. hence, porigon-z
#<Eevee> this is kinda amazing and I'm not even sure why it works
#<a_magical_me> haha
#<Eevee> and it goes by bytes, not words
use strict;
use GD;
my @bytes = qw(
47 63 a4 b9 55 2b 2a 81 33 e5 c0 9f 61 a8 e6 da 5f e0 1c 1c ad 2c e2 d0 cb 40 b8 4a 39 c4 1e 1f 77 32 94 87 05 bb 9a c1 63 21 b0 6e 11 9d 56 f4 8f b9 0c dc 5d 36 52 33 fb e6 a8 eb e9 92 8e 3a a7 d5 84 f9 b5 fe 0a 06 93 f1 a0 a1 c1 05 c6 d1 bf e6 fc bf 0d 74 c2 19 2b a1 98 70 99 55 fe 99 d7 4c 74 0f 65 f6 7a 4e c3 55 90 38 71 e2 36 73 ef 67 ec c7 bd e5 32 84 5b 6f 88 d9 49 0c 6e 3d 07 98 64 c9 15 a2 ea 9a f3 4d 80 33 21 33 a6 d8 1f 3d dc f3 6d 8b a2 72 8b 51 78 26 f9 b6 de 24 37 b7 54 27 c5 01 5a eb 23 da 70 92 d1 f7 16 02 4f 66 cc 43 1d 65 12 e5 bb 47 68 57 a9 55 4e 50 67 aa 44 29 75 15 ca 3f 53 fa 60 55 81 30 86 ef 7f e3 bc b7 cd 72 82 db eb 51 58 6c 59 e8 be bf 97 71 34 cf 25 dd 3a 98 83 ae 50 7c 31 dd f6 a0 af b4 ac 4f 7d b4 f2 55 1b 70 48 65 09 6f 2e 73 c7 0c 24 19 d5 58 aa f4 b3 f6 40 07 e1 fd 66 16 df d9 9c 0b 2d 2a 62 54 4b a2 38 42 b9 e9 9e 6a f7 7b 14 07 85 88 1a 55 e3 d2 30 f6 91 92 d6 4f 0f 53 8c eb dd d3 d2 d6 7b e8 28 03 69 58 0e a6 27 bf 04 99 35 6c 8a b9 13 43 20 49 41 9b 46 4d 3f 20 7c ef 8d b1 42 dd ab 42 18 a8 19 bb 7e 25 57 d6 f4 ce e5 03 fa 21 43 47 10 00 f1 17 b6 0e 6f 41 6c 17 3d c3 b2 67 db b0 08 31 c9 11 ee e8 87 c1 e4 a8 95 4f 6a 8e 73 df 00 1b a1 08 26 94 9f b6 5c 63 ed 08 22 76 0b 33 f8 9d 79 5c 5e f0 b7 80 d4 26 45 4f da fe a3 0b f0 99 51 6d 96 dd cf 7f 4c d3 9d 82 92 08 3b c9 e8 ee 29 9b ce 3b e7 13 c4 48 f5 02 4a 73 d3 cb e0 7c 01 46 06 eb ff 9c 3c 67 4d 30 02 1f 6b 73 d8 23 d9 cd 3e cb 17 7b b4 0e a5 6a ba eb 03 20 d0 c3 b1 92 76 bc 2f 0e 2c 1f fd 11 72 b9 9b 31 c8 3c 89 f4 ae 9e 47 b6 a4 78 55 86 2a 68 33 08 c0 6e 61 53 e6 51 5f d3 1c fb ad 27 e2 d7 cb 03 b8 39 39 0f 1e b6 77 c5 94 86 05 56 9a e8 63 84 b0 7d 11 88 56 ab 8f ec 0c fb 5d 71 52 7a fb e9 a8 1a e9 1d 8e 11 a7 a8 84 38 b5 d9 0a 6d 93 94 a0 f0 c1 30 c6 c8 bf 59 fc 1e 0d ef c2 a0 2b e4 98 df 99 20 fe b0 d7 5f 74 8e 65 11 7a f5 c3 38 90 c7 71 4d 36 aa ef 1a ec 66 bd a0 32 4b 5b f2 88 88 49 17 6e 94 07 eb 64 88 15 fd ea 81 f3 70 80 02 21 de a6 4f 1f 30 dc d2 6d 86 a2 79 8b 14 78 15 f9 01 de bb 37 4a 54 26 c5 9c 5a 12 23 3d 70 a1 d1 e2 16 b9 4f 99 cc 62 1d a0 12 2c bb 4a 68 86 a9 e0 4e 27 67 7d 44 68 75 f0 ca a6 53 9d 60 a4 81 5b 86 e6 7f 56 bc 16 cd ed 82 62 eb 94 58 db 59 b3 be d6 97 84 34 4e 25 f8 3a 3f 83 91 50 0b 31 48 f6 d7 af 67 ac ee 7d 6f f2 1c 1b f3 48 14 09 7a 2e ca c7 5f 24 d8 d5 b3 aa db b3 19 40 d6 e1 a8 66 8d df cc 9c ea 2d 25 62 5b 4b 65 38 31 b9 34 9e 01 f7 0e 14 06 85 23 1a 7c e3 35 30 05 91 7d d6 06 0f 86 8c 0a dd 0e d2 1d 7b eb 28 32 69 e3 0e 7d 27 92 04 d8 35 47 8a 20 13 e6 20 98 41 c6 46 44 3f 93 7c 4e 8d 2c 42 64 ab 85 18 17 19 86 7e 3c 57 e9 f4 4d e5 1e fa c8 43 2a 10 8f f1 82 b6 45 6f f4 6c b6 3d 7e b2 2e db 33 08 e0 c9 1c ee 3f 87 14 e4 67 95 aa 6a 75 73 02 00 ea a1 b3 26 0b 9f a9 5c 42 ed 03 22 7d 0b f6 f8 8c 79 a7 5e 87 b7 13 d4 25 45 ea da 25 a3 6e f0 a8 51 58 96 94 cf b2 4c f2 9d bd 92 4f 3b cc e8 1d 29 26 ce 12 e7 e6 c4 87 f5 dd 4a da d3 6e e0 cb 01 71 06 e2 ff 0f 3c c6 4d ab 02 a6 6b b6 d8 92 d9 98 3e e2 17 8e b4 8d a5 85 ba 92 03 03 d0 52 b1 fd 76 f3 2f c1 2c be fd cc 72 80 9b b4 c8 eb 89 ff ae f5 47 09 a4 37 55 e1 2a 4f 33 2b c0 3d 61 fe e6 c8 5f c6 1c da ad 22 e2 de cb c6 b8 28 39 5a 1e 4d 77 58 94 85 05 f1 9a 0f 63 e7 b0 8c 11 73 56 62 8f 1f 0c 1a 5d ac 52 c1 fb ec a8 49 e9 a8 8e e8 a7 7b 84 77 b5 b4 0a d4 93 37 a0 3f c1 5b c6 bf bf cc fc 7d 0d 6a c2 27 2b 27 98 4e 99 eb fe c7 d7 72 74 0d 65 2c 7a 9c c3 1b 90 56 71 b8 36 e1 ef cd ec 05 bd 5b 32 12 5b 75 88 37 49 22 6e eb 07 3e 64 47 15 58 ea 68 f3 93 80 d1 21 89 a6 c6 1f 23 dc b1 6d 81 a2 80 8b d7 78 04 f9 4c de 52 37 dd 54 25 c5 37 5a 39 23 a0 70 b0 d1 cd 16 70 4f cc cc 81 1d db 12 73 bb 4d 68 b5 a9 6b 4e fe 67 50 44 a7 75 cb ca 0d 53 40 60 f3 81 86 86 dd 7f c9 bc 75 cd 68 82 e9 eb d7 58 4a 59 7e be ed 97 97 34 cd 25 13 3a e6 83 74 50 9a 31 b3 f6 0e af 1a ac 8d 7d 2a f2 e3 1b 76 48 c3 09 85 2e 21 c7 b2 24 97 d5 0e aa c2 b3 3c 40 a5 e1 53 66 04 df bf 9c c9 2d 20 62 62 4b 28 38 20 b9 7f 9e 98 f7 a1 14 05 85 be 1a a3 e3 98 30 14 91 68 d6 bd 0f b9 8c 29 dd 49 d2 64 7b ee 28 61 69 6e 0e 54 27 65 04 17 35 22 8a 87 13 89 20 e7 41 f1 46 3b 3f 06 7c ad 8d a7 42 eb ab c8 18 86 19 51 7e 53 57 fc f4 cc e5 39 fa 6f 43 0d 10 1e f1 ed b6 7c 6f a7 6c 55 3d 39 b2 f5 db b6 08 8f c9 27 ee 96 87 67 e4 26 95 05 6a 5c 73 25 00 b9 a1 5e 26 82 9f 9c 5c 21 ed fe 22 84 0b b9 f8 7b 79 f2 5e 1e b7 a6 d4 24 45 85 da 4c a3 d1 f0 b7 51 43 96 4b cf e5 4c 11 9d f8 92 96 3b cf e8 4c 29 b1 ce e9 e7 b9 c4 c6 f5 b8 4a 41 d3 11 e0 1a 01 9c 06 d9 ff 82 3c 25 4d 26 02 2d 6b f9 d8 01 d9 63 3e f9 17 a1 b4 0c a5 a0 ba 39 03 e6 d0 e1 b1 68 76 2a 2f 74 2c 5d fd 87 72 47 9b 37 c8 9a 89 0a ae 4c 47 5c a4 f6 55 3c 2a 36 33 4e c0 0c 61 a9 e6 3f 5f b9 1c b9 ad 1d e2 e5 cb 89 b8 17 39 a5 1e e4 77 eb 94 84 05 8c 9a 36 63 4a b0 9b 11 5e 56 19 8f 52 0c 39 5d e7 52 08 fb ef a8 78 e9 33 8e bf a7 4e 84 b6 b5 8f 0a 3b 93 da a0 8e c1 86 c6 b6 bf 3f fc dc 0d e5 c2 ae 2b 6a 98 bd 99 b6 fe de d7 85 74 8c 65 47 7a 43 c3 fe 90 e5 71 23 36 18 ef 80 ec a4 bd 16 32 d9 5b f8 88 e6 49 2d 6e 42 07 91 64 06 15 b3 ea 4f f3 b6 80 a0 21 34 a6 3d 1f 16 dc 90 6d 7c a2 87 8b 9a 78 f3 f9 97 de e9 37 70 54 24 c5 d2 5a 60 23 03 70 bf d1 b8 16 27 4f ff cc a0 1d 16 12 ba bb 50 68 e4 a9 f6 4e d5 67 23 44 e6 75 a6 ca 74 53 e3 60 42 81 b1 86 d4 7f 3c bc d4 cd e3 82 70 eb 1a 58 b9 59 49 be 04 97 aa 34 4c 25 2e 3a 8d 83 57 50 29 31 1e f6 45 af cd ac 2c 7d e5 f2 aa 1b f9 48 72 09 90 2e 78 c7 05 24 56 d5 69 aa a9 b3 5f 40 74 e1 fe 66 7b df b2 9c a8 2d 1b 62 69 4b eb 38 0f b9 ca 9e 2f f7 34 14 04 85 59 1a ca e3 fb 30 23 91 53 d6 74 0f ec 8c 48 dd 84 d2 ab 7b f1 28 90 69 f9 0e 2b 27 38 04 56 35 fd 8a ee 13 2c 20 36 41 1c 46 32 3f 79 7c 0c 8d 22 42 72 ab 0b 18 f5 19 1c 7e 6a 57 1e e5 4b e5 54 fa 07 43 f0 10 ad f1 58 a7 b2 6f 5a 6c f4 3d f4 b2 bc db 39 08 3e c9 32 ee ed 87 ba e4 e5 95 60 6a 43 73 58 11 89 a1 09 26 e9 9e 8f 5c 00 ed f9 32 9a 0b 7c f8 6a 79 3d 5e b5 b7 39 d4 23 45 20 da 73 a3 34 f0 c6 51 2e 96 02 df 2b 6f 31 9d 33 82 ce 3b d2 e8 7b 29 2d fd 33 e7 8c c4 05 f5 93 4a a8 d3 b4 e0 69 01 c7 06 d0 ff f5 3c 84 4d a1 02 b4 6b 0d eb 62 d9 2e 3e 21 16 b4 b4 8b a5 ab 8b d3 0c c9 d0 70 b1 d3 76 61 2f 27 2c fc fd 42 72 0e 9b ba c8 49 89 15 ae a3 76 9c 97 a7 55 97 0b 2e 3c 71 c0 db 91 66 d5 85 50 ac 1c 98 ad 18 e2 ec cb 4c b8 06 39 f0 1e 7b 77 7e 94 83 05 27 9a 5d 73 9e 83 89 10 49 46 e2 7c 85 0c 58 5d 0d 61 7c 08 f2 a8 a7 e9 be 8e 96 a7 21 84 f5 b5 6a 0a a2 93 7d a0 dd c1 b1 c6 ad 8e 81 cf 28 0d 70 e1 06 d8 a2 98 2c a6 b2 cd c6 d8 98 74 0b 65 62 7a ea c3 e1 90 74 71 8e 36 4f ef 33 ec 43 bd d1 32 a0 4b 48 bb a6 48 38 5f ab 34 1b 64 c5 e5 3d d9 05 00 d9 80 6f 21 df a6 b4 1f 09 dc 6f 6d 77 a2 8e 8b 5d 78 e2 f9 e2 de 70 04 3b 67 10 c4 72 69 b5 10 94 7f 3e e2 90 25 ed bc 32 cc bf 1d 51 12 01 bb 53 68 13 a9 81 4e ac 67 f6 44 25 75 81 ca db 6c 05 53 a2 92 dc b7 e8 4c 8c 43 33 f2 6d b1 c4 d8 52 58 28 59 14 be 1b 97 bd 34 cb 25 49 3a 34 83 3a 50 b8 31 89 f6 8c 9c 09 9f f8 82 93 c0 42 28 4f 59 1e 3a a8 b7 fc 34 58 24 15 d5 c4 aa 90 b3 82 40 43 e1 a9 66 f2 df a5 9c 87 2d 16 62 70 74 3d 00 cd aa ea bd f5 c4 f4 37 12 ba c7 29 68 d0 51 30 32 91 3e d6 2b 0f 1f 8c 67 dd bf d2 f2 7b f4 28 bf 69 84 0e f2 14 81 37 66 07 eb b9 66 20 fc d3 b6 72 d4 cc 1a cc ec 7c 6b 8d 9d 42 f9 ab 4e 18 64 19 e7 7e 81 57 22 f4 ca e5 6f fa bd 7c 70 28 0f 03 f1 85 d9 5c 3e 5f 60 0e 9c 21 09 f8 b3 08 ed c9 3d ee 44 87 0d e4 a4 95 bb 6a 2a 73 6b 00 57 a1 b4 26 80 ad 21 64 e0 de c7 11 a1 38 0c eb 6a 4a 21 d4 7f 45 cc d4 22 45 bb da 9a a3 97 f0 d5 51 19 96 b9 cf 4b 4c 4f 9d 6e 92 24 14 e6 62 88 16 f4 fd a4 d4 6c f7 57 c6 5d e3 85 f0 58 e0 b8 01 f2 06 c7 ff 68 3c e3 4d 1c 02 3b 6b 7f d8 df d9 f9 3e d7 35 55 ac 39 96 e5 89 b4 30 9f e2 cc 22 94 4e ba dd da 2c 9b fd fd 72 d5 9b 3d c8 f8 89 20 ae fa 47 02 a4 74 55 f2 2a 04 1c b6 49 b8 52 cc d5 1e 6c ac 2f 45 9e 80 48 cb e9 00 b8 f5 39 3b 1e 12 77 11 94 82 05 c2 9a 84 63 10 b0 b9 11 34 56 77 1d 21 2d 44 6e 6e 61 a5 c8 c6 9a 4e 40 d3 a6 4f a8 f4 84 34 b5 45 0a 09 93 20 a0 2c c1 dc c6 a4 bf 25 fc 9a 0d db c2 bc db 62 01 ba aa 7f cd 3f e4 48 46 b8 fd d4 e0 b9 e1 cb 90 03 71 f9 36 86 ef e6 ec e2 bd 8c 32 67 5b fe 88 44 49 43 6e 00 85 af 55 b7 26 5a d9 2e c0 cf b3 bd 8b 00 84 09 10 fc dc 4e 6d 72 a2 95 8b 20 78 d1 f9 2d de 17 37 96 54 22 c5 08 5a ae d3 4b e8 ec ef bd 25 a6 7c ff f2 ed 9e 26 98 6a 49 56 68 42 a9 0c c6 83 67 c9 44 64 75 5c ca 42 53 29 60 e0 81 07 86 c2 50 a0 af a3 fe ea b1 4d fa 92 6b a4 c1 46 96 c0 97 d0 34 4a 25 64 3a db 83 1d 50 47 31 f4 f6 b3 af 33 ac 6a 7d 5b f2 38 1b d0 ca 33 a0 95 1d 15 f4 33 0a e7 e6 87 33 5f 41 a5 40 12 e1 dc ec 69 df 98 9c 66 2d 11 62 77 4b 71 38 ed b9 60 9e 5d d8 a8 27 f0 b6 bc 29 eb d0 f2 03 72 09 a1 fe ed 0f 52 8c 86 dd 7a da 39 7b f7 28 ee 69 0f 0e d9 27 de 04 d4 35 b3 8a bc 13 5d d2 37 c8 41 75 13 0c f7 52 f9 be 80 ca a8 a4 91 18 d3 99 1b f4 98 57 35 f4 49 e5 8a fa 64 43 b6 10 cb f1 2e b6 21 7f 32 5f 01 6e 5e 81 79 e8 0c 3b af 41 6a 1c 9b 87 60 e4 63 15 be 62 11 73 8e 00 26 a1 5f 26 e7 9f 75 5c be ed ef 22 99 0b 12 0a ab f3 80 6a d0 84 c5 fa 12 76 de f8 33 a3 fa 78 6c f9 ae 9e 70 cf 7e 4c 6e 9d a9 92 6b 3b d8 e8 d9 29 52 ce 6e e7 c3 f7 b0 c6 7a 79 45 e0 c9 d3 25 23 ef 09 be ff db 3c 42 d5 3d 0a c2 6b c2 d8 4e d9 c4 3e 3e 17 da b4 89 a5 f1 ba 2e 03 8f 21 6d 18 9a 45 fc 1c 6e 1e 09 df 9a 80 93 9b c0 60 0d 23 81 a6 51 47 55 a4 33 55 4d 2a eb 33 b7 c0 79 61 aa e6 a4 5f 92 23 65 9e f1 dd c9 f8 e1 9b f6 c8 89 1e a9 77 24 1c 09 af d7 9a ab 63 73 b0 c8 11 1f 56 3e 8f eb 0c 96 5d 98 52 dd fb f8 a8 3a d7 f7 bd 67 96 f4 b7 50 a7 d1 05 70 93 c3 20 d1 3e ae 3c 9b bf 98 fc f9 0d 56 c2 43 2b 33 98 0a 99 17 fe 23 d7 be 4b 3a 56 d7 3e 0b f0 94 b2 b0 7e 64 36 bd ef 19 46 2b 17 cd 32 2e 5b 81 88 f3 49 4e 6e 47 07 8a 64 43 15 c4 ea 04 f3 1f 80 32 12 06 b4 83 2c dc ef 0f 4f 62 a2 9c 8b e3 78 3f 35 e7 47 a1 37 29 54 21 c5 a3 5a d5 23 2c 70 ec d1 79 16 4c 4f 88 df ce 2e 34 46 bb 88 7b 4a 6e 5b 97 4e 5a 67 9c ec 59 ea 9d c5 a9 53 cc 60 2f 81 32 86 b9 7f 95 bc f1 cd 54 82 05 eb e3 48 15 6a 99 8d 7a a4 d0 16 eb 3a 8d 3a 82 83 00 a0 1a fd c0 6f 13 af e6 ac 09 7d 16 f2 ff 1b 82 48 7f 09 b1 2e 7d c7 ee 15 81 e7 49 ff 7a 91 ea 61 13 1e ff 66 e0 df 8b 6c 8a d1 95 9b 7e 4b 34 38 dc b9 ab 9e f4 f7 ed 14 01 85 2a 1a 3f e3 24 20 61 83 26 e5 aa 2c a7 ae 84 2f ca d2 80 7b fa e3 d1 92 13 f1 bf 27 b1 04 13 35 8e 8a 23 13 15 20 23 41 9d 46 17 3f d2 8d 26 72 bc 60 25 89 6f e3 4d 19 7d 7e af 57 48 4b 04 19 3c 63 04 43 99 10 5a f1 99 b6 58 6f 73 6c d1 3d 25 b2 11 db c2 08 ba c6 ac c1 d0 a5 91 5f d9 9a 71 6a f8 73 01 cc 09 3e 05 26 5e 9f 68 5c 9d ed ea 22 a0 0b c5 f8 37 79 1e 5e 7a b7 f2 d4 20 45 01 25 17 1c e6 4b 0c 51 ef 96 27 cf 4e 80 31 02 1c 6d b2 3b db e8 08 29 dd ce 45 e7 05 c4 c2 f5 24 4a dd d3 9d e0 56 01 48 f6 4a 40 f5 87 6a bf 1d 02 b9 64 ca 64 32 20 8f 3e 55 17 ed b4 08 a5 0c ba d5 03 72 d0 1d b1 14 76 06 2f 40 2c d9 fd 73 82 d8 20 f8 73 74 76 36 ae 57 b7 63 68 0d ac a8 2a d2 33 da c0 48 61 55 e6 1b 5f 85 1c 35 ad 09 e2 01 cb 95 b8 d3 39 d1 1e ff cc 8c 2f ab 27 0b 95 1d 9c 6d 4f 57 19 0a 56 f5 8f 1e 0c b5 5d d3 52 24 fb fb a8 34 e9 5f 8e 1b a7 9a 84 b2 b5 fb ba 1c b1 d4 6b e8 f3 cd 36 6e 00 c0 03 c0 02 d1 c2 ca 2b 76 98 79 99 e2 fe 3a d7 d1 74 88 65 b3 7a df c3 8a 90 21 71 cf 36 4f c3 6e 57 0c 9f 31 ce 49 a4 ff 88 a2 49 59 6e 9e 07 dd 64 02 15 1f ea eb f3 42 80 dc 21 e0 a6 19 1f e2 dc 0c 6d 68 8d 88 a9 84 53 8d cb 00 11 be 88 43 54 a8 c5 3e 5a fc 23 8f 70 fb d1 64 16 03 4f cb cc 1c 1d 02 12 d6 bb 5c 68 a0 a9 22 be 83 45 4d f6 c0 47 21 06 ec a8 60 60 7e 81 5d 86 b0 7f 08 bc 50 cd cf 82 8c eb 26 58 75 59 75 be 60 97 f6 34 48 25 9a 05 0b a1 c1 72 47 02 09 3a 9e 50 99 ac a8 7d d1 f2 c6 1b 05 48 2e 09 bc 2e d4 c7 51 24 52 d5 d5 aa 45 b3 eb 40 b0 e1 aa 96 65 ec 5d be 16 1e c4 ae 39 b0 f7 38 cb b9 f6 9e 8b f7 80 14 00 85 c5 1a 66 e3 87 30 5f 91 ff d6 50 0f b8 8c c4 dd 70 ed f4 59 df 0a 7f 5a e9 c2 3c 28 84 04 52 35 69 8a 8a 13 b8 20 72 41 c8 46 0e 3f 45 7c 88 8d 0e 42 8e ab 17 18 b1 19 48 8e e4 64 68 c7 74 d6 03 36 0e fc 73 10 e9 f1 04 b6 8f 6f 26 6c 70 3d e0 b2 d8 db 45 08 fa c9 5e ee 49 87 06 e4 e1 95 cc 45 ec 40 e7 33 f7 92 79 ea 2e 64 5b 5c 7c ed e5 22 a7 0b 88 f8 26 79 69 5e 11 b7 85 d4 1f 45 8c da 0f a3 c0 f0 02 51 da 66 fc fe d7 7f 9f a2 d3 5e 42 c4 de e8 37 29 68 ce 1c e7 d8 c4 01 f5 ff 4a 44 d3 40 e0 a5 01 73 06 ac ff c1 3c 00 4d 8d 2d c2 58 7b eb df 1a 96 82 97 18 00 b4 87 a5 27 ba 7c 03 55 d0 ac b1 7f 76 3d 2f f3 2c 78 fd 2e 72 2a 9b c6 c8 05 89 41 5e dd 55 c4 97 82 9a cf 91 02 3c fd c0 17 61 00 e6 92 5f 78 1c 14 ad 04 e2 08 cb 58 b8 c2 39 1c 1e d7 77 ca 94 7f 05 93 b5 db 42 0a 83 15 dd 49 ed 57 8f 51 0c d4 5d 0e 52 6b fb fe a8 63 e9 ea 8e f2 a7 6d 84 f1 b5 d6 0a 3e 93 09 a0 19 c1 5d 36 a1 9d 41 cf 84 f2 b3 79 ea d0 b9 98 e8 99 ad fe 51 d7 e4 74 07 65 ce 7a 86 c3 6d 90 b0 71 3a 36 2b ef ff ec bf bd bd c2 9e a9 b4 bb a2 b6 db d5 4e 08 30 64 c1 15 7a ea d2 f3 65 80 ab 21 8b a6 90 1f d5 dc eb 6d 63 a2 aa 8b 69 78 9e f9 0e de 43 ae e0 fe e5 c5 29 e1 02 d2 f2 70 0a d1 4f 16 ba 4f fe cc 3b 1d 3d 12 1d bb 5f 68 cf a9 ad 4e 08 67 42 44 21 75 ed 3a ee aa b8 ca 35 81 37 9d b5 70 7b bc af cd 4a 82 13 eb 69 58 e4 59 40 be 77 97 09 34 c7 25 b5 3a d0 83 c6 50 f4 31 35 f6 d7 56 d5 06 bd 7d 8c dd af e9 88 48 dd 09 c7 2e 2b c7 a4 24 11 d5 30 aa 2c b3 0e 40 7f e1 55 66 ce df 71 9c 03 2d 02 92 14 b2 13 92 b5 b9 b1 b5 00 05 13 14 ff 85 60 1a 8d e3 ea 30 6e 91 ea d6 07 0f eb 8c e3 dd ab d2 0e 7b 00 28 7b 69 b0 0e 41 d5 64 37 9e 35 44 75 03 e1 5b 20 c1 41 f3 46 05 3f b8 7c e7 8d 89 42 15 ab 5a 18 20 19 13 7e dd 57 6e f4 c6 e5 db fa 46 b1 6c 23 77 f1 6f 49 34 9d d9 6c 0f 3d 9b b2 9f db c8 08 a9 c9 69 ee a0 87 59 e4 a0 95 27 6a c6 73 f7 00 93 a1 60 26 bc 60 7f 6d 54 ed e0 d2 51 04 4b f8 15 79 b4 5e a8 b7 18 d4 1e 45 27 da 36 a3 23 f0 11 51 c5 96 95 cf 17 4c cb 9d 5a 92 b0 c4 d0 d9 69 29 f3 3e 0c e8 ab c4 40 f5 da 4a ab d3 e3 e0 f4 01 9e 06 a3 ff 34 3c 5f 4d 08 02 57 6b 8b d8 9b d9 25 3e 83 17 ec 4b 06 a5 42 ba 23 03 38 d0 3b b1 ea 76 74 2f a6 2c 17 fd e9 72 f1 9b 49 c8 b4 89 4c ae 56 47 4e a4 70 55 5e 2a a0 33 df 3f e6 61 ab e6 09 5f 6b 1c f3 ad ff e2 0f cb 1b b8 b1 39 67 1e 6e 77 5d 94 7e 05 2e 9a 20 63 9c b0 f5 11 e0 56 63 8f 84 0c f3 5d 49 52 b2 fb 01 a8 92 e9 75 8e c9 a7 40 84 30 b5 b1 0a a5 93 ac a0 68 c1 88 c6 80 bf f1 fc 16 0d c7 c2 d8 2b fc 98 57 99 78 fe 68 d7 f7 74 86 65 e9 7a 2d c3 50 90 3f 71 a5 36 62 ef b2 ec 5e bd 78 32 83 5b 0a 88 00 49 6f 6e 4c 07 83 64 80 15 d5 ea b9 f3 88 80 7a 21 36 a6 07 1f c8 dc ca 6d 5e a2 b1 8b 2c 78 8d f9 59 de 73 37 e2 54 1e c5 74 5a 4a 23 55 70 19 d1 3a 16 71 4f 31 cc 5a 1d 78 12 64 bb 62 68 fe a9 38 4e df 67 15 44 60 75 c8 ca de 53 b5 60 1c 81 b3 86 9e 7f ee bc 0e cd c5 82 9a eb ac 58 53 59 0b be 8e 97 1c 34 46 25 d0 3a 77 83 a9 50 83 31 a0 f6 8f af ff ac e6 7d 47 f2 54 1b 0b 48 8c 09 d2 2e 82 c7 f7 24 d0 d5 8b aa 13 b3 31 40 4e e1 00 66 45 df 64 9c e2 2d fd 62 93 4b 7d 38 a9 b9 8c 9e b9 f7 a6 14 fe 85 fb 1a b4 e3 4d 30 7d 91 d5 d6 be 0f 1e 8c 02 dd e6 d2 55 7b 03 28 aa 69 3b 0e 35 27 2a 04 d0 35 1f 8a 58 13 fe 20 10 41 1e 46 fc 3f 2b 7c 46 8d 04 42 9c ab 9d 18 8f 19 de 7e f4 57 81 f4 45 e5 f6 fa 00 43 42 10 07 f1 da b6 fd 6f 8c 6c ae 3d 56 b2 66 db 4b 08 58 c9 74 ee f7 87 ac e4 5f 95 82 6a ad 73 1a 00 62 a1 0b 26 c3 9f 41 5c 3a ed db 22 b5 0b 0e f8 04 79 ff 5e 3f b7 ab d4 1d 45 c2 da 5d a3 86 f0 20 51 b0 96 4c cf 4a 4c ea 9d 95 92 87 3b e4 e8 95 29 7e ce ca e7 7e c4 7f f5 b5 4a 12 d3 86 e0 43 01 c9 06 9a ff a7 3c be 4d 83 02 de 6b ce d8 0a d9 f0 3e 9a 17 26 b4 85 a5 5d ba ca 03 1b d0 ca b1 55 76 ab 2f 59 2c b6 fd a4 72 b8 9b cc c8 63 89 57 ae ad 47 a1 a4 2f 55 b9 2a 87 33 43 c0 b5 61 56 e6 80 5f 5e 1c d2 ad fa e2 16 cb de b8 a0 39 b2 1e 05 77 f0 94 7d 05 c9 9a 47 63 ff b0 04 11 cb 56 1a 8f b7 0c 12 5d 84 52 f9 fb 04 a8 c1 e9 00 8e a0 a7 13 84 6f b5 8c 0a 0c 93 4f a0 b7 c1 b3 c6 77 bf 64 fc 75 0d 42 c2 5f 2b 3f 98 c6 99 43 fe 7f d7 0a 74 05 65 04 7a d4 c3 33 90 ce 71 10 36 99 ef 65 ec fd bd 33 32 4a 5b 8d 88 af 49 7a 6e a3 07 d6 64 3f 15 30 ea a0 f3 ab 80 49 21 e1 a6 7e 1f bb dc a9 6d 59 a2 b8 8b ef 78 7c f9 a4 de 0a 37 75 54 1d c5 0f 5a 71 23 b8 70 28 d1 25 16 28 4f 64 cc 79 1d b3 12 ab bb 65 68 2d a9 c3 4e b6 67 e8 44 9f 75 a3 ca 45 53 58 60 6b 81 de 86 95 7f 61 bc 6d cd 40 82 21 eb ef 58 c2 59 d6 be a5 97 2f 34 c5 25 eb 3a 1e 83 8c 50 12 31 0b f6 c6 af b2 ac 85 7d 02 f2 1b 1b 8e 48 3b 09 dd 2e d9 c7 4a 24 8f d5 e6 aa fa b3 54 40 1d e1 ab 66 bc df 57 9c c1 2d f8 62 9a 4b 40 38 98 b9 d7 9e 50 f7 39 14 fd 85 96 1a db e3 b0 30 8c 91 c0 d6 75 0f 51 8c 21 dd 21 d2 9c 7b 06 28 d9 69 c6 0e 0c 27 fd 04 0f 35 fa 8a bf 13 a1 20 5f 41 49 46 f3 3f 9e 7c a5 8d 7f 42 23 ab e0 18 fe 19 a9 7e 0b 57 94 f4 c4 e5 11 fa a7 43 25 10 96 f1 45 b6 34 6f 3f 6c 4d 3d 11 b2 2d db ce 08 07 c9 7f ee 4e 87 ff e4 1e 95 dd 6a 94 73 3d 00 31 a1 b6 26 3a 9f 34 5c 19 ed d6 22 bc 0b d1 f8 f3 79 4a 5e d6 b7 3e d4 1c 45 5d da 84 a3 e9 f0 2f 51 9b 96 03 cf 7d 4c 09 9d d0 92 ce 3b e7 e8 c4 29 09 ce a1 e7 51 c4 be f5 90 4a 79 d3 29 e0 92 01 f4 06 91 ff 1a 3c 1d 4d fe 02 65 6b 11 d8 79 d9 bb 3e b1 17 39 b4 04 a5 78 ba 71 03 fe d0 59 b1 c0 76 e2 2f 0c 2c 55 fd 5f 72 7f 9b 4f c8 12 89 62 ae 04 47 f4 a4 ee 55 14 2a 6e 33 66 c0 84 61 01 e6 f7 5f 51 1c b1 ad f5 e2 1d cb a1 b8 8f 39 fd 1e 9c 77 83 94 7c 05 64 9a 6e 63 62 b0 13 11 b6 56 d1 8f ea 0c 31 5d bf 52 40 fb 07 a8 f0 e9 8b 8e 77 a7 e6 84 ae b5 67 0a 73 93 f2 a0 06 c1 de c6 6e bf d7 fc d4 0d bd c2 e6 2b 82 98 35 99 0e fe 96 d7 1d 74 84 65 1f 7a 7b c3 16 90 5d 71 7b 36 d0 ef 18 ec 9c bd ee 32 11 5b 10 88 5e 49 85 6e fa 07 29 64 fe 15 8b ea 87 f3 ce 80 18 21 8c a6 f5 1f ae dc 88 6d 54 a2 bf 8b b2 78 6b f9 ef de a1 37 08 54 1c c5 aa 5a 98 23 1b 70 37 d1 10 16 df 4f 97 cc 98 1d ee 12 f2 bb 68 68 5c a9 4e 4e 8d 67 bb 44 de 75 7e ca ac 53 fb 60 ba 81 09 86 8c 7f d4 bc cc cd bb 82 a8 eb 32 58 31 59 a1 be bc 97 42 34 44 25 06 3a c5 83 6f 50 a1 31 76 f6 fd af 65 ac 24 7d bd f2 e2 1b 11 48 ea 09 e8 2e 30 c7 9d 24 4e d5 41 aa e1 b3 77 40 ec e1 56 66 33 df 4a 9c a0 2d f3 62 a1 4b 03 38 87 b9 22 9e e7 f7 cc 14 fc 85 31 1a 02 e3 13 30 9b 91 ab d6 2c 0f 84 8c 40 dd 5c d2 e3 7b 09 28 08 69 51 0e e3 27 d0 04 4e 35 d5 8a 26 13 44 20 ae 41 74 46 ea 3f 11 7c 04 8d fa 42 aa ab 23 18 6d 19 74 7e 22 57 a7 f4 43 e5 2c fa 4e 43 08 10 25 f1 b0 b6 6b 6f f2 6c ec 3d cc b2 f4 db 51 08 b6 c9 8a ee a5 87 52 e4 dd 95 38 6a 7b 73 60 00 00 a1 61 26 b1 9f 27 5c f8 ed d1 22 c3 0b 94 f8 e2 79 95 5e 6d b7 d1 d4 1b 45 f8 da ab a3 4c f0 3e 51 86 96 ba cf b0 4c 28 9d 0b 92 15 3b ea e8 f3 29 94 ce 78 e7 24 c4 fd f5 6b 4a e0 d3 cc e0 e1 01 1f 06 88 ff 8d 3c 7c 4d 79 02 ec 6b 54 d8 e8 d9 86 3e c8 17 4c b4 83 a5 93 ba 18 03 e1 d0 e8 b1 2b 76 19 2f bf 2c f4 fd 1a 72 46 9b d2 c8 c1 89 6d ae 5b 47 47 a4 ad 55 6f 2a 55 33 89 c0 53 61 ac e6 6e 5f 44 1c 90 ad f0 e2 24 cb 64 b8 7e 39 48 1e 33 77 16 94 7b 05 ff 9a 95 63 c5 b0 22 11 a1 56 88 8f 1d 0c 50 5d fa 52 87 fb 0a a8 1f e9 16 8e 4e a7 b9 84 ed b5 42 0a da 93 95 a0 55 c1 09 c6 65 bf 4a fc 33 0d 38 c2 6d 2b c5 98 a4 99 d9 fe ad d7 30 74 03 65 3a 7a 22 c3 f9 90 ec 71 e6 36 07 ef cb ec 3b bd a9 32 d8 5b 93 88 0d 49 90 6e 51 07 7c 64 bd 15 e6 ea 6e f3 f1 80 e7 21 37 a6 6c 1f a1 dc 67 6d 4f a2 c6 8b 75 78 5a f9 3a de 38 37 9b 54 1b c5 45 5a bf 23 7e 70 46 d1 fb 16 96 4f ca cc b7 1d 29 12 39 bb 6b 68 8b a9 d9 4e 64 67 8e 44 1d 75 59 ca 13 53 9e 60 09 81 34 86 83 7f 47 bc 2b cd 36 82 2f eb 75 58 a0 59 6c be d3 97 55 34 c3 25 21 3a 6c 83 52 50 30 31 e1 f6 34 af 18 ac c3 7d 78 f2 a9 1b 94 48 99 09 f3 2e 87
);
my @rows = ( [] );
my $BLOCK_SIZE = 512;
my $MASK_SIZE = $BLOCK_SIZE;
my @diff;
@bytes = map { hex } @bytes;
my @odddiff;
for my $i (0 .. 127) {
next unless $i % 2;
$odddiff[$i] = ($bytes[$i + $BLOCK_SIZE] - $bytes[$i]) % 256;
}
print "@odddiff\n";
#(641 - 129) - (513 - 1) 1 .. 127
my @lildiff = ( 0 ) x 8;
$lildiff[$_ * 2] = ($bytes[32 + $_ * 2] - $bytes[$_ * 2]) % 256 for 0 .. 3;
#print $bytes[32 + $_ * 2], ' ', $bytes[$_ * 2], "\n" for 0 .. 3;
#print "@lildiff\n"; exit;
my @mask = map { $bytes[$_ * 2], 0 } 0 .. 15;
for my $i (0 .. 31) {
for my $j (1 .. 15) {
$mask[$j * 32 + $i] = ($mask[($j - 1) * 32 + $i] + $lildiff[$i % 8]) & 0xff;
}
}
my @blank = @diff[$MASK_SIZE .. 2 * $MASK_SIZE - 1];
map { printf "%02x ", $_ } @blank;
print "\n\n";
@blank = @mask;
print map { sprintf "%02x ", $_ } @blank;
print "\n\n";
for my $i ($MASK_SIZE .. 6399) {
$diff[$i] = $bytes[$i] ^ $blank[$i % $MASK_SIZE];
printf "%02x ", $diff[$i];
print "\n" unless ($i + 1) % $MASK_SIZE;
}
for my $i (0 .. 49) {
for my $j (1 .. 127) {
next unless $j % 2;
$diff[$i * 128 + $j] = ($bytes[$i * 128 + $j] ^ ($bytes[($i * 128 + $j) % 512] + $odddiff[$j] * int($i / 4))) % 256;
}
}
my @palette = map { hex } qw/15 36 08 35 ec 59 af 7a f2 28 3c 29 1f 7c 1f 7c 8e 29 76 2e 9f 2f c6 20 29 31 8c 3d ff 7f 42 08/;
my $img = new GD::Image(160, 80);
my @pal;
for my $p (0 .. 15) {
my $bytes = $palette[$p * 2] + $palette[$p * 2 + 1] * 256;
my $blue = ($bytes & 0x7c00) >> 10;
my $green = ($bytes & 0x03e0) >> 5;
my $red = $bytes & 0x001f;
$pal[$p] = $img->colorAllocate(int($red * 255 / 31), int($green * 255 / 31), int($blue * 255 / 31));
}
$img->transparent($pal[0]);
my $x = 0;
my $y = 0;
for my $i (0 .. 6399) {
if (($i + 1) % 80 == 1) {
print "\n";
$y = 0;
$x++;
}
print reverse sprintf "%02x", $diff[$i];
$img->setPixel($y, $x, $diff[$i] & 0x0f);
$y++;
$img->setPixel($y, $x, ($diff[$i] & 0xf0) >> 4);
$y++;
}
# print "@diff";
open PNG, ">dp403.png";
binmode PNG;
print PNG $img->png;
close PNG;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.