Created
December 6, 2017 03:05
-
-
Save felipemanga/3be01b70f802e404806732cfcb2a9a88 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:100000000C94D50A0C94FD0A0C94FD0A0C94FD0A7C | |
:100010000C94FD0A0C94FD0A0C94FD0A0C94FD0A44 | |
:100020000C94FD0A0C94FD0A0C9420110C9492116E | |
:100030000C94FD0A0C94FD0A0C94FD0A0C94FD0A24 | |
:100040000C94FD0A0C94FD0A0C94FD0A0C94FD0A14 | |
:100050000C94FD0A0C94FD0A0C94FD0A0C945E0BA2 | |
:100060000C94FD0A0C94FD0A0C94FD0A0C94FD0AF4 | |
:100070000C94FD0A0C94FD0A0C94FD0A0C94FD0AE4 | |
:100080000C94FD0A0C94FD0A0C94FD0A0C94FD0AD4 | |
:100090000C94FD0A0C94FD0A0C94FD0A0C94FD0AC4 | |
:1000A0000C94FD0A0C94FD0A0C94FD0ADC15021652 | |
:1000B0001E1640166C16761683169716A616B816D8 | |
:1000C000C216D916DF16ED16FA16281740174C1768 | |
:1000D00075173A1D9817AB17C017071855188518CC | |
:1000E000C218D818E718F61828192B193A195E19EA | |
:1000F000821994199B19A019D319D519D719D9198F | |
:10010000E119E519E9191E1A211A2D1A5A1A801A2D | |
:100110009B1AA01AA71AE31A341B571B911B9C1B8E | |
:10012000A41BAC1BD5F08D14A1C881CFD9F1AF2091 | |
:1001300000210480284F000000000000284F00002C | |
:1001400000000000284F00000000000029300000DF | |
:1001500000000000284F000000000000284F0000B1 | |
:1001600000000000284F000000000000284F0000A1 | |
:1001700000000000284F000000000000D84ED94EBB | |
:10018000B0000000000000000000000000000000BF | |
:10019000000000000000000000000000000000005F | |
:1001A000000000000000000000000000000000004F | |
:1001B000000000000000000000000000000000003F | |
:1001C000000000000000000000000000000000002F | |
:1001D000000000000000000000000000000000001F | |
:1001E000000000000000000000000000000000000F | |
:1001F00000000000000000000000000000000000FF | |
:1002000000000000000000000000000000000000EE | |
:1002100000000000000000000000000000000000DE | |
:1002200000000000000000000000000000000000CE | |
:1002300000000000000000000000000000000000BE | |
:1002400000000000000000000000000000000000AE | |
:10025000000000000000000000000000000000009E | |
:10026000006108DF08B80D2101307108B0000000FE | |
:10027000000000000000000000000000000000007E | |
:10028000000000000000000000000000000000006E | |
:10029000000000000000000000000000000000005E | |
:1002A000000000000000000000000000000000004E | |
:1002B000000000000000000000000000000000003E | |
:1002C000000000000000000000000000000000002E | |
:1002D000000000000000000000000000000000001E | |
:1002E000000000000000000000000000000000000E | |
:1002F00000000000000000000000000000000000FE | |
:1003000000000000000000000000000000000000ED | |
:1003100000000000000000000000000000000000DD | |
:1003200000B80D2101F000000000000000000000F6 | |
:1003300000535041434520494E56414445525320B5 | |
:1003400020687474703A2F2F7777772E6A756D70E6 | |
:1003500073746174696F6E2E636F2E756B2020202D | |
:10036000200000000000000000000000000000006D | |
:100370000001000A00000000000000000000000072 | |
:10038000000000000000000000000000000000006D | |
:1003900000E8FFDAFFABFE18F919F419F119F05C67 | |
:1003A000F9CBFF9CFF7DFBDCFF5EF5FFFFFFFFFF4E | |
:1003B000FF0000000000000000000000000000003E | |
:1003C000000000000000001200000000000000001B | |
:1003D0000000000000223334320000000000000062 | |
:1003E00000000000233455664300000000000000B8 | |
:1003F000000000023666666653012000000000001F | |
:1004000000000001366666666533430000000000A8 | |
:100410000000000036666654565663200000000057 | |
:10042000000000234654433334666420000000007B | |
:10043000000003445643200024666530000000009D | |
:100440000000246664300001746544200000000050 | |
:10045000000013666532233346633200000000005B | |
:1004600000000366666445666642000000089AB0B4 | |
:100470000000034434666666664212200A7CCCA003 | |
:100480000000002227466666664334438CCCCCC904 | |
:100490009900000002366665446666630CCCC7CCE2 | |
:1004A000C700000233664333323566632CA9B09C23 | |
:1004B000CC00000345653200003466642C900BAC20 | |
:1004C0007A0000346664200000245443CC7A7CCC4B | |
:1004D000B00000246664300000023322AACCCCCCE9 | |
:1004E000990000236664200000000000007CCCCC52 | |
:1004F000CC00000343330000000000009AC799B904 | |
:10050000CC00007CCCA2B0000000000BCCC90000E5 | |
:10051000CC0002C7AACCA000000000007CC20000F2 | |
:1005200009002CC8087C200000000000A77B000008 | |
:1005300000008CC77CC80000000000000000000024 | |
:1005400000000B2CCCCAAB00000000000000000033 | |
:10055000000008ACA29CC2000000000000000000E7 | |
:1005600000000AC7000AAB00A270000000ACCAA0DD | |
:100570000000027A00000000AAC00000087A27707C | |
:100580000000000000000000A8B000000ACAAC2073 | |
:10059000000000000000000000000000002CC772F6 | |
:1005A00000000000000000000000000000AA8BAA6C | |
:1005B00000230EA1232009232780D84EDF44234C9B | |
:1005C000FFD901021DF901980005226FFF010322E6 | |
:1005D0006F00223102222328223800226E00193FA8 | |
:1005E0000F190CFD0F870E252013259C003A2013B0 | |
:1005F000259D00302013259A00192013259B000209 | |
:1006000001E0022F312ADB2009ED6300122F2009BF | |
:10061000ED0119022F3100CA2009ED7300122F20BD | |
:1006200009ED01080E2801CC0E7B01C201B4DD0EDC | |
:10063000610061026103600261256163616461655B | |
:10064000FC63236480220280F3001325D8650366CF | |
:100650001603649011220280236480F865982502B5 | |
:100660000108F82501E8620201E4716571647163B3 | |
:1006700071257002710371027100FD0EA0DD0E6123 | |
:100680000061026103FC63236480F30013651302BD | |
:10069000230381026F136673030303900F23038107 | |
:1006A000236480F8656302030231020201E57103ED | |
:1006B00071027100DC63FD0EA022004C1302025F88 | |
:1006C000A104126B0302800A020081061200730269 | |
:1006D00001F2222D06047F00429E0005226D0401D6 | |
:1006E00003226D00E13F126C7300325E1163003231 | |
:1006F0005E0C6300325E076300325E02011D04D1AE | |
:1007000080E180140E916232226000726E026E905F | |
:10071000022F1902218009722101056200522DB5B4 | |
:10072000A0DD0E0260802C0ED622013B222902059C | |
:100730008104425F0802290D8802608016722972C6 | |
:100740000102014138E9025F8006725F0ED60103A3 | |
:10075000226000FD0EA00DF0A02304332305121B20 | |
:10076000FCDD0E1ADAFD0E0CFD2013259C00FA208C | |
:1007700013259D00FA2013259D00059C001801F506 | |
:1007800023046323050C1B910CFD2225FF1A88020C | |
:10079000259D00F601C3022F31FF100D4C19EDDD30 | |
:1007A0000E18AEFD0E026080020ED6A002609011FF | |
:1007B000226001022F8101125E022E8101125F0E62 | |
:1007C000D6A0610061026103222D00026B822D1A06 | |
:1007D00074136423044C23050C022D826DC1130293 | |
:1007E000026C1A3C836413640302F366136603030A | |
:1007F00080066364F3661366230004622D422DCBEA | |
:10080000710371027100A0610061026103222D0079 | |
:10081000025F822D1A74136423046023050C022DD9 | |
:10082000C11302025E1A3C836413640302F366136D | |
:1008300066030380066364F3661366230003622D78 | |
:10084000422DCD710371027100A0026E90026238D8 | |
:100850000238310106026E900A0E2802238006A19A | |
:10086000081223022312211224222F1722300422DD | |
:100870002E1C226000220139250462012509620133 | |
:10088000250E222700026E902422014C226E122394 | |
:10089000020B230300F300187623020B230340F31B | |
:1008A00000187623020B230300F3001876DD0E0DEB | |
:1008B0004C19ED18AEFD0EA0022480047224011A1A | |
:1008C00002211224DD0E18AE188B022790040FFBB4 | |
:1008D0000102183818AE0FAAFD0EA0610061026176 | |
:1008E0000322015E23020373022303067201059FA4 | |
:1008F000000F73030303900201ED0201414CED016F | |
:100900002422013903028201120105411917023123 | |
:10091000900F222FFF19B00E287103710271002C65 | |
:10092000A172310F19710371027100A0222CFF22F4 | |
:10093000014C05E1BF7F0008322C009F0102122C00 | |
:1009400062010201415EEB022C900E2201396562C8 | |
:1009500001656201656227010F22014C057F0001DC | |
:100960007562010201415EF4A0222C0022014C05B7 | |
:10097000E1BF7F0008322C007F0102122C620102CD | |
:1009800001415EEB022C412C0E22013965620165AA | |
:100990006201657227010F22014C057F000165622B | |
:1009A000010201415EF4A0310611C302F30315F305 | |
:1009B000038106C3026201630001ECA060016100D3 | |
:1009C000610222014CF30031120E130205F14015B1 | |
:1009D00003026201630001EF710271007001A06106 | |
:1009E00000600161026103222C00222600022C31EA | |
:1009F00003752201398201120105122A222D0002FB | |
:100A00002D310459022A1A741229222B00022B318B | |
:100A1000064522014C820182261201057F00345EC8 | |
:100A2000000522280001032228041303F3002304F5 | |
:100A30004C23050C8228822DC1130203031A3C8229 | |
:100A40002913640302F3661366030380066364F3E9 | |
:100A5000661366622B01B6622A622D01A20226810C | |
:100A6000061226622C01867103710270017100A0CA | |
:100A70002013259C00FA2304E723050C1BFC0CFD26 | |
:100A80001A881A881A881A88230205230463230502 | |
:100A90000C1B910CFD2225FF1A8802259C00412386 | |
:100AA00004E723050C1BFC0CFD2225FF1A880225F8 | |
:100AB0009C002D73020302800201D02304E723056A | |
:100AC0000C1AAA2013259C00171BFC0CFD030481A3 | |
:100AD0000613040305910013054110E51A880190DF | |
:100AE000A02304732305111BFC0CFD1A881A881A15 | |
:100AF000881A8823046323050C1B910CFD2225FF13 | |
:100B00001A8802259C00162304732305111BFC0C74 | |
:100B1000FD2225FF1A8802259C000201D6A0610053 | |
:100B200061026103DD0E222D000231E08300122CF0 | |
:100B3000022E822D1A74136423044023050C022D07 | |
:100B4000822CC11302022F1A3C836413640302F344 | |
:100B5000661366030380066364F3661366023062FD | |
:100B60002D422DC5FD0E710371027100A0610213AB | |
:100B700002DF01D0DF01D0DF01D01303DF01F0DF9E | |
:100B800001F0DF01F0C302A302710261032303003D | |
:100B90008010C302DF01D0C303D0C303C3027300BC | |
:100BA00001EE7100A0E0E0E09B0002A102236500DD | |
:100BB0009F00032365FFD180A061002300041A92E7 | |
:100BC0007100A061021AAA1302022541FF05201339 | |
:100BD00025122503025300ED7102A061002300FFDE | |
:100BE0005300FD7100A0230300A3027F01046303EF | |
:100BF00001F78302A06102230200800AC30281057B | |
:100C0000C302730001F4C3027102A0023823020A76 | |
:100C10001AB5C3031AC4121EC303222023221F04C1 | |
:100C20001B482302011AB5C3031AC4121EC30322B0 | |
:100C30002029221F041B4802322302641AB5C30371 | |
:100C40001AC4121EC30322200E221F181B4823029F | |
:100C50000A1AB5C3031AC4121EC303222014221F8A | |
:100C6000181B482302011AB5C3031AC4121EC3037A | |
:100C700022201A221F181B48A06100610261036034 | |
:100C80002D222D00021F822D1A7413642304F323D6 | |
:100C90000512022D821EC1130202201A3C83641326 | |
:100CA000640302F3661366030380066364F366134A | |
:100CB00066230005622D422DCB702D7103710271E8 | |
:100CC00000A06163DC63DD0E610061032364D0F387 | |
:100CD0000013651303C1E366136663640364E10FE5 | |
:100CE000410C0E03648104136490062365FF2364A2 | |
:100CF00080630303034142DD2364D0F300136503E3 | |
:100D000003C1D366136663640364E10F410C0E03F1 | |
:100D1000648104136490062365FF236480630303E6 | |
:100D2000034184DD71037100FD0E7163A06163DC1A | |
:100D300063DD0E6100616561036164236480F3001B | |
:100D4000D8651303C1136663640364E10F410C0D9E | |
:100D50000364810413649005F865236480630303CE | |
:100D60000341C0E07164710371657100FD0E716330 | |
:100D7000A0205088502050D8882070F8A860B0601B | |
:100D80009060D060607CE27C7CB27C7C9A7C7C8EC3 | |
:100D90007C4040A0FE000000007FFC000000003FFF | |
:100DA000F8000000001FF0000000000FF00000003D | |
:100DB000000FF0000000000FF0000000000FF00036 | |
:100DC0000000000FF0000000000FF0000000000F16 | |
:100DD000F0000000000F00000000000001FFFFFF16 | |
:100DE000FF8002000000004004F73CE70320049469 | |
:100DF000A10804A004F738C607A00485202104A098 | |
:100E00000484BDCE04A004000000002007FFFFFF03 | |
:100E1000FFE0000000000000FFFDFFFFFFFFFFFFFD | |
:100E2000FFFFFFFFFDFFF3FFFFFBBFFFE7FBFFFF40 | |
:100E3000FFDFCDEFFCFFFFFFE1FFFDFFFFFE727F55 | |
:100E4000CC3FFFFCF8FF9FBFEFFDFCFF877FFFFE5D | |
:100E5000EFFFE1FFFFE60FF9F3FFFC29FFE25FFF81 | |
:100E6000F9A0FFF36BFFED37FCF97FFFDC77FD3C6A | |
:100E70007FFF9E77CD1EDDF79FBFEC5F87C7C79EC4 | |
:100E8000EEFD9787F7FE365F3F07F3F3977BAC07DE | |
:100E9000E7F9E3FEDC07FF0CFFFFF827FF307FFFD9 | |
:100EA000E027F79F3FFFC027F3CFFFFF4027FBE777 | |
:100EB000FBFF83C7FDE7FFFF0007FCFFFFFE000706 | |
:100EC000FE7FFF7FFFFFFF7FFFFFFFFFFFFF7FFF33 | |
:100ED000FFFFFFFFFFFFFFFF00000000000000001A | |
:100EE0000000000000000000000000000000000002 | |
:100EF00000000000000000000000000000002F4083 | |
:100F000000000000000000000000000000000000E1 | |
:100F100000000000000000000000000000000000D1 | |
:100F200000000000000000000000000000000000C1 | |
:100F30000000000000000000000000000000073377 | |
:100F40009EE0E50008495050550008495C50620099 | |
:100F500008495050520007339EE0E20000000000B4 | |
:100F60000000000000000000000000000000000081 | |
:100F70000000000000000000000000000000000071 | |
:100F80000000000000000E7791452F80094259456E | |
:100F900022000942594522000E625545E2000A42EC | |
:100FA0005345220009425345220009779139220016 | |
:100FB0000000000000000000000000000000000031 | |
:100FC0000000000000000000000000000000000021 | |
:100FD0000000000000000000000000000000000011 | |
:100FE0000FFFFFFFFF800000000000000000000076 | |
:100FF00000000000000000000000000000000000F1 | |
:1010000000000000000000000000000000000000E0 | |
:1010100000000000000000000000000000000000D0 | |
:101020000000000F7191000000084A5B0000000EF4 | |
:10103000725500000008525100000008499100005C | |
:1010400000000000000000000000000000000000A0 | |
:101050000000000000000000000000000000000090 | |
:101060000000000000000000000000000000000080 | |
:101070000000000000000000000000000000000070 | |
:101080000000000000000000000000000000000060 | |
:101090000000000004489100000004489100000096 | |
:1010A000044891000000054A9530000002850A308E | |
:1010B0000000000000000000000000000000003DF3 | |
:1010C0002970000000092F48000000092970000065 | |
:1010D0000029294000000010C94000000000000065 | |
:1010E000000000000000000000EF33DE6480010219 | |
:1010F0004884968000C2788496800022488495981F | |
:1011000001C2489E6498000000000000000000003A | |
:101110000000000000000000000003981290000092 | |
:10112000042412A00000042412C00000042592A090 | |
:10113000000003998C9000000000000000000000F7 | |
:10114000000000000000000000000000000000009F | |
:10115000000000000000000000000000000000008F | |
:10116000000000000000800000000000800000007F | |
:101170000000C00000000001E00000000003E000EB | |
:1011800000000003B00000000007F8000000000F9E | |
:10119000FC000000001FFF000000007FFF80000037 | |
:1011A00000FBDFC0000001FFFFF0000007FFFFF8B9 | |
:1011B00000000FDFFFFF00007FBFFDFFF007FFFF14 | |
:1011C000FFFFFFFF8889FFF7FFF7BAABF3FFFBFFD5 | |
:1011D0009AA9FFFFFFFFBAADFFFFFFFF88A9FF0736 | |
:1011E000FE1FFFFFFEDB00FFFFFFFF07FB8FFFFF80 | |
:1011F000FFFFFFFDF7FFEFFFFFFFFFFFFFFFFFFF19 | |
:10120000FFFFFFFEFEFFFFFBFFFFFFFFFFFFFFBF34 | |
:10121000FFFFFFFFFFFFFFFFFFFFDFFBFDFEFFFF05 | |
:10122000FFFFFFFFFEFFFFFFFFFFFFFFFFFDFFFFD1 | |
:10123000FFFBFFFFF7FFFFFFFFFFFFFFFFFFF9FFD0 | |
:10124000FFFF7FFFD0BFFFDFFFBFB0DFBFFFFFFFAC | |
:10125000C93FFF6FFFFFF0FFFFFFFFFFFFFFFEDF54 | |
:10126000FFFFFFFF7FFFFFF7FFFE3FFFF3FFEF777B | |
:101270007FFFE5FFFFFFFFFFF3FFFFFFFFFFEDFF36 | |
:10128000FFFFFF7EFFFFFBFFFFFFFFFFEFFFFFFF03 | |
:10129000FFFFFFF7BFFFFFFBFFFFFFFFFFFFFFFFAA | |
:1012A000FFFEFFFFFFFFFFFFFFFFDFFFFDFFFFFF71 | |
:1012B000FF5FF97FFFFBFFFFF8BFFEFFFFFF1C3F53 | |
:1012C0007FFFFBFC0E7FFFFFFFFC27FFFFFFFFFC04 | |
:1012D000F3FFFFFFFFFEFFFFFFFFFF1E7FE1FEBFEB | |
:1012E000CF633FCDFFFBDF21EFCC1FFF9F9DFFC8EA | |
:1012F000FFFFB99FFFF3FFFFB19FF9F1F03FBDDFA3 | |
:10130000F378C00F9DFFB87F0103C9FF9CDE630126 | |
:10131000E3FFDE1CC300FFFDEF388230FFFC2739FE | |
:101320008218FF8F07F10008FF27E7F00008FE771B | |
:10133000FFE002207E77FFE01000FF77FFE0780CEF | |
:10134000FF8FFEEC3804FFFDFFE03A02FBFFFFE0F9 | |
:101350001802FFFFFFF04600FFFFFFF07340FFFFA2 | |
:10136000FFF83FC07FFFFFFFFFFEC000000000034B | |
:1013700080000000000180000000000190F4BD0129 | |
:1013800080019084A102400190E4B9024001908361 | |
:10139000210240019EF33DE1800180000000000138 | |
:1013A0008000000000018000000000018F8000002C | |
:1013B00001F1F07FFFFFFE0F8F80000001F1800040 | |
:1013C000000004018000000000018E7339E0040178 | |
:1013D0009084A5000E018C84B9C3BFB98284A90092 | |
:1013E0000E019C7325E004018000000004018000D0 | |
:1013F00000000001803000003001804800004801FA | |
:10140000804800004801804800004801803000000A | |
:101410003001800000000001C000000000037FFFD9 | |
:10142000FFFFFFFE30484848301030101038304879 | |
:1014300010207870083808701020507810784070AC | |
:10144000087030407048307808102020304830480C | |
:10145000303048380830785C09034C9E00049F0007 | |
:1014600004A02101F0F8079F4CFB232700F8077820 | |
:101470005CF07F4CF8232780F8079F4CFB01D700D6 | |
:10148000000000000000000000000000000000005C | |
:10149000000000000000000000000000000000004C | |
:1014A000000000000000000000000000000000003C | |
:1014B000000000000000000000000000000000002C | |
:1014C000000000000000000000000000000000001C | |
:1014D000000000000000000000000000000000000C | |
:1014E00000000000000000000000000000000000FC | |
:1014F00000000000000000000000000000000000EC | |
:1015000000000000000000000000000000000000DB | |
:1015100000000000000000000000000000000000CB | |
:1015200000000000000000000000000000000000BB | |
:101530000000080B00020202010009040000010281 | |
:101540000200000524001001052401010104240209 | |
:101550000605240600010705810310004009040167 | |
:1015600000020A0000000705020240000007058390 | |
:10157000024000000403090412010002EF020140CE | |
:101580004123368000010102030141726475696ED6 | |
:101590006F204C4C430041726475696E6F204C653E | |
:1015A0006F6E6172646F0000492111241FBECFEF7E | |
:1015B000DAE0DEBFCDBF11E0A0E0B1E0EAE6F3E49F | |
:1015C00002C005900D92A632B107D9F728E0A6E235 | |
:1015D000B1E001C01D92A233B207E1F71AE0C5EDF8 | |
:1015E000DAE004C02197FE010E94A821C43DD10782 | |
:1015F000C9F70E94FD130C94B3210C9400003FB76F | |
:10160000F8948091C8079091C907A091CA07B0913A | |
:10161000CB0726B5A89B05C02F3F19F00196A11D49 | |
:10162000B11D3FBFBA2FA92F982F8827820F911D78 | |
:10163000A11DB11DBC01CD0142E0660F771F881FBF | |
:10164000991F4A95D1F708958F929F92AF92BF92BA | |
:10165000CF92DF92EF92FF926B017C010E94FF0A12 | |
:101660004B015C01C114D104E104F104F1F00E94CA | |
:10167000FF0ADC01CB0188199909AA09BB09883E38 | |
:101680009340A105B10570F321E0C21AD108E10829 | |
:10169000F10888EE880E83E0981EA11CB11CC114CD | |
:1016A000D104E104F10419F7DDCFFF90EF90DF9052 | |
:1016B000CF90BF90AF909F908F9008951F920F9200 | |
:1016C0000FB60F9211242F933F938F939F93AF9355 | |
:1016D000BF938091260190912701A0912801B0919C | |
:1016E00029013091C70723E0230F2D3720F40196FD | |
:1016F000A11DB11D05C026E8230F0296A11DB11D35 | |
:101700002093C7078093260190932701A093280177 | |
:10171000B09329018091C8079091C907A091CA0789 | |
:10172000B091CB070196A11DB11D8093C80790937E | |
:10173000C907A093CA07B093CB07BF91AF919F9100 | |
:101740008F913F912F910F900FBE0F901F90189582 | |
:101750008EBD00000DB407FEFDCF08952F923F927D | |
:101760004F925F926F927F928F929F92AF92BF92B1 | |
:10177000CF92DF92EF92FF920F931F93CF93DF935D | |
:10178000CDB7DEB7EC970FB6F894DEBF0FBECDBF76 | |
:10179000CE0101964C0180E3D4011D928A95E9F7B0 | |
:1017A0001091D906133808F01358012F02950695A9 | |
:1017B000069503701F73110F90E0792F7370872FB8 | |
:1017C000880FB0902A016401FE013896612F56E01F | |
:1017D0001F5F20E8029FD0011124A60FB11DA55D57 | |
:1017E000BC4F4C91B11001C040E0342F331F332760 | |
:1017F000331F082E01C0330F0A94EAF7D6012C914B | |
:10180000232B2C93DF01169746FBFF24F0F8F9AA4F | |
:101810001AAAE9A8FAA8082E01C0EE0C0A94EAF761 | |
:101820003C91E32AEC92119645FBFF24F0F8FBAAC9 | |
:101830001CAAEBA8FCA8082E01C0EE0C0A94EAF73B | |
:101840003C91E32AEC92119644FBFF24F0F8FDAAA8 | |
:101850001EAAEDA8FEA8082E01C0EE0C0A94EAF715 | |
:101860003C91E32AEC92119643FBFF24F0F8FFAA87 | |
:1018700018AEEFA8F8AC082E01C0EE0C0A94EAF7F7 | |
:101880003C91E32AEC92119642FBFF24F0F8F9AE6A | |
:101890001AAEE9ACFAAC082E01C0EE0C0A94EAF7D5 | |
:1018A0003C91E32AEC92DF0141FB222420F8312C09 | |
:1018B0009101082E01C0220F0A94EAF73E91232BD2 | |
:1018C0002C9340FB662460F8712C9301082E01C014 | |
:1018D000220F0A94EAF73081232B2083212F2F70C7 | |
:1018E0002C3010F015E0160F17FF02C00F5F1058D4 | |
:1018F000023021F4163010F0165000E0515028E06C | |
:10190000C20ED11C3896552311F0612F61CF733070 | |
:1019100079F5412C512C620183E0CC0CDD1C8A95B9 | |
:10192000E1F7A12CB12C7501EC28FD28E80CF91C7D | |
:10193000D7012C91822F880F282B2095822F2BAF37 | |
:101940009CAF0E94A80B2BAD822F0E94A80BF70121 | |
:101950001082FFEFAF1ABF0A9CAD28E0A216B104B7 | |
:1019600011F78FEF481A580AA6E04A16510499F663 | |
:101970009F5F903209F021CF1092B707EC960FB617 | |
:10198000F894DEBF0FBECDBFDF91CF911F910F91B5 | |
:10199000FF90EF90DF90CF90BF90AF909F908F908F | |
:1019A0007F906F905F904F903F902F9008950F938E | |
:1019B0001F93CF93DF931F92CDB7DEB78C01803892 | |
:1019C0009140F0F08091DC06833008F040C1823015 | |
:1019D00029F4063891E0190708F039C1F80120E828 | |
:1019E000829FE00DF11D1124E555FE4F608380912B | |
:1019F0002A01882309F426C181E08093B70722C118 | |
:101A0000053181E0180709F4B0C000F50E3021E07F | |
:101A1000120709F468C050F4011591E01907B9F1F3 | |
:101A20000D3021E0120709F444C00CC1013181E0FE | |
:101A3000180709F482C0033191E0190709F48AC03C | |
:101A4000003121E0120709F0FDC069C00D3181E0CD | |
:101A5000180709F4AEC058F4083121E0120709F460 | |
:101A60008FC00B3181E0180709F498C0EBC0073232 | |
:101A700091E0190709F4A8C0063621E0120709F41D | |
:101A8000B6C0023281E0180709F0DCC0B0CF862F63 | |
:101A900082958F708627982F969596958927982FEF | |
:101AA000969589279091B80680FB90F99093B80697 | |
:101AB000C9C08091C406862780FFC4C08091BA0740 | |
:101AC0009091BB078E3F2FEF920708F0BBC040916B | |
:101AD000BC075091BD07FA01E80FF91FE491E1320C | |
:101AE00009F0B0C09DC0862F807A803271F028F452 | |
:101AF0008111A8C088EB9BE00AC0803869F0803A69 | |
:101B000009F0A0C088E491E002C084EA90E09093DC | |
:101B1000B9078093B80796C080E797E1F8CF66FDD4 | |
:101B200007C08091CA0690E09093B2068093B106F8 | |
:101B300067FD88C08091CC061DC080E091E0861BC7 | |
:101B400091099093B4068093B3061092B606109252 | |
:101B5000B50678C08091C70686FD74C0862F90E0D8 | |
:101B60009093B2068093B1066DC08091C70687FD41 | |
:101B700069C0862F90E09093B0068093AF0662C054 | |
:101B800066FD07C08091D20690E09093AE068093E8 | |
:101B9000AD0667FD57C08091D40610C08091CF0676 | |
:101BA00086FD50C0862F90E09093AE068093AD06E0 | |
:101BB00049C08091CF0687FD45C0862F90E0909365 | |
:101BC000AC068093AB063EC0262F221F2227221F81 | |
:101BD000422F50E080912A0190E04817590791F177 | |
:101BE00020932A0169830E94AE0B69812BC09091DA | |
:101BF0001C0780911B07E82FF0E0F92BF170E55DE1 | |
:101C0000FE4F608320911A0724FF21C08F5F8093CD | |
:101C10001B0781111CC081E0892780931C0717C016 | |
:101C20009C012F5F3F4FFA01E20FF31F24910296B0 | |
:101C3000FA01E80FF91FE491F0E0F22BF093BB07F3 | |
:101C4000E093BA071127F801E954F94F60830F9028 | |
:101C5000DF91CF911F910F910895A7EBB6E01696F3 | |
:101C60009C911697E92FF0E0E555FB4F808191504C | |
:101C700016969C9308958F3F910509F068F4209182 | |
:101C8000B80626952170F22FE0E08E0F9F1FFC0111 | |
:101C9000E555FB4F608308950C94D70C8F3F910559 | |
:101CA00009F060F42091B80626952170F22FE0E04B | |
:101CB0008E0F9F1FFC01E555FB4F11C0803821E0BE | |
:101CC000920778F02091DC06233008F056C030E807 | |
:101CD000239F800D911D1124FC01E555FE4F80814D | |
:101CE00008958D3121E0920719F178F4843121E0D3 | |
:101CF0009207C1F08B3131E09307B9F0823121E0D6 | |
:101D00009207B1F58091B1060895853631E09307C9 | |
:101D100091F0863621E0920791F08C3531E09307FF | |
:101D200039F52DC08091AF0608958091AD060895D4 | |
:101D30008091AB06089580911C078E6F08952091C5 | |
:101D40001C0790911B07E92FF0E0F22BF170E55D85 | |
:101D5000FE4F808130911A0734FF12C09F5F90932D | |
:101D60001B0791110DC091E0922790931C070895D5 | |
:101D70009927FC01E954F94FB2CF8FEF089582E023 | |
:101D80000895A7EBB6E01696EC911697EF5F1696BE | |
:101D9000EC93F0E0E555FB4F808308958B3121E013 | |
:101DA000920741F08D3121E0920721F00E944E0E02 | |
:101DB00090E008958FEF90E0089521E030E001C0B9 | |
:101DC000220F8A95EAF780910307282B20930307B7 | |
:101DD0008091050782FF03C0826080930507089504 | |
:101DE00021E030E001C0220F8A95EAF7209580912A | |
:101DF00003072823209303078091050782FF03C070 | |
:101E00008260809305070895FC018091D4078111B9 | |
:101E100003C08FEF9FEF08959FB7F89482E08093FF | |
:101E2000E9002091F20030E01216130614F421E0CC | |
:101E300030E02115310559F0289884E68093D307C6 | |
:101E40008091F10080838091F200882319F09FBF78 | |
:101E5000C90108958BE68093E800F9CF2FB7F89475 | |
:101E600083E08093E9009091E800892F807295FFCC | |
:101E700004C09091F20080E4891B2FBF0895CF9297 | |
:101E8000DF92EF92FF920F931F93CF93DF936C013A | |
:101E90007A018B01C0E0D0E0CE15DF0589F0D801D2 | |
:101EA0006D918D01D601ED91FC910190F081E02DB5 | |
:101EB000C6010995892B11F47E0102C02196ECCF51 | |
:101EC000C701DF91CF911F910F91FF90EF90DF90AD | |
:101ED000CF90089580912A0881110DC082E08093EF | |
:101EE000260884E080932708109229081092280879 | |
:101EF00081E080932A0886E298E00895CF93DF93EB | |
:101F00001F92CDB7DEB76983DC01ED91FC910280B1 | |
:101F1000F381E02D41E050E0BE016F5F7F4F0995F6 | |
:101F20000F90DF91CF91089583E08093E900809135 | |
:101F3000F200882319F08AE38093E80008950E9454 | |
:101F40002E0F90E00895CF93DF931F92CDB7DEB7A9 | |
:101F5000FC018485958597FD05C02FEF3FEF358700 | |
:101F600024870BC0CE0101960E94040F019719F43B | |
:101F7000898190E002C08FEF9FEF0F90DF91CF91AA | |
:101F800008950F931F93CF93DF931F92CDB7DEB7C2 | |
:101F90008C01FC018485958597FF0EC0CE010196CA | |
:101FA0000E94040F019719F4298130E002C02FEF3D | |
:101FB0003FEFF80135872487F801848595850F90D8 | |
:101FC000DF91CF911F910F910895FC018485958534 | |
:101FD00097FD0BC09FB7F89482E08093E900809151 | |
:101FE000F2009FBF90E0019608959FB7F89482E0B9 | |
:101FF0008093E9008091F2009FBF90E008950895DA | |
:1020000080E090E008950E94AE218F929F92AF925F | |
:10201000BF92CF92DF92EF92FF920F931F93CF93D5 | |
:10202000DF935C016B017A0180910B01882309F435 | |
:102030005BC08091D407882309F456C08091D207F1 | |
:1020400080FF05C08091E00082608093E000E7019E | |
:1020500010E00AEF83E0882E9AE3992E2097D9F1B9 | |
:102060000E942E0F81110AC0015009F43DC061E0A9 | |
:1020700070E080E090E00E94240BF0CF282F30E049 | |
:10208000C217D3070CF48C2F4FB7F8948092E90055 | |
:102090009091E80095FF1DC0282F30E0C21BD30BA4 | |
:1020A000F601982F915020F081918093F100FACFA2 | |
:1020B000C20ED31E112319F09092E80009C080913E | |
:1020C000E80085FD06C09092E80011E0209709F035 | |
:1020D00010E04FBFC3CF1111C3CF5D9884E680934A | |
:1020E000D5071E141F0444F081E090E0F5019383AE | |
:1020F000828380E090E001C0C701DF91CF911F9102 | |
:102100000F91FF90EF90DF90CF90BF90AF909F9096 | |
:102110008F900895CF92DF92EF92FF920F931F93CB | |
:10212000CF93DF931F92CDB7DEB7182F062FE42E83 | |
:10213000862F880F8E5F99830E94C21383E00E94CE | |
:10214000C213F12EC12E9981D92E8C2D8F19801793 | |
:1021500098F4F601E7FE02C0849101C080810E94DC | |
:10216000C213182F80E00E94C2138123FFEFCF1A01 | |
:10217000DF0A8111EACF01C081E00F90DF91CF919A | |
:102180001F910F91FF90EF90DF90CF900895DF9215 | |
:10219000EF92FF920F931F93CF93DF93D82E8A0174 | |
:1021A0007B01E40EF51EEB01CE15DF0571F0D7FEC5 | |
:1021B00003C0FE01849101C088810E94C213219650 | |
:1021C0008111F2CF8FEF9FEF01C0C801DF91CF9156 | |
:1021D0001F910F91FF90EF90DF9008950F931F9341 | |
:1021E000CF93DF931F92CDB7DEB782E0898342E4BD | |
:1021F00050E062E375E180E80E94C7100E946A0F18 | |
:10220000DC0112960D911C9113970115110569F0CF | |
:10221000D801ED91FC910280F381E02DBE016F5F4A | |
:102220007F4FC801099597FF07C089810F90DF9103 | |
:10223000CF911F910F910895F80100851185E5CF89 | |
:102240001F920F920FB60F9211248F939F9380913C | |
:10225000E1009091E100937F9093E10083FF0FC034 | |
:102260001092E90091E09093EB001092EC0092E361 | |
:102270009093ED001092D40798E09093F00082FFC5 | |
:1022800020C093E09093E9009091F200992319F017 | |
:102290009AE39093E8009091D507992339F09091B3 | |
:1022A000D50791509093D507992389F19091D30741 | |
:1022B000992339F09091D30791509093D3079923A4 | |
:1022C00041F184FF10C08091E2008E7E8160809396 | |
:1022D000E2008091E1008F7E8093E1008091D2073F | |
:1022E0008E7E806111C080FF16C08091E2008E7EDC | |
:1022F00080618093E2008091E1008E7E8093E10016 | |
:102300008091D2078E7E81608093D20704C05D9A4F | |
:10231000CDCF289AD6CF9F918F910F900FBE0F905F | |
:102320001F9018951F920F920FB60F921124CF9203 | |
:10233000DF92EF92FF920F931F932F933F934F9350 | |
:102340005F936F937F938F939F93AF93BF93EF931D | |
:10235000FF93CF93DF93CDB7DEB76C97DEBFCDBFD2 | |
:102360001092E9008091E80083FFEDC168E0CE01A2 | |
:1023700045960E94F01382EF8093E8008D8987FFD5 | |
:1023800005C09091E80090FFFCCF03C09EEF9093B2 | |
:10239000E800982F907609F0C6C09E892F89188D85 | |
:1023A00091110CC0803829F48091D1078093F100FD | |
:1023B00002C01092F1001092F10048C1422F50E08B | |
:1023C000512B913051F4811141C14130510509F037 | |
:1023D0003DC18091D1078D7F0BC0933061F4811195 | |
:1023E00035C14130510509F031C18091D10782607A | |
:1023F0008093D1072BC1953041F48091E80080FF94 | |
:10240000FCCF20682093E30021C1963009F05FC023 | |
:10241000EB8CFC8C1092E9001092CF071092CE0743 | |
:10242000123091F51092CD071092CC070E94EE1059 | |
:1024300099E0BE016F5F7F4FDB01E92F1D92EA95A6 | |
:10244000E9F799831A8391E09E8390EA98879AEF3F | |
:1024500099872091CE073091CF07275F3F4F3C836C | |
:102460002B838D831092E9001092CF071092CE0734 | |
:10247000F092CD07E092CC0749E050E080E00E9466 | |
:10248000C7100E94EE10E2C0F092CD07E092CC0798 | |
:102490000E946A0FDC011296ED90FC901397E114F4 | |
:1024A000F10409F4C0C0D701ED91FC910480F581DD | |
:1024B000E02DBE016B5E7F4FC7010995009719F0B3 | |
:1024C0000CF0C4C0C7C0F701E084F184E8CF9730B6 | |
:1024D00009F4C0C0983021F481E08093F100B6C0C7 | |
:1024E000993009F0B3C0837009F0B4C0EDE0F1E0B9 | |
:1024F00081E021E036E39081992361F08093E90047 | |
:102500002093EB0091919093EC003093ED008F5F5E | |
:10251000873089F78EE78093EA001092EA008F896E | |
:102520008093D40793C08B8D9C8D1092E9001092FC | |
:10253000CF071092CE079093CD078093CC07898D5B | |
:10254000811156C08E899D89913A59F4813209F0E2 | |
:1025500081C047E050E064E071E080E00E94C71075 | |
:1025600075C0913209F076C0833289F4888D90E08D | |
:10257000982F88272F89822BA0E0B0E0809300015C | |
:1025800090930101A0930201B09303015FC08032D8 | |
:1025900069F48091E80082FFFCCF67E084E091E07D | |
:1025A0000E94F0138BEF8093E80006C0823209F09E | |
:1025B0004DC08F8980930B018091D007882319F03B | |
:1025C000EEEFFAE002C0E0E0F8E0809104019091C3 | |
:1025D0000501A0910601B0910701803B9440A1053F | |
:1025E000B10509F07BC080910B0180FF93C076C0DC | |
:1025F0000E946A0FDC0112960D911C911397011530 | |
:10260000110541F1D801ED91FC910190F081E02D8F | |
:10261000BE016B5E7F4FC8010995811117C0F8019B | |
:1026200000851185ECCF113009F44EC0133091F4C0 | |
:102630008F89882309F445C0823081F440E860E145 | |
:1026400086E995E10E948A10882321F08EEF80931D | |
:10265000E80079C081E28093EB0075C0813029F4F5 | |
:1026600040E86BE08AE895E1EDCF833099F70E946E | |
:102670006A0FDC011296ED90FC9013978E010F5FAC | |
:102680001F4F6801E114F10479F0D701ED91FC913D | |
:102690000680F781E02DB801C7010995080F111DCB | |
:1026A000F701E084F184EECFD8011C92F60101908D | |
:1026B0000020E9F73197BF016C197D0940E0C601A0 | |
:1026C000C1CF64E775E102C068E775E16115710586 | |
:1026D00009F2FB01449150E080E840CF0FB6F89436 | |
:1026E000A8958091600088618093600010926000DE | |
:1026F0000FBEA895EE3F2AE0F20739F08091FE0A5E | |
:102700009091FF0A91838083A1CF1092FF0A1092CB | |
:10271000FE0A9CCFEE3F8AE0F80731F0808191817C | |
:102720009093FF0A8093FE0A87E797E7918380835F | |
:102730009BE088E10FB6F894A895809360000FBEE7 | |
:102740009093600083CF6C960FB6F894DEBF0FBEF7 | |
:10275000CDBFDF91CF91FF91EF91BF91AF919F914D | |
:102760008F917F916F915F914F913F912F911F9129 | |
:102770000F91FF90EF90DF90CF900F900FBE0F90D2 | |
:102780001F9018954091CE075091CF072091CC070C | |
:102790003091CD0742175307B4F49091E80095703B | |
:1027A000E1F39091E80092FD19C08093F1008091CF | |
:1027B000CE079091CF0701968F739927892B19F433 | |
:1027C0008EEF8093E8008091CE079091CF0701961D | |
:1027D0009093CF078093CE0781E0089580E008951D | |
:1027E000615030F02091F100FC0120830196F8CF78 | |
:1027F000289884E68093D3070895CF93DF9300D081 | |
:1028000000D01F92CDB7DEB7789484B5826084BDC6 | |
:1028100084B5816084BD85B5826085BD85B58160E4 | |
:1028200085BD80916E00816080936E001092810062 | |
:10283000809181008260809381008091810081601D | |
:1028400080938100809180008160809380008091DE | |
:1028500091008260809391008091910081608093CB | |
:102860009100809190008160809390008091C100E0 | |
:1028700084608093C1008091C10082608093C10018 | |
:102880008091C10081608093C1008091C30081600C | |
:102890008093C3008091C00082608093C0008091CB | |
:1028A000C20081608093C20080917A00846080932E | |
:1028B0007A0080917A00826080937A0080917A0019 | |
:1028C000816080937A0080917A00806880937A009A | |
:1028D0001092D4071092D1071092D2078091D7009E | |
:1028E00081608093D70080EA8093D80089B58061A9 | |
:1028F00089BD89B5826089BD09B400FEFDCF61E064 | |
:1029000070E080E090E00E94240B8091D8008F7CE2 | |
:1029100080618093D8008091E000807F8093E00008 | |
:102920008091E1008E7E8093E1008DE08093E20053 | |
:10293000559A209AEEEFFFE7859194918B3F9C4D3D | |
:1029400019F481E08093D00785B1806F85B9249810 | |
:1029500084B1866E84B95E9A5F988AB1806D8AB9B7 | |
:10296000769A6E9881B3806F81BB899880B38D70A1 | |
:1029700080BB80E58CBD81E08DBD65E070E080E0CE | |
:1029800090E00E94240B5F9A65E070E080E090E0A8 | |
:102990000E94240B5E985C9874E2E72E71E0F72E9B | |
:1029A0001DE01E0DF70184910E94A80BFFEFEF1AA6 | |
:1029B000FF0A1E11F7CF5C9A01E014E001501109E3 | |
:1029C00021F08AEA0E94A80BF9CF5C9881E20E946C | |
:1029D000A80B80E10E94A80B8FE60E94A80B82E260 | |
:1029E0000E94A80B80E00E94A80B87E00E94A80B21 | |
:1029F0005C9A2FB7F894609126017091270180911D | |
:102A00002801909129012FBF40E052E0EBEAF4E069 | |
:102A1000DF018A011D9201501040E1F720E831E00A | |
:102A2000EBE2F3E0DF0189011D9201501040E1F774 | |
:102A3000EBE2F1E0DF018A011D9201501040E1F765 | |
:102A400040E051E0E7EBF6E0DF018A011D92015022 | |
:102A50001040E1F72FE72093BD061FEF1093030707 | |
:102A600002E00093B8061092B2061092B1061092DE | |
:102A7000B0061092AF061092AE061092AD061092FC | |
:102A8000AC061092AB061092B6061092B5065093A3 | |
:102A9000B4064093B30620E22093BB0427E12093C1 | |
:102AA000BC04FF24F394F092BD04F092BE04F092B3 | |
:102AB000BF0427E02093C20421EE2093C304F092C8 | |
:102AC000C404F092C504F092C60428EE33E040E05E | |
:102AD00050E00E9486212093C8041093DC0480E813 | |
:102AE0008093BF0661E88EE091E00E94D70C1092BF | |
:102AF000B70710922A011092C6071092C5071092CC | |
:102B0000C0071092BF07F092C40681E391E0909352 | |
:102B1000BD078093BC071092BB071092BA070093C1 | |
:102B2000DC0660E182E891E00E94D70C1092DC069E | |
:102B300060E887E291E00E94D70CCC24C394D12CAA | |
:102B400050EA452E5FE0552E66246394712C009167 | |
:102B5000BC071091BD07E090BA07F090BB07F801E1 | |
:102B6000EE0DFF1D2491B7016F5F7F4F7093BB0780 | |
:102B70006093BA07822F8F70843048F4823008F057 | |
:102B800044C3882341F0813009F441C1F1C5883044 | |
:102B900008F423C4EDC5E22FF0E034E0F595E795A5 | |
:102BA0003A95E1F73197EF30F10510F00C943C1DA8 | |
:102BB000EA5AFF4F0C94A82182E0860F0E94C10EB2 | |
:102BC0008091BA079091BB070296892F0E94C10E8F | |
:102BD0008091BA079091BB07F801E80FF91F349173 | |
:102BE0000196F801E80FF91F2491830F911DE22F40 | |
:102BF000F0E0FE2FEE27E80FF91FF093BB07E093FC | |
:102C0000BA073CC182E0860F0E94C10E8091BA07CC | |
:102C10009091BB070296892F0E94C10E8091BA073E | |
:102C20009091BB07F801E80FF91F2491FC01319640 | |
:102C3000E00FF11FE491F0E0F22B63C62091B9069A | |
:102C40008091B70690E0982F88273091BA06832BA1 | |
:102C5000289F7001299FF00C11248091B8068B7772 | |
:102C60008093B806E092BA066F2D80E091E00E9452 | |
:102C7000D70CC701FF0CAA0BBB0BB093B9062AC037 | |
:102C80006091B90670E08091BA066115710541F056 | |
:102C90002091B70690E0922B0E9472217C0105C022 | |
:102CA000682F70E07F6FE12CF12C8091B8068B7754 | |
:102CB000E114F10411F494E001C090E0892B8093B9 | |
:102CC000B8066093BA06672F80E091E00E94D70CA7 | |
:102CD000E092B90687E0D1C6E091BC06F0E0FE2F95 | |
:102CE000EE278091BB06E80FF11D5AC222E0E20EEA | |
:102CF000F11CF092BB07E092BA07F801E60FF71F4C | |
:102D0000849190E023C10E942D0EE091BA07F091CA | |
:102D1000BB079F012F5F3F4F3093BB072093BA073C | |
:102D2000E00FF11FE491682F8E2F90E0A0C2209158 | |
:102D3000B706C70102962111F9C3F801E60FF71F84 | |
:102D4000249127FF16C6E491EE2ED9C22091B70632 | |
:102D5000C7010296222309F4E9C3F801E60FF71F21 | |
:102D6000249127FF06C6E491EE2EF12CFA9404C6B6 | |
:102D70000E942D0EE82EF12CFE2CEE240E942D0E2A | |
:102D8000E82AFCC50E942D0EE82EF12CFE2CEE2424 | |
:102D90000E942D0EE82AF092BB07E092BA078091BC | |
:102DA000C5079091C60701979093C6078093C50702 | |
:102DB00061C66091B70660FB679567F9D4C48091DE | |
:102DC000B70690E06091B806262F80FB27F9209384 | |
:102DD000B8069595879560780BC06091B706962FD9 | |
:102DE0009078892F90E0880F892F881F990B660FA4 | |
:102DF000682BB9C46091B7068091B806262F207859 | |
:102E0000982F9F77922B9093B8068078EBCFE22F84 | |
:102E1000F0E044E0F595E7954A95E1F73197EF301A | |
:102E2000F10520F4EB59FF4F0C94A821F801E60FAF | |
:102E3000F71F849187FF04C0E491F0E0FA9502C087 | |
:102E4000E491F0E052E0E50EF11CEE0DFF1D59C5D6 | |
:102E5000F801E60FF71F949162E0E60EF11CF8010D | |
:102E6000EE0DFF1DE491E90EF11CF0E0FE2FEE27C0 | |
:102E7000EE0EFF1EF092BB07E092BA0784E0FDC59C | |
:102E8000F801E60FF71F8491F7013296E00FF11F6A | |
:102E9000E491F0E0F82B35C52091B70630E0409181 | |
:102EA000B8064F77F801E60FF71F849190E02817D6 | |
:102EB000390714F080E001C080E8482B4093B80641 | |
:102EC000A7014E5F5F4FE491F0E0C70103962E1714 | |
:102ED0003F0709F02BC3F801E40FF51F249127FFEA | |
:102EE00048C5E490F12CFA9447C52091B70630E02C | |
:102EF0004091B8064F77F801E60FF71F849190E0F4 | |
:102F00002817390714F080E001C080E8482B40936F | |
:102F1000B806A7014E5F5F4FE491F0E0C70103964A | |
:102F20002E173F0709F402C3F801E40FF51FBBC2D7 | |
:102F3000B2E0EB0EF11CF092BB07E092BA07F80189 | |
:102F4000E60FF71FE4918E2F90E091600E944E0EE5 | |
:102F50000E94C10E8FC50E942D0EE091BA07F0911C | |
:102F6000BB079F012F5F3F4F3093BB072093BA07EA | |
:102F7000E00FF11FE491F0E0682FCF01916077C17D | |
:102F80003090B706A32CB12CE2E0EE0EF11CF092CB | |
:102F9000BB07E092BA07F801E60FF71F2490E22C76 | |
:102FA000F12C622D630D80E091E00E94D70C2091FE | |
:102FB000B8062B73C5018E0D9F1D8F3F910509F03B | |
:102FC00014F430E001C030E8232B332D3F70422D44 | |
:102FD0004F7050E0430F511D4031510514F430E063 | |
:102FE00001C030E4232BA094B094AE24BF24F0E8B9 | |
:102FF000AF22BB24E826F926AE20BF20AB2811F46F | |
:1030000080E001C084E0282B2093B80635C53090BD | |
:10301000B706A32CB12C22E0E20EF11CF092BB0704 | |
:10302000E092BA07F801E60FF71F2490E22CF12C8A | |
:103030002091B806221F2227221F622F630D620DE6 | |
:1030400080E091E02D830E94D70C8091B8068B73AD | |
:103050002D8130E0A5014E0D5F1D420F531F4F3FE4 | |
:10306000510509F014F490E001C090E8892B932DEC | |
:103070009F70E22DEF70F0E0E90FF11DE20FF31FFA | |
:10308000709714F490E001C090E4892BA094B09460 | |
:10309000AE24BF2430E8A322BB24E426F526AE20CC | |
:1030A000BF20AB2809F08DC28AC2B090B70642E0BB | |
:1030B000E40EF11CF092BB07E092BA07F801E60FAC | |
:1030C000F71FF4906B2D6F1980E091E00E94D70CF0 | |
:1030D0008091B8068B732B2D30E02F19310937FD05 | |
:1030E00002C020E001C020E8282B8B2D8F7090E0DB | |
:1030F0003F2D3F70831B9109991F9927991F929526 | |
:10310000990F990F907C822F08C3B090B70652E0B8 | |
:10311000E50EF11CF092BB07E092BA07F801E60F4A | |
:10312000F71FF4904091B806E42EEE1CEE24EE1C3E | |
:103130006B2D6F196E1980E091E00E94D70C809181 | |
:10314000B8068B734E2D50E02B2D30E02F1931092E | |
:10315000241B350B37FD02C090E001C090E8892B9D | |
:103160002B2D2F7030E09F2D9F70291B3109241BC0 | |
:10317000350B932F991F9927991F9295990F990FA6 | |
:10318000907CCBC28091B706E091BB06F0E0E80FDF | |
:10319000F11D8091BC0690E0982F8827E80FF91F59 | |
:1031A000E00FF11F649180E091E00E94D70C62C4AF | |
:1031B0009091B70682E0E80EF11CF092BB07E09216 | |
:1031C000BA07F801E60FF71F6491692BCCC2909102 | |
:1031D000B706A2E0EA0EF11CF092BB07E092BA0734 | |
:1031E000F801E60FF71F64916923BDC29091B706FD | |
:1031F000B2E0EB0EF11CF092BB07E092BA07F801C7 | |
:10320000E60FF71F64916927AEC25701E2E0AE0EE8 | |
:10321000B11CB092BB07A092BA07F801E60FF71FE6 | |
:10322000E491822F8170982E812C14012E2AE22F96 | |
:10323000F0E084E0F595E7958A95E1F73197EF3076 | |
:10324000F10520F4EC58FF4F0C94A821C101F2C005 | |
:103250006091B7066EC0F3E0EF0EF11CF092BB0771 | |
:10326000E092BA07F801EA0DFB1D6491C1010E94CA | |
:103270003B0E00C4C1010E944E0E282F30E0409149 | |
:10328000B70650E08091B8068F774217530714F0C5 | |
:1032900090E001C090E8892B8093B806C70103969F | |
:1032A0004217530709F042C1F801EA0DFB1D2491B2 | |
:1032B00027FF5FC3E490F12CFA945EC3C1010E9422 | |
:1032C0004E0E282F30E04091B70650E08091B806AE | |
:1032D0008F774217530714F090E001C090E8892BD4 | |
:1032E0008093B806C70103964217530709F41EC11D | |
:1032F000F801EA0DFB1D249127FF3BC3E490F12C5C | |
:10330000FA943AC3C1010E94CE0E01977C01FF24BA | |
:103310006E2DC1010E943B0E8091BA079091BB07B0 | |
:10332000EF2809F402C1DEC2C1010E94CE0E61E0A5 | |
:10333000680FC1019CC3C1010E94CE0E6FEFF8CF90 | |
:10334000C1010E944E0EB82EE82EF12CA090B706B7 | |
:103350002A2C312C682F6A0D80E091E00E94D70C56 | |
:103360008091B8068B7391012E0D3F1D2F3F3105C3 | |
:1033700009F014F450E001C050E8582B4A2D4F706A | |
:103380008B2D8F7090E0840F911D409714F480E096 | |
:1033900001C080E4852B209430942E243F2440E803 | |
:1033A0002422332406C1C1010FC1C1015EC1C10184 | |
:1033B0007FC1C1010E944E0EF82E6091B706C10177 | |
:1033C000B7C1F090B706C101BAC1F090B706C1010C | |
:1033D000BEC1F090B706C101C2C18091B80690E0AD | |
:1033E000959587958C709927322F3370832B2D8379 | |
:1033F00069837C830E944E0E90E02D8169817C81DF | |
:1034000021FD03C040E050E002C040E051E05A011D | |
:10341000A82AB92AE22FF0E0A4E0F595E795AA954D | |
:10342000E1F73197EF30F10520F4ED57FF4F0C94A1 | |
:10343000A821C5010E944E0E682F95C16091B70664 | |
:1034400084C082E0E80EF11CF092BB07E092BA075C | |
:10345000F801E60FF71F649178C0C50169837C838A | |
:103460000E944E0E482F50E097012E5F3F4F69811A | |
:103470007C81F801E60FF71FE491F0E08091B80637 | |
:103480008F774E175F0714F090E001C090E8892B0A | |
:103490008093B806C7010396E417F50709F046C004 | |
:1034A000F801E20FF31F249127FF63C2E490F12C8F | |
:1034B000FA9462C2C50169837C830E944E0E482F34 | |
:1034C00050E097012E5F3F4F69817C81F801E60F44 | |
:1034D000F71FE491F0E08091B8068F774E175F07F1 | |
:1034E00014F090E001C090E8892B8093B806C701E2 | |
:1034F0000396E417F507D1F0F801E20FF31F6BC252 | |
:10350000C5010E94CE0E01977C01FF246E2DC501DE | |
:103510000E943B0E8091BA079091BB07EF2829F0DB | |
:10352000E091BC07F091BD07DEC101969093BB0707 | |
:103530008093BA079FC2C5010E94CE0E61E004C00D | |
:10354000C5010E94CE0E6FEF680FC50190C2C50184 | |
:103550000E944E0EB82EE82EF12CA090B7062A2C11 | |
:10356000312C682F6A0D80E091E00E94D70C809189 | |
:10357000B8068B7391012E0D3F1D2F3F310509F0C9 | |
:1035800014F450E001C050E8582B4A2D4F708B2D99 | |
:103590008F7090E0840F911D409714F480E001C07B | |
:1035A00080E4852B209430942E243F24E0E82E22C2 | |
:1035B0003324E226F326E220F320EF2811F490E0F2 | |
:1035C000ACC094E0AAC0C5010E944E0EA82EE82E01 | |
:1035D000F12CB090B7062B2D30E03B832A8320914D | |
:1035E000B806322E331C3324331C632D6B0D680F49 | |
:1035F00080E091E00E94D70C6091B8066B73232D98 | |
:1036000030E04A815B814E0D5F1D420F531F4F3FDB | |
:10361000510509F014F480E001C080E8682B7B2D8F | |
:103620007F708A2D8F7090E0870F911D280F391FB2 | |
:103630002031310514F480E001C080E4682B8A81D8 | |
:103640009B81809590958E259F2580789927E426EB | |
:10365000F5268E219F21892B11F480E001C084E0A2 | |
:10366000682B6093B80608C2C5010E944E0EF82E62 | |
:10367000E090B7066E2D681B80E091E00E94D70CA9 | |
:103680008091B8068B732E2D30E02F19310937FD4C | |
:1036900002C040E001C040E8482B2E2D2F7030E0E2 | |
:1036A0008F2D8F70B901681B7109CB012EC0C50128 | |
:1036B0000E944E0EE82EB090B7066091B806F62E26 | |
:1036C000FF1CFF24FF1C6B2D681B6F1980E091E02D | |
:1036D0000E94D70C8091B8068B736F2D70E02B2D54 | |
:1036E00030E02E193109261B370B37FD02C040E0B0 | |
:1036F00001C040E8482B2B2D2F7030E08E2D8F70AD | |
:10370000281B3109261B370B932F991F9927991FC7 | |
:103710009295990F990F907C842F892B8093B806EE | |
:10372000ABC1C5010E944E0EF82E6091B706C501CF | |
:103730000E943B0E6F2D17C0F090B706C5010E9486 | |
:103740004E0E682F6F290FC0F090B706C5010E947A | |
:103750004E0E682F6F2107C0F090B706C5010E947A | |
:103760004E0E682F6F2580E091E00E94D70C84C137 | |
:10377000822F807E803609F4CDC088F5803209F42E | |
:103780005EC0803409F479C0811176C1C701029608 | |
:103790009093BB078093BA07F801E60FF71FE491F7 | |
:1037A000922F9071A92EB12CB694BA2CAA24B7945A | |
:1037B000A7942770B22AAE2A0E94C10E8091BB073F | |
:1037C0000E94C10E8091BA079091BB078827907F15 | |
:1037D000A82AB92AB092BB07A092BA074BC1803A77 | |
:1037E00009F400C120F4803809F4CDC045C1803C03 | |
:1037F00009F41AC1803E09F03FC132E0E30EF11C2A | |
:10380000F092BB07E092BA07F801E60FF71FE491C8 | |
:10381000822F807190E074E0880F991F7A95E1F70C | |
:103820007C01EE2AC7012D830E94CE0E2D812770C8 | |
:10383000B60101C0660F2A95EAF7682B17C1F80197 | |
:10384000E60FF71FE491422F407150E05695542F38 | |
:103850004427579547952770CA01922B9C012E2B20 | |
:1038600092E0E90EF11CEE24A0EFFA222E293F2966 | |
:103870003093BB072093BA07FDC0C701029690930F | |
:10388000BB078093BA07F801E60FF71FE491822F78 | |
:10389000807190E044E0880F991F4A95E1F75C0140 | |
:1038A000AE2AC5012D830E944E0E2D812770482F10 | |
:1038B00050E0022E02C0559547950A94E2F740FF6A | |
:1038C00025C0F60102C0EE0FFF1F2A95E2F79F0107 | |
:1038D0002095682F6223C5010E943B0E8091BA0794 | |
:1038E0009091BB07F801E80FF91F249127FF04C04E | |
:1038F000E491F0E0FA9502C0E491F0E00196E80F5F | |
:10390000F91FF093BB07E093BA07B4C0F3E0EF0EE2 | |
:10391000F11C34C0570132E0A30EB11CB092BB07BA | |
:10392000A092BA07F801E60FF71FE491822F807189 | |
:1039300090E034E0880F991F3A95E1F78E2B2D83A4 | |
:103940000E944E0E90E02D812770AC0102C055956B | |
:1039500047952A95E2F7C701039640FFE7CDF801A6 | |
:10396000EA0DFB1D249127FF04C0E490F12CFA948A | |
:1039700003C0E491EE2EF12CE80EF91EF092BB0785 | |
:10398000E092BA0777C0570182E0A80EB11CB0924E | |
:10399000BB07A092BA07F801E60FF71FE491822F48 | |
:1039A000807190E0B4E0880F991FBA95E1F78E2BF3 | |
:1039B0002D830E944E0E90E02D812770DC0102C005 | |
:1039C000B595A7952A95E2F7C7010396A0FDAECD60 | |
:1039D000F801EA0DFB1D249127FFCBCFE490F12CD9 | |
:1039E000FA94CACFE2E0EE0EF11CF092BB07E0922F | |
:1039F000BA07F801E60FF71FE491822F807190E07B | |
:103A0000A4E0880F991FAA95E1F77C01EE2AC7016F | |
:103A10002D830E94CE0E2D812770B60101C0660F46 | |
:103A20002A95EAF7682722C0F2E0EF0EF11CF09227 | |
:103A3000BB07E092BA07F801E60FF71FE491822F67 | |
:103A4000807190E0F4E0880F991FFA95E1F77C010E | |
:103A5000EE2AC7012D830E94CE0E2D812770B6015C | |
:103A600001C0660F2A95EAF760956823C7010E9496 | |
:103A70003B0E02C082E001C081E0482F50E05B8332 | |
:103A80004A83E090C307F090C407E40EF51EF0925D | |
:103A9000C407E092C307A090B807B090B907EA1432 | |
:103AA000FB0408F4CDC08091B70781110E94AE0BD2 | |
:103AB0004FB12CB193B130E020953095207433276D | |
:103AC00053E0359527955A95E1F7892F90E0809539 | |
:103AD0009095807199279595879595958795822BD7 | |
:103AE0004095407F382E342A8091BE0737FE0AC0A9 | |
:103AF00080FD11C081608093BE0780E090E00E944D | |
:103B0000F00E09C080FF07C08E7F8093BE0780E063 | |
:103B100090E00E94DD0E8091BE0734FE0AC081FD58 | |
:103B200011C082608093BE0781E090E00E94F00E99 | |
:103B300009C081FF07C08D7F8093BE0781E090E0C0 | |
:103B40000E94DD0E8091BE0735FE0AC082FD11C0C5 | |
:103B500084608093BE0782E090E00E94F00E09C06E | |
:103B600082FF07C08B7F8093BE0782E090E00E94B7 | |
:103B7000DD0E8091BE0736FE0AC083FD11C088604D | |
:103B80008093BE0783E090E00E94F00E09C083FF9F | |
:103B900007C0877F8093BE0783E090E00E94DD0E20 | |
:103BA0008091BE0733FE0AC084FD11C080618093FE | |
:103BB000BE0784E090E00E94F00E09C084FF07C0B9 | |
:103BC0008F7E8093BE0784E090E00E94DD0E80919E | |
:103BD000BE0732FE0AC085FD11C080628093BE0719 | |
:103BE00085E090E00E94F00E09C085FF07C08F7D40 | |
:103BF0008093BE0785E090E00E94DD0EEA18FB0886 | |
:103C0000F092C407E092C3078091C1079091C20768 | |
:103C10009C012F5F3F4F3093C2072093C10722338F | |
:103C2000310570F02091BF073091C00728603093B4 | |
:103C3000C0072093BF07C1979093C2078093C10725 | |
:103C4000E091C7068E2F807CA1F18091B5069091FE | |
:103C5000B6066A817B81860F971F9093B606809384 | |
:103C6000B5062091B3063091B4068217930708F188 | |
:103C700040E050E04F5F5F4F821B930B821793072A | |
:103C8000C8F79093B6068093B5068E2F807E803E4F | |
:103C900009F095C28091B1069091B206480F591F64 | |
:103CA0004F3F510511F008F03FC25093B2064093C8 | |
:103CB000B1066091CF06862F807C09F4CDC0862F97 | |
:103CC000807E803E09F05CC08091AD069091AE068A | |
:103CD0002A813B81820F931F8F3F910509F028F4C1 | |
:103CE0009093AE068093AD06B7C0AC015A95509341 | |
:103CF000AE064093AD068091AB069091AC069C0158 | |
:103D00002F5F3F4F2F3F310509F028F43093AC0669 | |
:103D10002093AB06A1C08F5F91099093AC0680936E | |
:103D2000AB062091D20630E0420F531F4F3F5105A2 | |
:103D300009F028F45093AE064093AD061AC05A9588 | |
:103D40005093AE064093AD064091D40650E0840FE8 | |
:103D5000951F9093AC068093AB068F3F910549F079 | |
:103D600040F03093AE062093AD065093AC064093DE | |
:103D7000AB06862F8A608093CF0662FF6DC063C05A | |
:103D800066FF33C08091AD069091AE064A815B819B | |
:103D9000840F951F9093AE068093AD068F3F9105DB | |
:103DA00021F118F12091D20630E0A9015A95840F33 | |
:103DB000951F8F3F910509F028F49093AE068093EC | |
:103DC000AD0604C03093AE062093AD06862F826008 | |
:103DD0008093CF0660FF09C08091BF079091C00714 | |
:103DE00080629093C0078093BF074091CF0647FF42 | |
:103DF00033C08091AB069091AC066A817B81680FDD | |
:103E0000791F7093AC066093AB066F3F710521F18B | |
:103E100018F18091D40690E09C013A95260F371F47 | |
:103E20002F3F310509F028F43093AC062093AB0600 | |
:103E300004C09093AC068093AB06842F8860809377 | |
:103E4000CF0642FF09C08091BF079091C0078062F2 | |
:103E50009093C0078093BF078091C40680FD0DC179 | |
:103E60008091BA079091BB07803151E0950739F1F5 | |
:103E700024F48115914059F0F2C08032A1E09A07F4 | |
:103E800009F445C08033914009F461C0E8C08091D5 | |
:103E9000290690E0982F882720912A06822B8130CE | |
:103EA00094412CF460E080E091E00E94D70C6FEF29 | |
:103EB00080E091E00E94D70C85E091E0D2C0809133 | |
:103EC000290690E0982F882720912A06822B20E04F | |
:103ED00030E0AC014427B901680F791FFA01E62BE5 | |
:103EE000E00FF11F6491D901A55DB94F7C9167275F | |
:103EF00039F42F5F3F4F2038310569F760E070E0FB | |
:103F000080E091E00E94D70C85E191E0AAC0809109 | |
:103F1000290690E0982F882720912A06822B20E0FE | |
:103F200030E0AC014427B901680F791FFA01E62B94 | |
:103F3000E00FF11FE491D901A55DB94FEC932F5F1C | |
:103F40003F4F2038310579F785E291E08AC09091A2 | |
:103F5000C90481E089278093C90480FD7DC08091D8 | |
:103F6000C8048F5F8C3318F48093C80475C0109216 | |
:103F7000C8048091C7048F5F8C3318F48093C70402 | |
:103F80006BC01092C7048091C6048F5F883118F40B | |
:103F90008093C60461C01092C604E091C504EF5F2F | |
:103FA000E093C5044091C404423049F52091C20415 | |
:103FB00030E0322F22278091C304282BC90183705F | |
:103FC0009927892B41F5C901B2010E945E21892BF5 | |
:103FD00001F1C90168EE73E00E945E21892BD9F0DE | |
:103FE000C90160E971E00E945E21892B91F0C9014D | |
:103FF00064E670E00E945E21892B69F00AC0842F7C | |
:104000008170483018F0811108C009C0811107C0C3 | |
:1040100004C08DE105C08CE103C08EE101C08FE1D9 | |
:104020008E17D0F491E09093C50481E0840F8093C3 | |
:10403000C4048D3088F09093C4048091C3048F3FF2 | |
:1040400041F41092C3048091C2048F5F8093C20434 | |
:1040500003C08F5F8093C30489E391E002C080E0D6 | |
:1040600090E09093BB078093BA07892B09F452C064 | |
:104070008091C40681608093C40680910507837097 | |
:10408000833079F48091C5079091C607892B49F454 | |
:104090008091BF079091C00792609093C007809372 | |
:1040A000BF078091BF079091C007009799F12091B9 | |
:1040B000C5073091C607232B69F52091BF0627FF5E | |
:1040C00029C020E030E0A601022E02C0440F551F97 | |
:1040D0000A94E2F748235923452BE1F42F5F3F4F21 | |
:1040E0002A30310581F79B7F9093C0078093BF07EB | |
:1040F0008091BA070E94C10E8091BB070E94C10E39 | |
:104100007092C6076092C50703E510E01093BB07E5 | |
:104110000093BA0720E030E0232B11F40C94A7158C | |
:104120000E9400000C94A715CA019A959093B206BC | |
:104130008093B1062091AF063091B006A9014F5F80 | |
:104140005F4F4F3F510509F028F45093B00640935C | |
:10415000AF06AFCD2F5F31093093B0062093AF0685 | |
:104160006091CA0670E0860F971F8F3F910509F096 | |
:1041700028F49093B2068093B1061AC09A95909352 | |
:10418000B2068093B1068091CC0690E0280F391FCB | |
:104190003093B0062093AF062F3F310549F040F031 | |
:1041A0007093B2066093B1069093B0068093AF0609 | |
:1041B0008E2F8A608093C706E2FF7BCD60C0E6FF4A | |
:1041C00031C02091B1063091B206240F351F3093D3 | |
:1041D000B2062093B1062F3F310521F118F18091ED | |
:1041E000CA0690E0BC017A95260F371F2F3F310594 | |
:1041F00009F028F43093B2062093B10604C09093DE | |
:10420000B2068093B1068E2F82608093C706E0FFCE | |
:1042100009C08091BF079091C00784609093C00748 | |
:104220008093BF076091C70667FF43CD8091AF06BB | |
:104230009091B006480F591F5093B0064093AF06B7 | |
:104240004F3F510509F008F434CD2091CC0630E001 | |
:10425000C9019A95480F591F4F3F510509F028F49D | |
:104260005093B0064093AF0604C03093B00620933D | |
:10427000AF06862F88608093C70662FF1ACD8091B3 | |
:10428000BF079091C00780619093C0078093BF07DC | |
:1042900010CDE6EDF7E01382128288EE93E0A0E005 | |
:1042A000B0E084839583A683B78387E191E091830F | |
:1042B00080838FEF9FEF958784870895AA1BBB1B90 | |
:1042C00051E107C0AA1FBB1FA617B70710F0A61B16 | |
:1042D000B70B881F991F5A95A9F780959095BC0137 | |
:1042E000CD01089597FB072E16F4009407D077FDB3 | |
:1042F00009D00E945E2107FC05D03EF4909581957F | |
:104300009F4F0895709561957F4F0895A1E21A2EF1 | |
:10431000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F69 | |
:10432000A217B307E407F50720F0A21BB30BE40BB9 | |
:10433000F50B661F771F881F991F1A9469F7609500 | |
:104340007095809590959B01AC01BD01CF010895BA | |
:10435000EE0FFF1F0590F491E02D099481E090E0AD | |
:0A436000F8940C94B321F894FFCFF9 | |
:10436A00FFFFFFFF00E100000000000000C18081A4 | |
:10437A00000000000000007E0F05109F0F940FE55B | |
:06438A000FA30FC10F009C | |
:00000001FF |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SpaceInvaders - game by Rednuht | |
// SoftVMS - emulator by Marcus Comstedt | |
// Port to Arduboy - Felipe Manga | |
#include <avr/sleep.h> | |
// 0x00: Black background, white pixels (inverted). | |
// 0xFF: White BG, black pixels (like the original) | |
const uint8_t TOG = 0xFF; | |
const uint8_t BGC = 0xAA; | |
#define WIDTH 128 | |
#define HEIGHT 64 | |
#define BUFFER_SIZE (WIDTH*HEIGHT/8) | |
#define SSD1306_COLUMNADDR 0x21 | |
#define SSD1306_PAGEADDR 0x22 | |
// ----- Arduboy pins ----- | |
#define PIN_CS 12 // Display CS Arduino pin number | |
#define CS_PORT PORTD // Display CS port | |
#define CS_BIT PORTD6 // Display CS physical bit number | |
#define PIN_DC 4 // Display D/C Arduino pin number | |
#define DC_PORT PORTD // Display D/C port | |
#define DC_BIT PORTD4 // Display D/C physical bit number | |
#define PIN_RST 6 // Display reset Arduino pin number | |
#define RST_PORT PORTD // Display reset port | |
#define RST_BIT PORTD7 // Display reset physical bit number | |
#define SPI_MOSI_PORT PORTB | |
#define SPI_MOSI_BIT PORTB2 | |
#define SPI_SCK_PORT PORTB | |
#define SPI_SCK_BIT PORTB1 | |
#define RED_LED 10 /**< The pin number for the red color in the RGB LED. */ | |
#define GREEN_LED 11 /**< The pin number for the greem color in the RGB LED. */ | |
#define BLUE_LED 9 /**< The pin number for the blue color in the RGB LED. */ | |
#define RED_LED_PORT PORTB | |
#define RED_LED_BIT PORTB6 | |
#define GREEN_LED_PORT PORTB | |
#define GREEN_LED_BIT PORTB7 | |
#define BLUE_LED_PORT PORTB | |
#define BLUE_LED_BIT PORTB5 | |
// bit values for button states | |
// these are determined by the buttonsState() function | |
#define LEFT_BUTTON _BV(5) /**< The Left button value for functions requiring a bitmask */ | |
#define RIGHT_BUTTON _BV(6) /**< The Right button value for functions requiring a bitmask */ | |
#define UP_BUTTON _BV(7) /**< The Up button value for functions requiring a bitmask */ | |
#define DOWN_BUTTON _BV(4) /**< The Down button value for functions requiring a bitmask */ | |
#define A_BUTTON _BV(3) /**< The A button value for functions requiring a bitmask */ | |
#define B_BUTTON _BV(2) /**< The B button value for functions requiring a bitmask */ | |
#define PIN_LEFT_BUTTON A2 | |
#define LEFT_BUTTON_PORT PORTF | |
#define LEFT_BUTTON_BIT PORTF5 | |
#define PIN_RIGHT_BUTTON A1 | |
#define RIGHT_BUTTON_PORT PORTF | |
#define RIGHT_BUTTON_BIT PORTF6 | |
#define PIN_UP_BUTTON A0 | |
#define UP_BUTTON_PORT PORTF | |
#define UP_BUTTON_BIT PORTF7 | |
#define PIN_DOWN_BUTTON A3 | |
#define DOWN_BUTTON_PORT PORTF | |
#define DOWN_BUTTON_BIT PORTF4 | |
#define PIN_A_BUTTON 7 | |
#define A_BUTTON_PORT PORTE | |
#define A_BUTTON_BIT PORTE6 | |
#define PIN_B_BUTTON 8 | |
#define B_BUTTON_PORT PORTB | |
#define B_BUTTON_BIT PORTB4 | |
#define PIN_SPEAKER_1 5 /**< The pin number of the first lead of the speaker */ | |
#define PIN_SPEAKER_2 13 /**< The pin number of the second lead of the speaker */ | |
#define SPEAKER_1_PORT PORTC | |
#define SPEAKER_1_DDR DDRC | |
#define SPEAKER_1_BIT PORTC6 | |
#define SPEAKER_2_PORT PORTC | |
#define SPEAKER_2_DDR DDRC | |
#define SPEAKER_2_BIT PORTC7 | |
#define RAND_SEED_IN A4 // Open analog input used for noise by initRandomSeed() | |
#define RAND_SEED_IN_PORTF | |
#define RAND_SEED_IN_BIT PORTF1 | |
// Value for ADMUX to read the random seed pin: 2.56V reference, ADC1 | |
#define RAND_SEED_IN_ADMUX (_BV(REFS0) | _BV(REFS1) | _BV(MUX0)) | |
// ----------------------- | |
// #include "vmu.hpp" | |
// VMU.HPP //////////////////////////////////////////////////////////////////// | |
#define SGNEXT(n) ((n)&0x80? (n)-0x100:(n)) | |
#ifndef BIG | |
#define BIG | |
#endif | |
#ifndef O_BINARY | |
#define O_BINARY 0 | |
#endif | |
unsigned char ram[2][0x100]; // 512 bytes | |
unsigned char sfr[0x100]; // 256 bytes | |
#ifdef TRACE | |
unsigned char xram[2][0x80]; // third page is for BIOS only | |
#else | |
unsigned char xram[3][0x80]; // 384 bytes | |
#endif | |
unsigned char wram[0x200]; // 512 bytes | |
// BIG unsigned char flash[0x20000]; | |
// BIG unsigned char bios[0x10000]; | |
extern const unsigned char flash[]; | |
extern const unsigned char bios[]; | |
// this is a LUT. If the number of bits in ACC is odd, this returns 1. Zero otherwise. | |
//unsigned char parity[0x100]; // 256 bytes | |
// total: 1920 bytes | |
inline uint8_t parity( uint8_t v ){ | |
v ^= v>>4; | |
v ^= v>>2; | |
v ^= v>>1; | |
return v & 1; | |
} | |
const unsigned char * rom; | |
#define ROM(x) (pgm_read_byte(rom + (x))) | |
#define sound(x) | |
inline void keypress(int i) | |
{ | |
sfr[0x4c]&=~(1<<i); | |
if(sfr[0x4e]&4) | |
sfr[0x4e]|=2; | |
} | |
inline void keyrelease(int i) | |
{ | |
sfr[0x4c]|=(1<<i); | |
if(sfr[0x4e]&4) | |
sfr[0x4e]|=2; | |
} | |
uint16_t pc, intreq, imask; | |
uint8_t lcd_updated, lcdon; | |
const uint8_t hasbios=0; | |
uint16_t spd; | |
uint16_t t0h, t0l, t0base, t0scale; | |
uint16_t t1h, t1l; | |
extern const int gamesize; | |
struct tm { | |
uint16_t tm_year, | |
tm_mon, | |
tm_mday, | |
tm_hour, | |
tm_min, | |
tm_sec; | |
}; | |
inline struct tm localtime(){ | |
uint32_t t = millis(); | |
tm tt; | |
tt.tm_year = 117; | |
tt.tm_mon = 0; | |
tt.tm_mday = 1; | |
tt.tm_hour = 1; | |
tt.tm_min = 0; | |
tt.tm_sec = t / 1000; | |
return tt; | |
} | |
inline int tobcd(int n) | |
{ | |
return ((n/10)<<4)|(n%10); | |
} | |
void writemem(uint16_t addr, uint8_t value) | |
{ | |
value &= 0xff; | |
if(addr<0x100) { | |
ram[(sfr[0x01]&2)>>1][addr] = value; | |
return; | |
} | |
if(addr>=0x180) { | |
uint8_t b = sfr[0x25]; | |
if(b>2 || (b==2 && addr>=0x186)) | |
return; | |
xram[b][addr-0x180]=value; | |
if(lcdon) | |
lcd_updated = 1; | |
} else switch(addr) { | |
case 0x100: | |
sfr[0x01] = (sfr[0x01]&0xfe)|parity(value); | |
break; | |
case 0x10d: | |
if((value&1) != (sfr[0x0d]&1)) { | |
if(pc>0xfffd || ROM(pc)!=0x21){ | |
// error_msg("EXT 0 changed without following JMPF. pc = %04x", pc&0xffff); | |
}else | |
pc = (ROM(pc+1)<<8)|ROM(pc+2); | |
if(hasbios) | |
rom = ((value&1)? flash : bios); | |
} | |
break; | |
case 0x10e: | |
switch(value&0xa0) { | |
case 0x00: spd = 3000; break; | |
case 0x20: spd = 164; break; | |
case 0x80: spd = 6000; break; | |
case 0xa0: spd = 328; break; | |
} | |
break; | |
case 0x110: | |
if(!(value&0x40)) | |
t0l = sfr[0x13]; | |
if(!(value&0x80)) | |
t0h = sfr[0x15]; | |
break; | |
case 0x111: | |
t0scale = 256-value; | |
t0base = 0; | |
break; | |
case 0x113: | |
if(!(sfr[0x10]&0x40)) | |
t0l = value; | |
break; | |
case 0x115: | |
if(!(sfr[0x10]&0x80)) | |
t0h = value; | |
break; | |
case 0x118: | |
if(!(value&0x40)) | |
t1l = sfr[0x1b]; | |
if(!(value&0x80)) | |
t1h = sfr[0x1d]; | |
break; | |
case 0x11b: | |
if(!(sfr[0x18]&0x40)) | |
t1l = value; | |
break; | |
case 0x11d: | |
if(!(sfr[0x18]&0x80)) | |
t1h = value; | |
break; | |
case 0x122: | |
if(lcdon) | |
lcd_updated = 1; | |
break; | |
case 0x127: | |
if((!!(value&0x80)) != lcdon) { | |
lcdon = !!(value&0x80); | |
lcdrefresh(); | |
} | |
break; | |
case 0x166: | |
wram[0x1ff&((sfr[0x65]<<8)|sfr[0x64])] = value; | |
if(sfr[0x63]&0x10) | |
if(!++sfr[0x64]) | |
sfr[0x65]^=1; | |
return; | |
} | |
/* | |
if(addr>0x10e && addr<0x120 && addr != 0x118) | |
fprintf(stderr, "%04x: Write to %03x: %02x\n", pc, addr, value); | |
*/ | |
sfr[addr&0xff] = value; | |
if(addr == 0x118 || addr == 0x11b) { | |
/* Check for sound... */ | |
if(sfr[0x18]&0x40) | |
sound(32768/((256-sfr[0x1b])*6)); | |
else | |
sound(-1); | |
} | |
} | |
uint8_t readmem(uint16_t addr) | |
{ | |
uint8_t r; | |
if(addr<0x100) | |
return ram[(sfr[0x01]&2)>>1][addr]; | |
if(addr>=0x180) { | |
uint8_t b = sfr[0x25]; | |
if(b>2) | |
return 0xff; | |
return xram[b][addr-0x180]; | |
} else switch(addr) { | |
case 0x112: | |
return t0l; | |
case 0x114: | |
return t0h; | |
case 0x11b: | |
return t1l; | |
case 0x11d: | |
return t1h; | |
case 0x15c: | |
return 2; | |
case 0x165: | |
return 0xfe|(sfr[0x65]&1); | |
case 0x166: | |
r = wram[0x1ff&((sfr[0x65]<<8)|sfr[0x64])]; | |
if(sfr[0x63]&0x10) | |
if(!++sfr[0x64]) | |
sfr[0x65]^=1; | |
return r; | |
} | |
/* | |
if(addr>0x106 && addr<0x180) | |
fprintf(stderr, "%04x: Read from %03x: %02x\n", pc, addr, sfr[addr&0xff]); | |
*/ | |
return sfr[addr&0xff]; | |
} | |
uint16_t readlatch( uint16_t addr) | |
{ | |
switch(addr) { | |
case 0x11b: | |
case 0x11d: | |
return 0xff; | |
default: | |
return readmem(addr); | |
} | |
} | |
void push(uint8_t n) | |
{ | |
writemem(0x106, readmem(0x106)+1); | |
ram[0][readmem(0x106)]=n; | |
} | |
uint8_t pop() | |
{ | |
uint8_t r = ram[0][readmem(0x106)]; | |
writemem(0x106, readmem(0x106)-1); | |
return r; | |
} | |
void resetcpu() | |
{ | |
int i; | |
struct tm tm_ = localtime(); | |
tm *tm = &tm_; | |
memset(ram, 0, sizeof(ram)); | |
memset(xram, 0, sizeof(xram)); | |
memset(wram, 0, sizeof(wram)); | |
memset(sfr, 0, sizeof(sfr)); | |
sfr[0x06] = 0x7f; | |
sfr[0x4c] = 0xff; | |
sfr[0x01] = 0x02; | |
t0h = t0l = 0; | |
t1h = t1l = 0; | |
t0base = 0; | |
t0scale = 256; | |
ram[0][0x10] = tobcd(tm->tm_year/100+19); | |
ram[0][0x11] = tobcd(tm->tm_year%100); | |
ram[0][0x12] = tobcd(tm->tm_mon+1); | |
ram[0][0x13] = tobcd(tm->tm_mday); | |
ram[0][0x14] = tobcd(tm->tm_hour); | |
ram[0][0x15] = tobcd(tm->tm_min); | |
ram[0][0x17] = (tm->tm_year+1900)>>8; | |
ram[0][0x18] = (tm->tm_year+1900)&0xff; | |
ram[0][0x19] = tm->tm_mon+1; | |
ram[0][0x1a] = tm->tm_mday; | |
ram[0][0x1b] = tm->tm_hour; | |
ram[0][0x1c] = tm->tm_min; | |
ram[0][0x1d] = tm->tm_sec; | |
ram[0][0x31] = 0xff; | |
sfr[0x08] = 0x80; | |
writemem(0x10e, 0x81); | |
lcd_updated = 0; | |
lcdon = 0; | |
imask = 0; | |
intreq = 0; | |
if(hasbios) { | |
sfr[0x0d] = 0; | |
rom = bios; | |
pc = 0x1f0; | |
} else { | |
sfr[0x0d] = 1; | |
rom = flash; | |
pc = 0; | |
writemem(0x125, 2); | |
writemem(0x182, 0x10); | |
writemem(0x125, 0); | |
writemem(0x127, 0x80); | |
} | |
sound(-1); | |
} | |
uint8_t month_days() | |
{ | |
uint8_t m = ram[0][0x19]; | |
if(m==2) { | |
uint16_t y = ram[0][0x18] | (ram[0][0x17] << 8); | |
if(y&3) | |
return 28; | |
if(!(y%4000)) | |
return 29; | |
if(!(y%1000)) | |
return 28; | |
if(!(y%400)) | |
return 29; | |
if(!(y%100)) | |
return 28; | |
return 29; | |
} else return (m>7? ((m&1)? 30:31) : ((m&1)? 31:30)); | |
} | |
int handle_fwcall(int pc) | |
{ | |
switch(pc) { | |
case 0x100: | |
{ | |
int i, a = ((ram[1][0x7d]<<16)|(ram[1][0x7e]<<8)|ram[1][0x7f])&0x1ffff; | |
if(a>=gamesize) | |
writemem(0x100, 0xff); | |
else { | |
writemem(0x100, 0x00); | |
// for(i=0; i<0x80; i++) | |
// flash[(a&~0xff)|((a+i)&0xff)] = ram[1][i+0x80]; | |
//#ifdef __DC__ | |
// if(!flash_written(a)) | |
writemem(0x100, 0xff); | |
//#endif | |
} | |
/* | |
fprintf(stderr, "ROM write @ %05x:\n", a); | |
for(i=0; i<0x80; i++) | |
fprintf(stderr, " %02x", ram[1][i+0x80]); | |
fprintf(stderr, "\n"); | |
*/ | |
} | |
return 0x105; | |
case 0x110: | |
{ | |
int i, a = ((ram[1][0x7d]<<16)|(ram[1][0x7e]<<8)|ram[1][0x7f])&0x1ffff; | |
int r = 0; | |
for(i=0; i<0x80; i++) | |
if((r = (ROM((a&~0xff)|((a+i)&0xff)) ^ ram[1][i+0x80])) != 0) | |
break; | |
writemem(0x100, r); | |
} | |
return 0x115; | |
case 0x120: | |
{ | |
int i, a = ((ram[1][0x7d]<<16)|(ram[1][0x7e]<<8)|ram[1][0x7f])&0x1ffff; | |
for(i=0; i<0x80; i++) | |
ram[1][i+0x80] = ROM( (a&~0xff)|((a+i)&0xff) ); | |
/* | |
fprintf(stderr, "ROM read @ %05x\n", a); | |
*/ | |
} | |
return 0x125; | |
case 0x130: | |
if(!((ram[0][0x1e]^=1)&1)) | |
if(++ram[0][0x1d]>=60) { | |
ram[0][0x1d] = 0; | |
if(++ram[0][0x1c]>=60) { | |
ram[0][0x1c] = 0; | |
if(++ram[0][0x1b]>=24) { | |
ram[0][0x1b] = 0; | |
if(++ram[0][0x1a]>month_days()) { | |
ram[0][0x1a] = 1; | |
if(++ram[0][0x19]>=13) { | |
ram[0][0x19] = 1; | |
if(ram[0][0x18]==0xff) { | |
ram[0][0x18]=0; | |
ram[0][0x17]++; | |
} else | |
ram[0][0x18]++; | |
} | |
} | |
} | |
} | |
} | |
return 0x139; | |
case 0x1f0: | |
return 0; | |
default: | |
// error_msg("Firmware entered at unknown vector %04x!", pc); | |
return 0; | |
} | |
} | |
uint16_t mcy, tick; | |
void run_cpu() | |
{ | |
// struct timeval epoch; | |
// GETTIMEOFDAY(&epoch); | |
// for(;;) { | |
int r, s; | |
uint8_t c; | |
uint8_t cy = 1; | |
uint8_t i = ROM(pc); | |
/* * / | |
#ifdef TRACE | |
{ | |
char tmp[20]; | |
snprintf(tmp, 20, "%04x: %02x", pc, i ); | |
Serial.println( tmp ); | |
delay(50); | |
} | |
#endif | |
/* */ | |
pc++; | |
pc &= 0xffff; | |
switch(i&0xf) { | |
case 0: | |
switch(i>>4) { | |
case 0: | |
break; | |
case 1: | |
cy = 4; | |
push((pc+2)&0xff); | |
push(((pc+2)&0xff00)>>8); | |
pc = 0xffff&(pc+1+ROM(pc)+((ROM((pc+1)&0xffff))<<8)); | |
break; | |
case 2: | |
cy = 2; | |
push((pc+2)&0xff); | |
push(((pc+2)&0xff00)>>8); | |
pc = (ROM(pc)<<8)|ROM((pc+1)&0xffff); | |
break; | |
case 3: | |
cy = 7; | |
{ | |
int r32 = readmem(0x102)*((readmem(0x100)<<8)|readmem(0x103)); | |
writemem(0x101, (readmem(0x101)&0x7b)|(r>65535? 4:0)); | |
writemem(0x103, r32&0xff); | |
writemem(0x100, (r32&0xff00)>>8); | |
writemem(0x102, (r32&0xff0000)>>16); | |
} | |
break; | |
case 4: | |
cy = 7; | |
r = readmem(0x102); | |
if(r) { | |
int v = (readmem(0x100)<<8)|readmem(0x103); | |
s = v%r; | |
r = v/r; | |
} else { | |
r = 0xff00|readmem(0x103); | |
s = 0; | |
} | |
writemem(0x101, (readmem(0x101)&0x7b)|(s? 0:4)); | |
writemem(0x103, r&0xff); | |
writemem(0x100, (r&0xff00)>>8); | |
writemem(0x102, s); | |
break; | |
case 5: | |
cy = 2; /* ? */ | |
writemem(0x100, ROM( 0x1ffff&(uint16_t(readmem(0x104))+(uint16_t(readmem(0x105))<<8)+ | |
uint16_t((readmem(0x154))<<16)) )); | |
break; | |
case 6: | |
cy = 2; | |
push(readmem(ROM(pc++))); | |
pc &= 0xffff; | |
break; | |
case 7: | |
cy = 2; | |
writemem(ROM(pc++), pop()); | |
pc &= 0xffff; | |
break; | |
case 8: | |
cy = 2; | |
if(readmem(0x100)==0) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 9: | |
cy = 2; | |
if(readmem(0x100)!=0) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 0xa: | |
cy = 2; | |
r = pop()<<8; | |
r |= pop(); | |
pc = r; | |
break; | |
case 0xb: | |
cy = 2; | |
r = pop()<<8; | |
r |= pop(); | |
pc = r; | |
--imask; | |
break; | |
case 0xc: | |
r = readmem(0x100); | |
writemem(0x100, (r>>1)|((r&1)<<7)); | |
break; | |
case 0xd: | |
r = readmem(0x100); | |
s = readmem(0x101); | |
writemem(0x101, (s&0x7f)|((r&1)<<7)); | |
writemem(0x100, (r>>1)|(s&0x80)); | |
break; | |
case 0xe: | |
r = readmem(0x100); | |
writemem(0x100, (r<<1)|((r&0x80)>>7)); | |
break; | |
case 0xf: | |
r = readmem(0x100); | |
s = readmem(0x101); | |
writemem(0x101, (s&0x7f)|(r&0x80)); | |
writemem(0x100, (r<<1)|((s&0x80)>>7)); | |
break; | |
} | |
break; | |
case 1: | |
switch(i>>4) { | |
case 0: | |
cy = 2; | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
break; | |
case 1: | |
cy = 4; | |
pc = 0xffff&(pc+1+ROM(pc)+((ROM((pc+1)&0xffff))<<8)); | |
break; | |
case 2: | |
cy = 2; | |
pc = (ROM(pc)<<8)|ROM((pc+1)&0xffff); | |
break; | |
case 3: | |
cy = 2; | |
r = readmem(0x100); | |
writemem(0x101, (readmem(0x101)&0x7f)|(r<ROM(pc)? 0x80:0)); | |
s = (r == ROM(pc++)); | |
pc &= 0xffff; | |
if(s) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 4: | |
cy = 2; | |
r = readmem(0x100); | |
writemem(0x101, (readmem(0x101)&0x7f)|(r<ROM(pc)? 0x80:0)); | |
s = (r != ROM(pc++)); | |
pc &= 0xffff; | |
if(s) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 5: | |
cy = 2; /* ? */ | |
/* | |
if(!(readmem(0x154)&2)) | |
flash[0x1ffff&(readmem(0x104)+(readmem(0x105)<<8)+ | |
(readmem(0x154)<<16))] = readmem(0x100); | |
*/ | |
break; | |
case 6: | |
cy = 2; | |
push(readmem(0x100|ROM(pc++))); | |
pc &= 0xffff; | |
break; | |
case 7: | |
cy = 2; | |
writemem(0x100|ROM(pc++), pop()); | |
pc &= 0xffff; | |
break; | |
case 8: | |
r = readmem(0x100); | |
s = ROM(pc++); | |
pc &= 0xffff; | |
writemem(0x100, r+s); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r+s>255? 0x80:0)| | |
((r&15)+(s&15)>15? 0x40:0)|((0x80&(~r^s)&(s^(r+s)))? 4:0)); | |
break; | |
case 9: | |
r = readmem(0x100); | |
s = ROM(pc++); | |
pc &= 0xffff; | |
c = (readmem(0x101)&0x80)>>7; | |
writemem(0x100, r+s+c); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r+s+c>255? 0x80:0)| | |
((r&15)+(s&15)+c>15? 0x40:0)| | |
((0x80&(~r^s)&(s^(r+s+c)))? 4:0)); | |
break; | |
case 0xa: | |
/* FIXME: OV */ | |
r = readmem(0x100); | |
s = ROM(pc++); | |
pc &= 0xffff; | |
writemem(0x100, r-s); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r-s<0? 0x80:0)| | |
((r&15)-(s&15)<0? 0x40:0)|(0? 4:0)); | |
break; | |
case 0xb: | |
/* FIXME: OV */ | |
r = readmem(0x100); | |
s = ROM(pc++); | |
pc &= 0xffff; | |
c = (readmem(0x101)&0x80)>>7; | |
writemem(0x100, r-s-c); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r-s-c<0? 0x80:0)| | |
((r&15)-(s&15)-c<0? 0x40:0)|(0? 4:0)); | |
break; | |
case 0xc: | |
cy = 2; | |
writemem(0x100, ROM(0xffff&(readmem(0x100)+readmem(0x104)+ | |
(readmem(0x105)<<8)))); | |
break; | |
case 0xd: | |
writemem(0x100, readmem(0x100)|ROM(pc++)); | |
pc &= 0xffff; | |
break; | |
case 0xe: | |
writemem(0x100, readmem(0x100)&ROM(pc++)); | |
pc &= 0xffff; | |
break; | |
case 0xf: | |
writemem(0x100, readmem(0x100)^ROM(pc++)); | |
pc &= 0xffff; | |
break; | |
} | |
break; | |
case 2: | |
case 3: | |
r = ((i&1)<<8)|ROM(pc++); | |
pc &= 0xffff; | |
switch(i>>4) { | |
case 0: | |
writemem(0x100, readmem(r)); | |
break; | |
case 1: | |
writemem(r, readmem(0x100)); | |
break; | |
case 2: | |
cy = 2; | |
writemem(r, ROM(pc++)); | |
pc &= 0xffff; | |
break; | |
case 3: | |
cy = 2; | |
s = readmem(r); | |
r = readmem(0x100); | |
writemem(0x101, (readmem(0x101)&0x7f)|(r<s? 0x80:0)); | |
if(r == s) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 4: | |
cy = 2; | |
s = readmem(r); | |
r = readmem(0x100); | |
writemem(0x101, (readmem(0x101)&0x7f)|(r<s? 0x80:0)); | |
if(r != s) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 5: | |
cy = 2; | |
s = (readlatch(r)-1)&0xff; | |
writemem(r, s); | |
if(s != 0) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 6: | |
writemem(r, readlatch(r)+1); | |
break; | |
case 7: | |
writemem(r, readlatch(r)-1); | |
break; | |
case 8: | |
s = readmem(r); | |
r = readmem(0x100); | |
writemem(0x100, r+s); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r+s>255? 0x80:0)| | |
((r&15)+(s&15)>15? 0x40:0)|((0x80&(~r^s)&(s^(r+s)))? 4:0)); | |
break; | |
case 9: | |
s = readmem(r); | |
r = readmem(0x100); | |
c = (readmem(0x101)&0x80)>>7; | |
writemem(0x100, r+s+c); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r+s+c>255? 0x80:0)| | |
((r&15)+(s&15)+c>15? 0x40:0)| | |
((0x80&(~r^s)&(s^(r+s+c)))? 4:0)); | |
break; | |
case 0xa: | |
/* FIXME: OV */ | |
s = readmem(r); | |
r = readmem(0x100); | |
writemem(0x100, r-s); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r-s<0? 0x80:0)| | |
((r&15)-(s&15)<0? 0x40:0)|(0? 4:0)); | |
break; | |
case 0xb: | |
/* FIXME: OV */ | |
s = readmem(r); | |
r = readmem(0x100); | |
c = (readmem(0x101)&0x80)>>7; | |
writemem(0x100, r-s-c); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r-s-c<0? 0x80:0)| | |
((r&15)-(s&15)-c<0? 0x40:0)|(0? 4:0)); | |
break; | |
case 0xc: | |
s = readmem(r); | |
writemem(r, readmem(0x100)); | |
writemem(0x100, s); | |
break; | |
case 0xd: | |
writemem(0x100, readmem(0x100)|readmem(r)); | |
break; | |
case 0xe: | |
writemem(0x100, readmem(0x100)&readmem(r)); | |
break; | |
case 0xf: | |
writemem(0x100, readmem(0x100)^readmem(r)); | |
break; | |
} | |
break; | |
case 4: | |
case 5: | |
case 6: | |
case 7: | |
r = readmem((i&3)|((readmem(0x101)>>1)&0xc))|((i&2)? 0x100 : 0); | |
switch(i>>4) { | |
case 0: | |
writemem(0x100, readmem(r)); | |
break; | |
case 1: | |
writemem(r, readmem(0x100)); | |
break; | |
case 2: | |
writemem(r, ROM(pc++)); | |
pc &= 0xffff; | |
break; | |
case 3: | |
cy = 2; | |
s = readmem(r); | |
r = ROM(pc++); | |
pc &= 0xffff; | |
writemem(0x101, (readmem(0x101)&0x7f)|(s<r? 0x80:0)); | |
if(r == s) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 4: | |
cy = 2; | |
s = readmem(r); | |
r = ROM(pc++); | |
pc &= 0xffff; | |
writemem(0x101, (readmem(0x101)&0x7f)|(s<r? 0x80:0)); | |
if(r != s) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 5: | |
cy = 2; | |
s = (readlatch(r)-1)&0xff; | |
writemem(r, s); | |
if(s != 0) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 6: | |
writemem(r, readlatch(r)+1); | |
break; | |
case 7: | |
writemem(r, readlatch(r)-1); | |
break; | |
case 8: | |
s = readmem(r); | |
r = readmem(0x100); | |
writemem(0x100, r+s); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r+s>255? 0x80:0)| | |
((r&15)+(s&15)>15? 0x40:0)|((0x80&(~r^s)&(s^(r+s)))? 4:0)); | |
break; | |
case 9: | |
s = readmem(r); | |
r = readmem(0x100); | |
c = (readmem(0x101)&0x80)>>7; | |
writemem(0x100, r+s+c); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r+s+c>255? 0x80:0)| | |
((r&15)+(s&15)+c>15? 0x40:0)| | |
((0x80&(~r^s)&(s^(r+s+c)))? 4:0)); | |
break; | |
case 0xa: | |
/* FIXME: OV */ | |
s = readmem(r); | |
r = readmem(0x100); | |
writemem(0x100, r-s); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r-s<0? 0x80:0)| | |
((r&15)-(s&15)<0? 0x40:0)|(0? 4:0)); | |
break; | |
case 0xb: | |
/* FIXME: OV */ | |
s = readmem(r); | |
r = readmem(0x100); | |
c = (readmem(0x101)&0x80)>>7; | |
writemem(0x100, r-s-c); | |
writemem(0x101, (readmem(0x101)&0x3b)|(r-s-c<0? 0x80:0)| | |
((r&15)-(s&15)-c<0? 0x40:0)|(0? 4:0)); | |
break; | |
case 0xc: | |
s = readmem(r); | |
writemem(r, readmem(0x100)); | |
writemem(0x100, s); | |
break; | |
case 0xd: | |
writemem(0x100, readmem(0x100)|readmem(r)); | |
break; | |
case 0xe: | |
writemem(0x100, readmem(0x100)&readmem(r)); | |
break; | |
case 0xf: | |
writemem(0x100, readmem(0x100)^readmem(r)); | |
break; | |
} | |
break; | |
default: | |
switch(i&0xe0) { | |
case 0x00: | |
cy = 2; | |
r = ((i&7)<<8)|((i&0x10)<<7)|ROM(pc++); | |
push(pc&0xff); | |
push((pc&0xff00)>>8); | |
pc = (pc&0xf000)|r; | |
break; | |
case 0x20: | |
cy = 2; | |
r = ((i&7)<<8)|((i&0x10)<<7)|ROM(pc++); | |
pc = (pc&0xf000)|r; | |
break; | |
case 0x40: | |
cy = 2; | |
r = ((i&0x10)<<4)|ROM(pc++); | |
pc &= 0xffff; | |
if((s=readmem(r))&(1<<(i&7))) { | |
writemem(r, s & ~(1<<(i&7))); | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
} else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 0x60: | |
cy = 2; | |
r = ((i&0x10)<<4)|ROM(pc++); | |
pc &= 0xffff; | |
if(readmem(r)&(1<<(i&7))) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 0x80: | |
cy = 2; | |
r = ((i&0x10)<<4)|ROM(pc++); | |
pc &= 0xffff; | |
if(!(readmem(r)&(1<<(i&7)))) | |
pc = 0xffff&(pc+1+SGNEXT(ROM(pc))); | |
else { | |
pc++; | |
pc &= 0xffff; | |
} | |
break; | |
case 0xa0: | |
r = ((i&0x10)<<4)|ROM(pc++); | |
pc &= 0xffff; | |
writemem(r, readlatch(r) ^ (1<<(i&7))); | |
break; | |
case 0xc0: | |
r = ((i&0x10)<<4)|ROM(pc++); | |
pc &= 0xffff; | |
writemem(r, readlatch(r) & ~(1<<(i&7))); | |
break; | |
case 0xe0: | |
r = ((i&0x10)<<4)|ROM(pc++); | |
pc &= 0xffff; | |
writemem(r, readlatch(r) | (1<<(i&7))); | |
break; | |
} | |
break; | |
} | |
mcy += cy; | |
if(mcy>=spd) { | |
// struct timeval now, t; | |
if(lcd_updated) | |
lcdrefresh(); | |
/* | |
GETTIMEOFDAY(&now); | |
if((epoch.tv_usec += 10000)>=1000000) { | |
epoch.tv_usec -= 1000000; | |
epoch.tv_sec++; | |
} | |
if(now.tv_sec>epoch.tv_sec || | |
(now.tv_sec == epoch.tv_sec && now.tv_usec >= epoch.tv_usec)) { | |
t.tv_usec = 0; | |
t.tv_sec = 0; | |
} else if(epoch.tv_usec<now.tv_usec) { | |
t.tv_usec = 1000000 + epoch.tv_usec - now.tv_usec; | |
t.tv_sec = epoch.tv_sec - now.tv_sec - 1; | |
} else { | |
t.tv_usec = epoch.tv_usec - now.tv_usec; | |
t.tv_sec = epoch.tv_sec - now.tv_sec; | |
} | |
waitforevents(&t); | |
*/ | |
checkevents(); | |
mcy -= spd; | |
++tick; | |
if(tick>=50) { | |
intreq |= 1<<3; | |
tick -= 50; | |
} | |
} | |
/* Timer 0 */ | |
if(sfr[0x10] & 0xc0) { | |
int c0=0; | |
if((t0base+=cy) >= t0scale) | |
do | |
c0++; | |
while((t0base-=t0scale) >= t0scale); | |
if(c0) | |
if((sfr[0x10] & 0xe0) == 0xe0) { | |
t0l += c0; | |
if(t0l>=256) { | |
t0l -= 256; | |
if(++t0h >= 256) { | |
t0h -= 256; | |
if((t0l += sfr[0x13])>=256) { | |
t0l -= 256; | |
if((t0h += sfr[0x15])>=256) { | |
t0l = sfr[0x13]; | |
t0h = sfr[0x15]; | |
} | |
} | |
sfr[0x10] |= 10; | |
if(sfr[0x10]&4) | |
intreq |= 1<<4; | |
} | |
} | |
} else { | |
if(sfr[0x10] & 0x40) { | |
t0l += c0; | |
if(t0l>=256) { | |
t0l -= 256; | |
if((t0l += sfr[0x13])>=256) | |
t0l = sfr[0x13]; | |
sfr[0x10] |= 2; | |
if(sfr[0x10]&1) | |
intreq |= 1<<2; | |
} | |
} | |
if(sfr[0x10] & 0x80) { | |
t0h += c0; | |
if(t0h>=256) { | |
t0h -= 256; | |
if((t0h += sfr[0x15])>=256) | |
t0h = sfr[0x15]; | |
sfr[0x10] |= 8; | |
if(sfr[0x10]&4) | |
intreq |= 1<<4; | |
} | |
} | |
} | |
} | |
/* Timer 1 */ | |
if(sfr[0x18] & 0xc0) { | |
if((sfr[0x18] & 0xe0) == 0xe0) { | |
t1l += cy; | |
if(t1l>=256) { | |
t1l -= 256; | |
if(++t1h >= 256) { | |
t1h -= 256; | |
if((t1l += sfr[0x1b])>=256) { | |
t1l -= 256; | |
if((t1h += sfr[0x1d])>=256) { | |
t1l = sfr[0x1b]; | |
t1h = sfr[0x1d]; | |
} | |
} | |
sfr[0x18] |= 10; | |
if(sfr[0x18]&4) | |
intreq |= 1<<5; | |
} | |
} | |
} else { | |
if(sfr[0x18] & 0x40) { | |
t1l += cy; | |
if(t1l>=256) { | |
t1l -= 256; | |
if((t1l += sfr[0x1b])>=256) | |
t1l = sfr[0x1b]; | |
sfr[0x18] |= 2; | |
if(sfr[0x18]&1) | |
intreq |= 1<<5; | |
} | |
} | |
if(sfr[0x18] & 0x80) { | |
t1h += cy; | |
if(t1h>=256) { | |
t1h -= 256; | |
if((t1h += sfr[0x1d])>=256) | |
t1h = sfr[0x1d]; | |
sfr[0x18] |= 8; | |
if(sfr[0x18]&4) | |
intreq |= 1<<5; | |
} | |
} | |
} | |
} | |
if(!(sfr[0x0d]&1) && !hasbios) | |
if(!(pc=handle_fwcall(pc))) | |
return; | |
else | |
sfr[0x0d]|=1; | |
if((sfr[0x4e]&3)==3 && !imask) | |
intreq |= 1<<9; | |
if(!intreq || imask || !(sfr[0x08]&0x80)) | |
return; | |
for(r=0; r<10; r++) | |
if(intreq & (1<<r)) | |
return; | |
intreq &= ~(1<<r); | |
push(pc&0xff); | |
push((pc&0xff00)>>8); | |
imask++; | |
pc = ((r&~1)<<3)+((r&1)?0xb:0x3); | |
// } | |
} | |
// SRC.INO //////////////////////////////////////////////////////////////////// | |
const uint8_t PROGMEM lcdBootProgram[] = { | |
// boot defaults are commented out but left here in case they | |
// might prove useful for reference | |
// | |
// Further reading: https://www.adafruit.com/datasheets/SSD1306.pdf | |
// | |
// Display Off | |
// 0xAE, | |
// Set Display Clock Divisor v = 0xF0 | |
// default is 0x80 | |
0xD5, 0xF0, | |
// Set Multiplex Ratio v = 0x3F | |
// 0xA8, 0x3F, | |
// Set Display Offset v = 0 | |
// 0xD3, 0x00, | |
// Set Start Line (0) | |
// 0x40, | |
// Charge Pump Setting v = enable (0x14) | |
// default is disabled | |
0x8D, 0x14, | |
// Set Segment Re-map (A0) | (b0001) | |
// default is (b0000) | |
0xA1, | |
// Set COM Output Scan Direction | |
0xC8, | |
// Set COM Pins v | |
// 0xDA, 0x12, | |
// Set Contrast v = 0xCF | |
0x81, 0xCF, | |
// Set Precharge = 0xF1 | |
0xD9, 0xF1, | |
// Set VCom Detect | |
// 0xDB, 0x40, | |
// Entire Display ON | |
// 0xA4, | |
// Set normal/inverse display | |
// 0xA6, | |
// Display On | |
0xAF, | |
// set display mode = horizontal addressing mode (0x00) | |
0x20, 0x00, | |
// set col address range | |
// 0x21, 0x00, COLUMN_ADDRESS_END, | |
// set page address range | |
// 0x22, 0x00, PAGE_ADDRESS_END | |
}; | |
class Arduboy { | |
public: | |
void delayShort(uint16_t ms) | |
{ | |
delay((unsigned long) ms); | |
} | |
void bootOLED(){ | |
// reset the display | |
delayShort(5); // reset pin should be low here. let it stay low a while | |
bitSet(RST_PORT, RST_BIT); // set high to come out of reset | |
delayShort(5); // wait a while | |
// select the display (permanently, since nothing else is using SPI) | |
bitClear(CS_PORT, CS_BIT); | |
// run our customized boot-up command sequence against the | |
// OLED to initialize it properly for Arduboy | |
LCDCommandMode(); | |
for (uint8_t i = 0; i < sizeof(lcdBootProgram); i++) { | |
SPItransfer(pgm_read_byte(lcdBootProgram + i)); | |
} | |
LCDDataMode(); | |
for (uint16_t i = WIDTH * HEIGHT / 8; i--; ) | |
SPItransfer(BGC); | |
} | |
// Write to the SPI bus (MOSI pin) | |
void SPItransfer(uint8_t data) | |
{ | |
SPDR = data; | |
/* | |
* The following NOP introduces a small delay that can prevent the wait | |
* loop form iterating when running at the maximum speed. This gives | |
* about 10% more speed, even if it seems counter-intuitive. At lower | |
* speeds it is unnoticed. | |
*/ | |
asm volatile("nop"); | |
while (!(SPSR & _BV(SPIF))) { } // wait | |
} | |
void LCDDataMode() | |
{ | |
bitSet(DC_PORT, DC_BIT); | |
} | |
void LCDCommandMode() | |
{ | |
bitClear(DC_PORT, DC_BIT); | |
} | |
void begin(){ | |
// Port B INPUT_PULLUP or HIGH | |
PORTB |= _BV(RED_LED_BIT) | _BV(GREEN_LED_BIT) | _BV(BLUE_LED_BIT) | | |
_BV(B_BUTTON_BIT); | |
// Port B INPUT or LOW (none) | |
// Port B inputs | |
DDRB &= ~(_BV(B_BUTTON_BIT)); | |
// Port B outputs | |
DDRB |= _BV(RED_LED_BIT) | _BV(GREEN_LED_BIT) | _BV(BLUE_LED_BIT) | | |
_BV(SPI_MOSI_BIT) | _BV(SPI_SCK_BIT); | |
// Port C | |
// Speaker: Not set here. Controlled by audio class | |
// Port D INPUT_PULLUP or HIGH | |
PORTD |= _BV(CS_BIT); | |
// Port D INPUT or LOW | |
PORTD &= ~(_BV(RST_BIT)); | |
// Port D inputs (none) | |
// Port D outputs | |
DDRD |= _BV(RST_BIT) | _BV(CS_BIT) | _BV(DC_BIT); | |
// Port E INPUT_PULLUP or HIGH | |
PORTE |= _BV(A_BUTTON_BIT); | |
// Port E INPUT or LOW (none) | |
// Port E inputs | |
DDRE &= ~(_BV(A_BUTTON_BIT)); | |
// Port E outputs (none) | |
// Port F INPUT_PULLUP or HIGH | |
PORTF |= _BV(LEFT_BUTTON_BIT) | _BV(RIGHT_BUTTON_BIT) | | |
_BV(UP_BUTTON_BIT) | _BV(DOWN_BUTTON_BIT); | |
// Port F INPUT or LOW | |
PORTF &= ~(_BV(RAND_SEED_IN_BIT)); | |
// Port F inputs | |
DDRF &= ~(_BV(LEFT_BUTTON_BIT) | _BV(RIGHT_BUTTON_BIT) | | |
_BV(UP_BUTTON_BIT) | _BV(DOWN_BUTTON_BIT) | | |
_BV(RAND_SEED_IN_BIT)); | |
// Port F outputs (none) | |
// master, mode 0, MSB first, CPU clock / 2 (8MHz) | |
SPCR = _BV(SPE) | _BV(MSTR); | |
SPSR = _BV(SPI2X); | |
bootOLED(); | |
} | |
uint8_t buttonsState() | |
{ | |
uint8_t buttons; | |
// down, up, left right | |
buttons = ((~PINF) & B11110000); | |
// A (left) | |
buttons = buttons | (((~PINE) & B01000000) >> 3); | |
// B (right) | |
buttons = buttons | (((~PINB) & B00010000) >> 2); | |
return buttons; | |
} | |
} arduboy; | |
void setup() { | |
arduboy.begin(); | |
arduboy.LCDCommandMode(); | |
arduboy.SPItransfer(SSD1306_COLUMNADDR); | |
arduboy.SPItransfer(16); // Column start address (0 = reset) | |
arduboy.SPItransfer(16+96-1); // Column end address (127 = reset) | |
arduboy.SPItransfer(SSD1306_PAGEADDR); | |
arduboy.SPItransfer(0); // Page start address (0 = reset) | |
arduboy.SPItransfer(7); // Page end address | |
arduboy.LCDDataMode(); | |
resetcpu(); | |
} | |
void loop() { | |
run_cpu(); | |
} | |
// void digitalWrite(uint8_t pin, uint8_t val){} | |
uint8_t keyState; | |
void checkevents() | |
{ | |
uint8_t bit = 1; | |
uint8_t nks = arduboy.buttonsState(); | |
if( nks & UP_BUTTON ){ // UP | |
if( !(keyState&bit) ) { | |
keyState |= bit; | |
keypress(0); | |
} | |
}else if( keyState & bit ){ | |
keyState &= ~bit; | |
keyrelease(0); | |
} | |
bit <<= 1; | |
if( nks & DOWN_BUTTON ){ // UP | |
if( !(keyState&bit) ) { | |
keyState |= bit; | |
keypress(1); | |
} | |
}else if( keyState & bit ){ | |
keyState &= ~bit; | |
keyrelease(1); | |
} | |
bit <<= 1; | |
if( nks & LEFT_BUTTON ){ // UP | |
if( !(keyState&bit) ) { | |
keyState |= bit; | |
keypress(2); | |
} | |
}else if( keyState & bit ){ | |
keyState &= ~bit; | |
keyrelease(2); | |
} | |
bit <<= 1; | |
if( nks & RIGHT_BUTTON ){ // UP | |
if( !(keyState&bit) ) { | |
keyState |= bit; | |
keypress(3); | |
} | |
}else if( keyState & bit ){ | |
keyState &= ~bit; | |
keyrelease(3); | |
} | |
bit <<= 1; | |
if( nks & A_BUTTON ){ // UP | |
if( !(keyState&bit) ) { | |
keyState |= bit; | |
keypress(4); | |
} | |
}else if( keyState & bit ){ | |
keyState &= ~bit; | |
keyrelease(4); | |
} | |
bit <<= 1; | |
if( nks & B_BUTTON ){ // UP | |
if( !(keyState&bit) ) { | |
keyState |= bit; | |
keypress(5); | |
} | |
}else if( keyState & bit ){ | |
keyState &= ~bit; | |
keyrelease(5); | |
} | |
bit <<= 1; | |
} | |
void lcdrefresh(){ | |
uint8_t buf[] = { | |
0,0,0,0,0,0,0,0, | |
0,0,0,0,0,0,0,0, | |
0,0,0,0,0,0,0,0, | |
0,0,0,0,0,0,0,0, | |
0,0,0,0,0,0,0,0, | |
0,0,0,0,0,0,0,0 | |
}, ty; | |
uint8_t y, x, b=0, p=0; | |
p = sfr[0x22]; | |
if(p>=0x83) | |
p -= 0x83; | |
b = (p>>6); | |
p = (p&0x3f)*2; | |
for(y=0; y<32; y++) { | |
ty = y & 3; | |
uint8_t ty2 = ty << 1; | |
for(x=0; x<48; ) { | |
uint8_t value = xram[b][p++]; | |
if(!lcdon) | |
value = 0; | |
buf[x++] |= ((value>>7)&1) << ty2; | |
buf[x++] |= ((value>>6)&1) << ty2; | |
buf[x++] |= ((value>>5)&1) << ty2; | |
buf[x++] |= ((value>>4)&1) << ty2; | |
buf[x++] |= ((value>>3)&1) << ty2; | |
buf[x++] |= ((value>>2)&1) << ty2; | |
buf[x++] |= ((value>>1)&1) << ty2; | |
buf[x++] |= ((value )&1) << ty2; | |
if((p&0xf)>=12) | |
p+=4; | |
if(p>=128) { | |
b++; | |
p-=128; | |
} | |
if(b==2 && p>=6) { | |
b = 0; | |
p -= 6; | |
} | |
} | |
if( ty == 3 ){ | |
for( uint8_t j=0; j<6; j++ ) { | |
// Wire.beginTransmission( I2C_ADDR ); | |
// WIRE_WRITE(0x40); | |
for (uint8_t t=0; t<8; t++) { | |
uint8_t &col = buf[(j<<3)|t]; | |
col |= col << 1; | |
col ^= TOG; | |
arduboy.SPItransfer( col ); | |
arduboy.SPItransfer( col ); | |
col = 0; | |
} | |
// Wire.endTransmission(); | |
} | |
} | |
} | |
lcd_updated = 0; | |
} | |
const unsigned char bios[] = {0}; | |
const unsigned char flash[] PROGMEM = { | |
/*[0]*/ 0x21, 0x4, 0x80, 0x28, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0x4f, 0x0, 0x0, 0x0, | |
/*[10]*/ 0x0, 0x0, 0x0, 0x28, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x29, 0x30, 0x0, 0x0, 0x0, | |
/*[20]*/ 0x0, 0x0, 0x0, 0x28, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0x4f, 0x0, 0x0, 0x0, | |
/*[30]*/ 0x0, 0x0, 0x0, 0x28, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0x4f, 0x0, 0x0, 0x0, | |
/*[40]*/ 0x0, 0x0, 0x0, 0x28, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd8, 0x4e, 0xd9, 0x4e, 0xb0, | |
/*[50]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[60]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[70]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[80]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[90]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[a0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[b0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[c0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[d0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[e0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[f0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[100]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[110]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[120]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[130]*/ 0x61, 0x8, 0xdf, 0x8, 0xb8, 0xd, 0x21, 0x1, 0x30, 0x71, 0x8, 0xb0, 0x0, 0x0, 0x0, 0x0, | |
/*[140]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[150]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[160]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[170]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[180]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[190]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1a0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1b0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1c0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1d0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1e0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1f0]*/ 0xb8, 0xd, 0x21, 0x1, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[200]*/ 0x53, 0x50, 0x41, 0x43, 0x45, 0x20, 0x49, 0x4e, 0x56, 0x41, 0x44, 0x45, 0x52, 0x53, 0x20, 0x20, | |
/*[210]*/ 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6a, 0x75, 0x6d, 0x70, 0x73, | |
/*[220]*/ 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x63, 0x6f, 0x2e, 0x75, 0x6b, 0x20, 0x20, 0x20, 0x20, | |
/*[230]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[240]*/ 0x1, 0x0, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[250]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[260]*/ 0xe8, 0xff, 0xda, 0xff, 0xab, 0xfe, 0x18, 0xf9, 0x19, 0xf4, 0x19, 0xf1, 0x19, 0xf0, 0x5c, 0xf9, | |
/*[270]*/ 0xcb, 0xff, 0x9c, 0xff, 0x7d, 0xfb, 0xdc, 0xff, 0x5e, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
/*[280]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[290]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[2a0]*/ 0x0, 0x0, 0x0, 0x0, 0x22, 0x33, 0x34, 0x32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[2b0]*/ 0x0, 0x0, 0x0, 0x23, 0x34, 0x55, 0x66, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[2c0]*/ 0x0, 0x0, 0x2, 0x36, 0x66, 0x66, 0x66, 0x53, 0x1, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[2d0]*/ 0x0, 0x0, 0x1, 0x36, 0x66, 0x66, 0x66, 0x65, 0x33, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[2e0]*/ 0x0, 0x0, 0x0, 0x36, 0x66, 0x66, 0x54, 0x56, 0x56, 0x63, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[2f0]*/ 0x0, 0x0, 0x23, 0x46, 0x54, 0x43, 0x33, 0x34, 0x66, 0x64, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[300]*/ 0x0, 0x3, 0x44, 0x56, 0x43, 0x20, 0x0, 0x24, 0x66, 0x65, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[310]*/ 0x0, 0x24, 0x66, 0x64, 0x30, 0x0, 0x1, 0x74, 0x65, 0x44, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[320]*/ 0x0, 0x13, 0x66, 0x65, 0x32, 0x23, 0x33, 0x46, 0x63, 0x32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[330]*/ 0x0, 0x3, 0x66, 0x66, 0x64, 0x45, 0x66, 0x66, 0x42, 0x0, 0x0, 0x0, 0x8, 0x9a, 0xb0, 0x0, | |
/*[340]*/ 0x0, 0x3, 0x44, 0x34, 0x66, 0x66, 0x66, 0x66, 0x42, 0x12, 0x20, 0xa, 0x7c, 0xcc, 0xa0, 0x0, | |
/*[350]*/ 0x0, 0x0, 0x22, 0x27, 0x46, 0x66, 0x66, 0x66, 0x43, 0x34, 0x43, 0x8c, 0xcc, 0xcc, 0xc9, 0x99, | |
/*[360]*/ 0x0, 0x0, 0x0, 0x2, 0x36, 0x66, 0x65, 0x44, 0x66, 0x66, 0x63, 0xc, 0xcc, 0xc7, 0xcc, 0xc7, | |
/*[370]*/ 0x0, 0x0, 0x2, 0x33, 0x66, 0x43, 0x33, 0x32, 0x35, 0x66, 0x63, 0x2c, 0xa9, 0xb0, 0x9c, 0xcc, | |
/*[380]*/ 0x0, 0x0, 0x3, 0x45, 0x65, 0x32, 0x0, 0x0, 0x34, 0x66, 0x64, 0x2c, 0x90, 0xb, 0xac, 0x7a, | |
/*[390]*/ 0x0, 0x0, 0x34, 0x66, 0x64, 0x20, 0x0, 0x0, 0x24, 0x54, 0x43, 0xcc, 0x7a, 0x7c, 0xcc, 0xb0, | |
/*[3a0]*/ 0x0, 0x0, 0x24, 0x66, 0x64, 0x30, 0x0, 0x0, 0x2, 0x33, 0x22, 0xaa, 0xcc, 0xcc, 0xcc, 0x99, | |
/*[3b0]*/ 0x0, 0x0, 0x23, 0x66, 0x64, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c, 0xcc, 0xcc, 0xcc, | |
/*[3c0]*/ 0x0, 0x0, 0x3, 0x43, 0x33, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9a, 0xc7, 0x99, 0xb9, 0xcc, | |
/*[3d0]*/ 0x0, 0x0, 0x7c, 0xcc, 0xa2, 0xb0, 0x0, 0x0, 0x0, 0x0, 0xb, 0xcc, 0xc9, 0x0, 0x0, 0xcc, | |
/*[3e0]*/ 0x0, 0x2, 0xc7, 0xaa, 0xcc, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c, 0xc2, 0x0, 0x0, 0x9, | |
/*[3f0]*/ 0x0, 0x2c, 0xc8, 0x8, 0x7c, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa7, 0x7b, 0x0, 0x0, 0x0, | |
/*[400]*/ 0x0, 0x8c, 0xc7, 0x7c, 0xc8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[410]*/ 0x0, 0xb, 0x2c, 0xcc, 0xca, 0xab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[420]*/ 0x0, 0x8, 0xac, 0xa2, 0x9c, 0xc2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[430]*/ 0x0, 0xa, 0xc7, 0x0, 0xa, 0xab, 0x0, 0xa2, 0x70, 0x0, 0x0, 0x0, 0xac, 0xca, 0xa0, 0x0, | |
/*[440]*/ 0x0, 0x2, 0x7a, 0x0, 0x0, 0x0, 0x0, 0xaa, 0xc0, 0x0, 0x0, 0x8, 0x7a, 0x27, 0x70, 0x0, | |
/*[450]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa8, 0xb0, 0x0, 0x0, 0xa, 0xca, 0xac, 0x20, 0x0, | |
/*[460]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0xc7, 0x72, 0x0, | |
/*[470]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xaa, 0x8b, 0xaa, 0x0, | |
/*[480]*/ 0x23, 0xe, 0xa1, 0x23, 0x20, 0x9, 0x23, 0x27, 0x80, 0xd8, 0x4e, 0xdf, 0x44, 0x23, 0x4c, 0xff, | |
/*[490]*/ 0xd9, 0x1, 0x2, 0x1d, 0xf9, 0x1, 0x98, 0x0, 0x5, 0x22, 0x6f, 0xff, 0x1, 0x3, 0x22, 0x6f, | |
/*[4a0]*/ 0x0, 0x22, 0x31, 0x2, 0x22, 0x23, 0x28, 0x22, 0x38, 0x0, 0x22, 0x6e, 0x0, 0x19, 0x3f, 0xf, | |
/*[4b0]*/ 0x19, 0xc, 0xfd, 0xf, 0x87, 0xe, 0x25, 0x20, 0x13, 0x25, 0x9c, 0x0, 0x3a, 0x20, 0x13, 0x25, | |
/*[4c0]*/ 0x9d, 0x0, 0x30, 0x20, 0x13, 0x25, 0x9a, 0x0, 0x19, 0x20, 0x13, 0x25, 0x9b, 0x0, 0x2, 0x1, | |
/*[4d0]*/ 0xe0, 0x2, 0x2f, 0x31, 0x2a, 0xdb, 0x20, 0x9, 0xed, 0x63, 0x0, 0x12, 0x2f, 0x20, 0x9, 0xed, | |
/*[4e0]*/ 0x1, 0x19, 0x2, 0x2f, 0x31, 0x0, 0xca, 0x20, 0x9, 0xed, 0x73, 0x0, 0x12, 0x2f, 0x20, 0x9, | |
/*[4f0]*/ 0xed, 0x1, 0x8, 0xe, 0x28, 0x1, 0xcc, 0xe, 0x7b, 0x1, 0xc2, 0x1, 0xb4, 0xdd, 0xe, 0x61, | |
/*[500]*/ 0x0, 0x61, 0x2, 0x61, 0x3, 0x60, 0x2, 0x61, 0x25, 0x61, 0x63, 0x61, 0x64, 0x61, 0x65, 0xfc, | |
/*[510]*/ 0x63, 0x23, 0x64, 0x80, 0x22, 0x2, 0x80, 0xf3, 0x0, 0x13, 0x25, 0xd8, 0x65, 0x3, 0x66, 0x16, | |
/*[520]*/ 0x3, 0x64, 0x90, 0x11, 0x22, 0x2, 0x80, 0x23, 0x64, 0x80, 0xf8, 0x65, 0x98, 0x25, 0x2, 0x1, | |
/*[530]*/ 0x8, 0xf8, 0x25, 0x1, 0xe8, 0x62, 0x2, 0x1, 0xe4, 0x71, 0x65, 0x71, 0x64, 0x71, 0x63, 0x71, | |
/*[540]*/ 0x25, 0x70, 0x2, 0x71, 0x3, 0x71, 0x2, 0x71, 0x0, 0xfd, 0xe, 0xa0, 0xdd, 0xe, 0x61, 0x0, | |
/*[550]*/ 0x61, 0x2, 0x61, 0x3, 0xfc, 0x63, 0x23, 0x64, 0x80, 0xf3, 0x0, 0x13, 0x65, 0x13, 0x2, 0x23, | |
/*[560]*/ 0x3, 0x81, 0x2, 0x6f, 0x13, 0x66, 0x73, 0x3, 0x3, 0x3, 0x90, 0xf, 0x23, 0x3, 0x81, 0x23, | |
/*[570]*/ 0x64, 0x80, 0xf8, 0x65, 0x63, 0x2, 0x3, 0x2, 0x31, 0x2, 0x2, 0x1, 0xe5, 0x71, 0x3, 0x71, | |
/*[580]*/ 0x2, 0x71, 0x0, 0xdc, 0x63, 0xfd, 0xe, 0xa0, 0x22, 0x0, 0x4c, 0x13, 0x2, 0x2, 0x5f, 0xa1, | |
/*[590]*/ 0x4, 0x12, 0x6b, 0x3, 0x2, 0x80, 0xa, 0x2, 0x0, 0x81, 0x6, 0x12, 0x0, 0x73, 0x2, 0x1, | |
/*[5a0]*/ 0xf2, 0x22, 0x2d, 0x6, 0x4, 0x7f, 0x0, 0x42, 0x9e, 0x0, 0x5, 0x22, 0x6d, 0x4, 0x1, 0x3, | |
/*[5b0]*/ 0x22, 0x6d, 0x0, 0xe1, 0x3f, 0x12, 0x6c, 0x73, 0x0, 0x32, 0x5e, 0x11, 0x63, 0x0, 0x32, 0x5e, | |
/*[5c0]*/ 0xc, 0x63, 0x0, 0x32, 0x5e, 0x7, 0x63, 0x0, 0x32, 0x5e, 0x2, 0x1, 0x1d, 0x4, 0xd1, 0x80, | |
/*[5d0]*/ 0xe1, 0x80, 0x14, 0xe, 0x91, 0x62, 0x32, 0x22, 0x60, 0x0, 0x72, 0x6e, 0x2, 0x6e, 0x90, 0x2, | |
/*[5e0]*/ 0x2f, 0x19, 0x2, 0x21, 0x80, 0x9, 0x72, 0x21, 0x1, 0x5, 0x62, 0x0, 0x52, 0x2d, 0xb5, 0xa0, | |
/*[5f0]*/ 0xdd, 0xe, 0x2, 0x60, 0x80, 0x2c, 0xe, 0xd6, 0x22, 0x1, 0x3b, 0x22, 0x29, 0x2, 0x5, 0x81, | |
/*[600]*/ 0x4, 0x42, 0x5f, 0x8, 0x2, 0x29, 0xd, 0x88, 0x2, 0x60, 0x80, 0x16, 0x72, 0x29, 0x72, 0x1, | |
/*[610]*/ 0x2, 0x1, 0x41, 0x38, 0xe9, 0x2, 0x5f, 0x80, 0x6, 0x72, 0x5f, 0xe, 0xd6, 0x1, 0x3, 0x22, | |
/*[620]*/ 0x60, 0x0, 0xfd, 0xe, 0xa0, 0xd, 0xf0, 0xa0, 0x23, 0x4, 0x33, 0x23, 0x5, 0x12, 0x1b, 0xfc, | |
/*[630]*/ 0xdd, 0xe, 0x1a, 0xda, 0xfd, 0xe, 0xc, 0xfd, 0x20, 0x13, 0x25, 0x9c, 0x0, 0xfa, 0x20, 0x13, | |
/*[640]*/ 0x25, 0x9d, 0x0, 0xfa, 0x20, 0x13, 0x25, 0x9d, 0x0, 0x5, 0x9c, 0x0, 0x18, 0x1, 0xf5, 0x23, | |
/*[650]*/ 0x4, 0x63, 0x23, 0x5, 0xc, 0x1b, 0x91, 0xc, 0xfd, 0x22, 0x25, 0xff, 0x1a, 0x88, 0x2, 0x25, | |
/*[660]*/ 0x9d, 0x0, 0xf6, 0x1, 0xc3, 0x2, 0x2f, 0x31, 0xff, 0x10, 0xd, 0x4c, 0x19, 0xed, 0xdd, 0xe, | |
/*[670]*/ 0x18, 0xae, 0xfd, 0xe, 0x2, 0x60, 0x80, 0x2, 0xe, 0xd6, 0xa0, 0x2, 0x60, 0x90, 0x11, 0x22, | |
/*[680]*/ 0x60, 0x1, 0x2, 0x2f, 0x81, 0x1, 0x12, 0x5e, 0x2, 0x2e, 0x81, 0x1, 0x12, 0x5f, 0xe, 0xd6, | |
/*[690]*/ 0xa0, 0x61, 0x0, 0x61, 0x2, 0x61, 0x3, 0x22, 0x2d, 0x0, 0x2, 0x6b, 0x82, 0x2d, 0x1a, 0x74, | |
/*[6a0]*/ 0x13, 0x64, 0x23, 0x4, 0x4c, 0x23, 0x5, 0xc, 0x2, 0x2d, 0x82, 0x6d, 0xc1, 0x13, 0x2, 0x2, | |
/*[6b0]*/ 0x6c, 0x1a, 0x3c, 0x83, 0x64, 0x13, 0x64, 0x3, 0x2, 0xf3, 0x66, 0x13, 0x66, 0x3, 0x3, 0x80, | |
/*[6c0]*/ 0x6, 0x63, 0x64, 0xf3, 0x66, 0x13, 0x66, 0x23, 0x0, 0x4, 0x62, 0x2d, 0x42, 0x2d, 0xcb, 0x71, | |
/*[6d0]*/ 0x3, 0x71, 0x2, 0x71, 0x0, 0xa0, 0x61, 0x0, 0x61, 0x2, 0x61, 0x3, 0x22, 0x2d, 0x0, 0x2, | |
/*[6e0]*/ 0x5f, 0x82, 0x2d, 0x1a, 0x74, 0x13, 0x64, 0x23, 0x4, 0x60, 0x23, 0x5, 0xc, 0x2, 0x2d, 0xc1, | |
/*[6f0]*/ 0x13, 0x2, 0x2, 0x5e, 0x1a, 0x3c, 0x83, 0x64, 0x13, 0x64, 0x3, 0x2, 0xf3, 0x66, 0x13, 0x66, | |
/*[700]*/ 0x3, 0x3, 0x80, 0x6, 0x63, 0x64, 0xf3, 0x66, 0x13, 0x66, 0x23, 0x0, 0x3, 0x62, 0x2d, 0x42, | |
/*[710]*/ 0x2d, 0xcd, 0x71, 0x3, 0x71, 0x2, 0x71, 0x0, 0xa0, 0x2, 0x6e, 0x90, 0x2, 0x62, 0x38, 0x2, | |
/*[720]*/ 0x38, 0x31, 0x1, 0x6, 0x2, 0x6e, 0x90, 0xa, 0xe, 0x28, 0x2, 0x23, 0x80, 0x6, 0xa1, 0x8, | |
/*[730]*/ 0x12, 0x23, 0x2, 0x23, 0x12, 0x21, 0x12, 0x24, 0x22, 0x2f, 0x17, 0x22, 0x30, 0x4, 0x22, 0x2e, | |
/*[740]*/ 0x1c, 0x22, 0x60, 0x0, 0x22, 0x1, 0x39, 0x25, 0x4, 0x62, 0x1, 0x25, 0x9, 0x62, 0x1, 0x25, | |
/*[750]*/ 0xe, 0x22, 0x27, 0x0, 0x2, 0x6e, 0x90, 0x24, 0x22, 0x1, 0x4c, 0x22, 0x6e, 0x12, 0x23, 0x2, | |
/*[760]*/ 0xb, 0x23, 0x3, 0x0, 0xf3, 0x0, 0x18, 0x76, 0x23, 0x2, 0xb, 0x23, 0x3, 0x40, 0xf3, 0x0, | |
/*[770]*/ 0x18, 0x76, 0x23, 0x2, 0xb, 0x23, 0x3, 0x0, 0xf3, 0x0, 0x18, 0x76, 0xdd, 0xe, 0xd, 0x4c, | |
/*[780]*/ 0x19, 0xed, 0x18, 0xae, 0xfd, 0xe, 0xa0, 0x2, 0x24, 0x80, 0x4, 0x72, 0x24, 0x1, 0x1a, 0x2, | |
/*[790]*/ 0x21, 0x12, 0x24, 0xdd, 0xe, 0x18, 0xae, 0x18, 0x8b, 0x2, 0x27, 0x90, 0x4, 0xf, 0xfb, 0x1, | |
/*[7a0]*/ 0x2, 0x18, 0x38, 0x18, 0xae, 0xf, 0xaa, 0xfd, 0xe, 0xa0, 0x61, 0x0, 0x61, 0x2, 0x61, 0x3, | |
/*[7b0]*/ 0x22, 0x1, 0x5e, 0x23, 0x2, 0x3, 0x73, 0x2, 0x23, 0x3, 0x6, 0x72, 0x1, 0x5, 0x9f, 0x0, | |
/*[7c0]*/ 0xf, 0x73, 0x3, 0x3, 0x3, 0x90, 0x2, 0x1, 0xed, 0x2, 0x1, 0x41, 0x4c, 0xed, 0x1, 0x24, | |
/*[7d0]*/ 0x22, 0x1, 0x39, 0x3, 0x2, 0x82, 0x1, 0x12, 0x1, 0x5, 0x41, 0x19, 0x17, 0x2, 0x31, 0x90, | |
/*[7e0]*/ 0xf, 0x22, 0x2f, 0xff, 0x19, 0xb0, 0xe, 0x28, 0x71, 0x3, 0x71, 0x2, 0x71, 0x0, 0x2c, 0xa1, | |
/*[7f0]*/ 0x72, 0x31, 0xf, 0x19, 0x71, 0x3, 0x71, 0x2, 0x71, 0x0, 0xa0, 0x22, 0x2c, 0xff, 0x22, 0x1, | |
/*[800]*/ 0x4c, 0x5, 0xe1, 0xbf, 0x7f, 0x0, 0x8, 0x32, 0x2c, 0x0, 0x9f, 0x1, 0x2, 0x12, 0x2c, 0x62, | |
/*[810]*/ 0x1, 0x2, 0x1, 0x41, 0x5e, 0xeb, 0x2, 0x2c, 0x90, 0xe, 0x22, 0x1, 0x39, 0x65, 0x62, 0x1, | |
/*[820]*/ 0x65, 0x62, 0x1, 0x65, 0x62, 0x27, 0x1, 0xf, 0x22, 0x1, 0x4c, 0x5, 0x7f, 0x0, 0x1, 0x75, | |
/*[830]*/ 0x62, 0x1, 0x2, 0x1, 0x41, 0x5e, 0xf4, 0xa0, 0x22, 0x2c, 0x0, 0x22, 0x1, 0x4c, 0x5, 0xe1, | |
/*[840]*/ 0xbf, 0x7f, 0x0, 0x8, 0x32, 0x2c, 0x0, 0x7f, 0x1, 0x2, 0x12, 0x2c, 0x62, 0x1, 0x2, 0x1, | |
/*[850]*/ 0x41, 0x5e, 0xeb, 0x2, 0x2c, 0x41, 0x2c, 0xe, 0x22, 0x1, 0x39, 0x65, 0x62, 0x1, 0x65, 0x62, | |
/*[860]*/ 0x1, 0x65, 0x72, 0x27, 0x1, 0xf, 0x22, 0x1, 0x4c, 0x5, 0x7f, 0x0, 0x1, 0x65, 0x62, 0x1, | |
/*[870]*/ 0x2, 0x1, 0x41, 0x5e, 0xf4, 0xa0, 0x31, 0x6, 0x11, 0xc3, 0x2, 0xf3, 0x3, 0x15, 0xf3, 0x3, | |
/*[880]*/ 0x81, 0x6, 0xc3, 0x2, 0x62, 0x1, 0x63, 0x0, 0x1, 0xec, 0xa0, 0x60, 0x1, 0x61, 0x0, 0x61, | |
/*[890]*/ 0x2, 0x22, 0x1, 0x4c, 0xf3, 0x0, 0x31, 0x12, 0xe, 0x13, 0x2, 0x5, 0xf1, 0x40, 0x15, 0x3, | |
/*[8a0]*/ 0x2, 0x62, 0x1, 0x63, 0x0, 0x1, 0xef, 0x71, 0x2, 0x71, 0x0, 0x70, 0x1, 0xa0, 0x61, 0x0, | |
/*[8b0]*/ 0x60, 0x1, 0x61, 0x2, 0x61, 0x3, 0x22, 0x2c, 0x0, 0x22, 0x26, 0x0, 0x2, 0x2c, 0x31, 0x3, | |
/*[8c0]*/ 0x75, 0x22, 0x1, 0x39, 0x82, 0x1, 0x12, 0x1, 0x5, 0x12, 0x2a, 0x22, 0x2d, 0x0, 0x2, 0x2d, | |
/*[8d0]*/ 0x31, 0x4, 0x59, 0x2, 0x2a, 0x1a, 0x74, 0x12, 0x29, 0x22, 0x2b, 0x0, 0x2, 0x2b, 0x31, 0x6, | |
/*[8e0]*/ 0x45, 0x22, 0x1, 0x4c, 0x82, 0x1, 0x82, 0x26, 0x12, 0x1, 0x5, 0x7f, 0x0, 0x34, 0x5e, 0x0, | |
/*[8f0]*/ 0x5, 0x22, 0x28, 0x0, 0x1, 0x3, 0x22, 0x28, 0x4, 0x13, 0x3, 0xf3, 0x0, 0x23, 0x4, 0x4c, | |
/*[900]*/ 0x23, 0x5, 0xc, 0x82, 0x28, 0x82, 0x2d, 0xc1, 0x13, 0x2, 0x3, 0x3, 0x1a, 0x3c, 0x82, 0x29, | |
/*[910]*/ 0x13, 0x64, 0x3, 0x2, 0xf3, 0x66, 0x13, 0x66, 0x3, 0x3, 0x80, 0x6, 0x63, 0x64, 0xf3, 0x66, | |
/*[920]*/ 0x13, 0x66, 0x62, 0x2b, 0x1, 0xb6, 0x62, 0x2a, 0x62, 0x2d, 0x1, 0xa2, 0x2, 0x26, 0x81, 0x6, | |
/*[930]*/ 0x12, 0x26, 0x62, 0x2c, 0x1, 0x86, 0x71, 0x3, 0x71, 0x2, 0x70, 0x1, 0x71, 0x0, 0xa0, 0x20, | |
/*[940]*/ 0x13, 0x25, 0x9c, 0x0, 0xfa, 0x23, 0x4, 0xe7, 0x23, 0x5, 0xc, 0x1b, 0xfc, 0xc, 0xfd, 0x1a, | |
/*[950]*/ 0x88, 0x1a, 0x88, 0x1a, 0x88, 0x1a, 0x88, 0x23, 0x2, 0x5, 0x23, 0x4, 0x63, 0x23, 0x5, 0xc, | |
/*[960]*/ 0x1b, 0x91, 0xc, 0xfd, 0x22, 0x25, 0xff, 0x1a, 0x88, 0x2, 0x25, 0x9c, 0x0, 0x41, 0x23, 0x4, | |
/*[970]*/ 0xe7, 0x23, 0x5, 0xc, 0x1b, 0xfc, 0xc, 0xfd, 0x22, 0x25, 0xff, 0x1a, 0x88, 0x2, 0x25, 0x9c, | |
/*[980]*/ 0x0, 0x2d, 0x73, 0x2, 0x3, 0x2, 0x80, 0x2, 0x1, 0xd0, 0x23, 0x4, 0xe7, 0x23, 0x5, 0xc, | |
/*[990]*/ 0x1a, 0xaa, 0x20, 0x13, 0x25, 0x9c, 0x0, 0x17, 0x1b, 0xfc, 0xc, 0xfd, 0x3, 0x4, 0x81, 0x6, | |
/*[9a0]*/ 0x13, 0x4, 0x3, 0x5, 0x91, 0x0, 0x13, 0x5, 0x41, 0x10, 0xe5, 0x1a, 0x88, 0x1, 0x90, 0xa0, | |
/*[9b0]*/ 0x23, 0x4, 0x73, 0x23, 0x5, 0x11, 0x1b, 0xfc, 0xc, 0xfd, 0x1a, 0x88, 0x1a, 0x88, 0x1a, 0x88, | |
/*[9c0]*/ 0x1a, 0x88, 0x23, 0x4, 0x63, 0x23, 0x5, 0xc, 0x1b, 0x91, 0xc, 0xfd, 0x22, 0x25, 0xff, 0x1a, | |
/*[9d0]*/ 0x88, 0x2, 0x25, 0x9c, 0x0, 0x16, 0x23, 0x4, 0x73, 0x23, 0x5, 0x11, 0x1b, 0xfc, 0xc, 0xfd, | |
/*[9e0]*/ 0x22, 0x25, 0xff, 0x1a, 0x88, 0x2, 0x25, 0x9c, 0x0, 0x2, 0x1, 0xd6, 0xa0, 0x61, 0x0, 0x61, | |
/*[9f0]*/ 0x2, 0x61, 0x3, 0xdd, 0xe, 0x22, 0x2d, 0x0, 0x2, 0x31, 0xe0, 0x83, 0x0, 0x12, 0x2c, 0x2, | |
/*[a00]*/ 0x2e, 0x82, 0x2d, 0x1a, 0x74, 0x13, 0x64, 0x23, 0x4, 0x40, 0x23, 0x5, 0xc, 0x2, 0x2d, 0x82, | |
/*[a10]*/ 0x2c, 0xc1, 0x13, 0x2, 0x2, 0x2f, 0x1a, 0x3c, 0x83, 0x64, 0x13, 0x64, 0x3, 0x2, 0xf3, 0x66, | |
/*[a20]*/ 0x13, 0x66, 0x3, 0x3, 0x80, 0x6, 0x63, 0x64, 0xf3, 0x66, 0x13, 0x66, 0x2, 0x30, 0x62, 0x2d, | |
/*[a30]*/ 0x42, 0x2d, 0xc5, 0xfd, 0xe, 0x71, 0x3, 0x71, 0x2, 0x71, 0x0, 0xa0, 0x61, 0x2, 0x13, 0x2, | |
/*[a40]*/ 0xdf, 0x1, 0xd0, 0xdf, 0x1, 0xd0, 0xdf, 0x1, 0xd0, 0x13, 0x3, 0xdf, 0x1, 0xf0, 0xdf, 0x1, | |
/*[a50]*/ 0xf0, 0xdf, 0x1, 0xf0, 0xc3, 0x2, 0xa3, 0x2, 0x71, 0x2, 0x61, 0x3, 0x23, 0x3, 0x0, 0x80, | |
/*[a60]*/ 0x10, 0xc3, 0x2, 0xdf, 0x1, 0xd0, 0xc3, 0x3, 0xd0, 0xc3, 0x3, 0xc3, 0x2, 0x73, 0x0, 0x1, | |
/*[a70]*/ 0xee, 0x71, 0x0, 0xa0, 0xe0, 0xe0, 0xe0, 0x9b, 0x0, 0x2, 0xa1, 0x2, 0x23, 0x65, 0x0, 0x9f, | |
/*[a80]*/ 0x0, 0x3, 0x23, 0x65, 0xff, 0xd1, 0x80, 0xa0, 0x61, 0x0, 0x23, 0x0, 0x4, 0x1a, 0x92, 0x71, | |
/*[a90]*/ 0x0, 0xa0, 0x61, 0x2, 0x1a, 0xaa, 0x13, 0x2, 0x2, 0x25, 0x41, 0xff, 0x5, 0x20, 0x13, 0x25, | |
/*[aa0]*/ 0x12, 0x25, 0x3, 0x2, 0x53, 0x0, 0xed, 0x71, 0x2, 0xa0, 0x61, 0x0, 0x23, 0x0, 0xff, 0x53, | |
/*[ab0]*/ 0x0, 0xfd, 0x71, 0x0, 0xa0, 0x23, 0x3, 0x0, 0xa3, 0x2, 0x7f, 0x1, 0x4, 0x63, 0x3, 0x1, | |
/*[ac0]*/ 0xf7, 0x83, 0x2, 0xa0, 0x61, 0x2, 0x23, 0x2, 0x0, 0x80, 0xa, 0xc3, 0x2, 0x81, 0x5, 0xc3, | |
/*[ad0]*/ 0x2, 0x73, 0x0, 0x1, 0xf4, 0xc3, 0x2, 0x71, 0x2, 0xa0, 0x2, 0x38, 0x23, 0x2, 0xa, 0x1a, | |
/*[ae0]*/ 0xb5, 0xc3, 0x3, 0x1a, 0xc4, 0x12, 0x1e, 0xc3, 0x3, 0x22, 0x20, 0x23, 0x22, 0x1f, 0x4, 0x1b, | |
/*[af0]*/ 0x48, 0x23, 0x2, 0x1, 0x1a, 0xb5, 0xc3, 0x3, 0x1a, 0xc4, 0x12, 0x1e, 0xc3, 0x3, 0x22, 0x20, | |
/*[b00]*/ 0x29, 0x22, 0x1f, 0x4, 0x1b, 0x48, 0x2, 0x32, 0x23, 0x2, 0x64, 0x1a, 0xb5, 0xc3, 0x3, 0x1a, | |
/*[b10]*/ 0xc4, 0x12, 0x1e, 0xc3, 0x3, 0x22, 0x20, 0xe, 0x22, 0x1f, 0x18, 0x1b, 0x48, 0x23, 0x2, 0xa, | |
/*[b20]*/ 0x1a, 0xb5, 0xc3, 0x3, 0x1a, 0xc4, 0x12, 0x1e, 0xc3, 0x3, 0x22, 0x20, 0x14, 0x22, 0x1f, 0x18, | |
/*[b30]*/ 0x1b, 0x48, 0x23, 0x2, 0x1, 0x1a, 0xb5, 0xc3, 0x3, 0x1a, 0xc4, 0x12, 0x1e, 0xc3, 0x3, 0x22, | |
/*[b40]*/ 0x20, 0x1a, 0x22, 0x1f, 0x18, 0x1b, 0x48, 0xa0, 0x61, 0x0, 0x61, 0x2, 0x61, 0x3, 0x60, 0x2d, | |
/*[b50]*/ 0x22, 0x2d, 0x0, 0x2, 0x1f, 0x82, 0x2d, 0x1a, 0x74, 0x13, 0x64, 0x23, 0x4, 0xf3, 0x23, 0x5, | |
/*[b60]*/ 0x12, 0x2, 0x2d, 0x82, 0x1e, 0xc1, 0x13, 0x2, 0x2, 0x20, 0x1a, 0x3c, 0x83, 0x64, 0x13, 0x64, | |
/*[b70]*/ 0x3, 0x2, 0xf3, 0x66, 0x13, 0x66, 0x3, 0x3, 0x80, 0x6, 0x63, 0x64, 0xf3, 0x66, 0x13, 0x66, | |
/*[b80]*/ 0x23, 0x0, 0x5, 0x62, 0x2d, 0x42, 0x2d, 0xcb, 0x70, 0x2d, 0x71, 0x3, 0x71, 0x2, 0x71, 0x0, | |
/*[b90]*/ 0xa0, 0x61, 0x63, 0xdc, 0x63, 0xdd, 0xe, 0x61, 0x0, 0x61, 0x3, 0x23, 0x64, 0xd0, 0xf3, 0x0, | |
/*[ba0]*/ 0x13, 0x65, 0x13, 0x3, 0xc1, 0xe3, 0x66, 0x13, 0x66, 0x63, 0x64, 0x3, 0x64, 0xe1, 0xf, 0x41, | |
/*[bb0]*/ 0xc, 0xe, 0x3, 0x64, 0x81, 0x4, 0x13, 0x64, 0x90, 0x6, 0x23, 0x65, 0xff, 0x23, 0x64, 0x80, | |
/*[bc0]*/ 0x63, 0x3, 0x3, 0x3, 0x41, 0x42, 0xdd, 0x23, 0x64, 0xd0, 0xf3, 0x0, 0x13, 0x65, 0x3, 0x3, | |
/*[bd0]*/ 0xc1, 0xd3, 0x66, 0x13, 0x66, 0x63, 0x64, 0x3, 0x64, 0xe1, 0xf, 0x41, 0xc, 0xe, 0x3, 0x64, | |
/*[be0]*/ 0x81, 0x4, 0x13, 0x64, 0x90, 0x6, 0x23, 0x65, 0xff, 0x23, 0x64, 0x80, 0x63, 0x3, 0x3, 0x3, | |
/*[bf0]*/ 0x41, 0x84, 0xdd, 0x71, 0x3, 0x71, 0x0, 0xfd, 0xe, 0x71, 0x63, 0xa0, 0x61, 0x63, 0xdc, 0x63, | |
/*[c00]*/ 0xdd, 0xe, 0x61, 0x0, 0x61, 0x65, 0x61, 0x3, 0x61, 0x64, 0x23, 0x64, 0x80, 0xf3, 0x0, 0xd8, | |
/*[c10]*/ 0x65, 0x13, 0x3, 0xc1, 0x13, 0x66, 0x63, 0x64, 0x3, 0x64, 0xe1, 0xf, 0x41, 0xc, 0xd, 0x3, | |
/*[c20]*/ 0x64, 0x81, 0x4, 0x13, 0x64, 0x90, 0x5, 0xf8, 0x65, 0x23, 0x64, 0x80, 0x63, 0x3, 0x3, 0x3, | |
/*[c30]*/ 0x41, 0xc0, 0xe0, 0x71, 0x64, 0x71, 0x3, 0x71, 0x65, 0x71, 0x0, 0xfd, 0xe, 0x71, 0x63, 0xa0, | |
/*[c40]*/ 0x20, 0x50, 0x88, 0x50, 0x20, 0x50, 0xd8, 0x88, 0x20, 0x70, 0xf8, 0xa8, 0x60, 0xb0, 0x60, 0x90, | |
/*[c50]*/ 0x60, 0xd0, 0x60, 0x60, 0x7c, 0xe2, 0x7c, 0x7c, 0xb2, 0x7c, 0x7c, 0x9a, 0x7c, 0x7c, 0x8e, 0x7c, | |
/*[c60]*/ 0x40, 0x40, 0xa0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf8, | |
/*[c70]*/ 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, | |
/*[c80]*/ 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, | |
/*[c90]*/ 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, | |
/*[ca0]*/ 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0xff, | |
/*[cb0]*/ 0x80, 0x2, 0x0, 0x0, 0x0, 0x0, 0x40, 0x4, 0xf7, 0x3c, 0xe7, 0x3, 0x20, 0x4, 0x94, 0xa1, | |
/*[cc0]*/ 0x8, 0x4, 0xa0, 0x4, 0xf7, 0x38, 0xc6, 0x7, 0xa0, 0x4, 0x85, 0x20, 0x21, 0x4, 0xa0, 0x4, | |
/*[cd0]*/ 0x84, 0xbd, 0xce, 0x4, 0xa0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x20, 0x7, 0xff, 0xff, 0xff, 0xff, | |
/*[ce0]*/ 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
/*[cf0]*/ 0xff, 0xff, 0xff, 0xfd, 0xff, 0xf3, 0xff, 0xff, 0xfb, 0xbf, 0xff, 0xe7, 0xfb, 0xff, 0xff, 0xff, | |
/*[d00]*/ 0xdf, 0xcd, 0xef, 0xfc, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xfd, 0xff, 0xff, 0xfe, 0x72, 0x7f, 0xcc, | |
/*[d10]*/ 0x3f, 0xff, 0xfc, 0xf8, 0xff, 0x9f, 0xbf, 0xef, 0xfd, 0xfc, 0xff, 0x87, 0x7f, 0xff, 0xfe, 0xef, | |
/*[d20]*/ 0xff, 0xe1, 0xff, 0xff, 0xe6, 0xf, 0xf9, 0xf3, 0xff, 0xfc, 0x29, 0xff, 0xe2, 0x5f, 0xff, 0xf9, | |
/*[d30]*/ 0xa0, 0xff, 0xf3, 0x6b, 0xff, 0xed, 0x37, 0xfc, 0xf9, 0x7f, 0xff, 0xdc, 0x77, 0xfd, 0x3c, 0x7f, | |
/*[d40]*/ 0xff, 0x9e, 0x77, 0xcd, 0x1e, 0xdd, 0xf7, 0x9f, 0xbf, 0xec, 0x5f, 0x87, 0xc7, 0xc7, 0x9e, 0xee, | |
/*[d50]*/ 0xfd, 0x97, 0x87, 0xf7, 0xfe, 0x36, 0x5f, 0x3f, 0x7, 0xf3, 0xf3, 0x97, 0x7b, 0xac, 0x7, 0xe7, | |
/*[d60]*/ 0xf9, 0xe3, 0xfe, 0xdc, 0x7, 0xff, 0xc, 0xff, 0xff, 0xf8, 0x27, 0xff, 0x30, 0x7f, 0xff, 0xe0, | |
/*[d70]*/ 0x27, 0xf7, 0x9f, 0x3f, 0xff, 0xc0, 0x27, 0xf3, 0xcf, 0xff, 0xff, 0x40, 0x27, 0xfb, 0xe7, 0xfb, | |
/*[d80]*/ 0xff, 0x83, 0xc7, 0xfd, 0xe7, 0xff, 0xff, 0x0, 0x7, 0xfc, 0xff, 0xff, 0xfe, 0x0, 0x7, 0xfe, | |
/*[d90]*/ 0x7f, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, | |
/*[da0]*/ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[db0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[dc0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0x40, 0x0, | |
/*[dd0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[de0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[df0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[e00]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x33, 0x9e, | |
/*[e10]*/ 0xe0, 0xe5, 0x0, 0x8, 0x49, 0x50, 0x50, 0x55, 0x0, 0x8, 0x49, 0x5c, 0x50, 0x62, 0x0, 0x8, | |
/*[e20]*/ 0x49, 0x50, 0x50, 0x52, 0x0, 0x7, 0x33, 0x9e, 0xe0, 0xe2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[e30]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[e40]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[e50]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x77, 0x91, 0x45, 0x2f, 0x80, 0x9, 0x42, 0x59, 0x45, 0x22, | |
/*[e60]*/ 0x0, 0x9, 0x42, 0x59, 0x45, 0x22, 0x0, 0xe, 0x62, 0x55, 0x45, 0xe2, 0x0, 0xa, 0x42, 0x53, | |
/*[e70]*/ 0x45, 0x22, 0x0, 0x9, 0x42, 0x53, 0x45, 0x22, 0x0, 0x9, 0x77, 0x91, 0x39, 0x22, 0x0, 0x0, | |
/*[e80]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[e90]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[ea0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, | |
/*[eb0]*/ 0xff, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[ec0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[ed0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[ee0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[ef0]*/ 0x0, 0x0, 0xf, 0x71, 0x91, 0x0, 0x0, 0x0, 0x8, 0x4a, 0x5b, 0x0, 0x0, 0x0, 0xe, 0x72, | |
/*[f00]*/ 0x55, 0x0, 0x0, 0x0, 0x8, 0x52, 0x51, 0x0, 0x0, 0x0, 0x8, 0x49, 0x91, 0x0, 0x0, 0x0, | |
/*[f10]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[f20]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[f30]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[f40]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[f50]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[f60]*/ 0x0, 0x0, 0x0, 0x4, 0x48, 0x91, 0x0, 0x0, 0x0, 0x4, 0x48, 0x91, 0x0, 0x0, 0x0, 0x4, | |
/*[f70]*/ 0x48, 0x91, 0x0, 0x0, 0x0, 0x5, 0x4a, 0x95, 0x30, 0x0, 0x0, 0x2, 0x85, 0xa, 0x30, 0x0, | |
/*[f80]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3d, 0x29, | |
/*[f90]*/ 0x70, 0x0, 0x0, 0x0, 0x9, 0x2f, 0x48, 0x0, 0x0, 0x0, 0x9, 0x29, 0x70, 0x0, 0x0, 0x0, | |
/*[fa0]*/ 0x29, 0x29, 0x40, 0x0, 0x0, 0x0, 0x10, 0xc9, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[fb0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xef, 0x33, 0xde, 0x64, 0x80, 0x1, 0x2, 0x48, | |
/*[fc0]*/ 0x84, 0x96, 0x80, 0x0, 0xc2, 0x78, 0x84, 0x96, 0x80, 0x0, 0x22, 0x48, 0x84, 0x95, 0x98, 0x1, | |
/*[fd0]*/ 0xc2, 0x48, 0x9e, 0x64, 0x98, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[fe0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x98, 0x12, 0x90, 0x0, 0x0, 0x4, | |
/*[ff0]*/ 0x24, 0x12, 0xa0, 0x0, 0x0, 0x4, 0x24, 0x12, 0xc0, 0x0, 0x0, 0x4, 0x25, 0x92, 0xa0, 0x0, | |
/*[1000]*/ 0x0, 0x3, 0x99, 0x8c, 0x90, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1010]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1020]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1030]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, | |
/*[1040]*/ 0x0, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xe0, 0x0, 0x0, | |
/*[1050]*/ 0x0, 0x0, 0x3, 0xb0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0xf, 0xfc, | |
/*[1060]*/ 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0x80, 0x0, 0x0, 0x0, | |
/*[1070]*/ 0xfb, 0xdf, 0xc0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xf8, 0x0, | |
/*[1080]*/ 0x0, 0xf, 0xdf, 0xff, 0xff, 0x0, 0x0, 0x7f, 0xbf, 0xfd, 0xff, 0xf0, 0x7, 0xff, 0xff, 0xff, | |
/*[1090]*/ 0xff, 0xff, 0xff, 0x88, 0x89, 0xff, 0xf7, 0xff, 0xf7, 0xba, 0xab, 0xf3, 0xff, 0xfb, 0xff, 0x9a, | |
/*[10a0]*/ 0xa9, 0xff, 0xff, 0xff, 0xff, 0xba, 0xad, 0xff, 0xff, 0xff, 0xff, 0x88, 0xa9, 0xff, 0x7, 0xfe, | |
/*[10b0]*/ 0x1f, 0xff, 0xff, 0xfe, 0xdb, 0x0, 0xff, 0xff, 0xff, 0xff, 0x7, 0xfb, 0x8f, 0xff, 0xff, 0xff, | |
/*[10c0]*/ 0xff, 0xff, 0xfd, 0xf7, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
/*[10d0]*/ 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, | |
/*[10e0]*/ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfb, 0xfd, 0xfe, 0xff, 0xff, 0xff, | |
/*[10f0]*/ 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, | |
/*[1100]*/ 0xfb, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, | |
/*[1110]*/ 0xff, 0x7f, 0xff, 0xd0, 0xbf, 0xff, 0xdf, 0xff, 0xbf, 0xb0, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xc9, | |
/*[1120]*/ 0x3f, 0xff, 0x6f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xdf, 0xff, | |
/*[1130]*/ 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0x3f, 0xff, 0xf3, 0xff, 0xef, 0x77, 0x7f, | |
/*[1140]*/ 0xff, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xff, 0xff, | |
/*[1150]*/ 0xff, 0xff, 0x7e, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, | |
/*[1160]*/ 0xff, 0xff, 0xf7, 0xbf, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
/*[1170]*/ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, | |
/*[1180]*/ 0x5f, 0xf9, 0x7f, 0xff, 0xfb, 0xff, 0xff, 0xf8, 0xbf, 0xfe, 0xff, 0xff, 0xff, 0x1c, 0x3f, 0x7f, | |
/*[1190]*/ 0xff, 0xfb, 0xfc, 0xe, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0x27, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf3, | |
/*[11a0]*/ 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x7f, 0xe1, 0xfe, 0xbf, 0xcf, | |
/*[11b0]*/ 0x63, 0x3f, 0xcd, 0xff, 0xfb, 0xdf, 0x21, 0xef, 0xcc, 0x1f, 0xff, 0x9f, 0x9d, 0xff, 0xc8, 0xff, | |
/*[11c0]*/ 0xff, 0xb9, 0x9f, 0xff, 0xf3, 0xff, 0xff, 0xb1, 0x9f, 0xf9, 0xf1, 0xf0, 0x3f, 0xbd, 0xdf, 0xf3, | |
/*[11d0]*/ 0x78, 0xc0, 0xf, 0x9d, 0xff, 0xb8, 0x7f, 0x1, 0x3, 0xc9, 0xff, 0x9c, 0xde, 0x63, 0x1, 0xe3, | |
/*[11e0]*/ 0xff, 0xde, 0x1c, 0xc3, 0x0, 0xff, 0xfd, 0xef, 0x38, 0x82, 0x30, 0xff, 0xfc, 0x27, 0x39, 0x82, | |
/*[11f0]*/ 0x18, 0xff, 0x8f, 0x7, 0xf1, 0x0, 0x8, 0xff, 0x27, 0xe7, 0xf0, 0x0, 0x8, 0xfe, 0x77, 0xff, | |
/*[1200]*/ 0xe0, 0x2, 0x20, 0x7e, 0x77, 0xff, 0xe0, 0x10, 0x0, 0xff, 0x77, 0xff, 0xe0, 0x78, 0xc, 0xff, | |
/*[1210]*/ 0x8f, 0xfe, 0xec, 0x38, 0x4, 0xff, 0xfd, 0xff, 0xe0, 0x3a, 0x2, 0xfb, 0xff, 0xff, 0xe0, 0x18, | |
/*[1220]*/ 0x2, 0xff, 0xff, 0xff, 0xf0, 0x46, 0x0, 0xff, 0xff, 0xff, 0xf0, 0x73, 0x40, 0xff, 0xff, 0xff, | |
/*[1230]*/ 0xf8, 0x3f, 0xc0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x80, | |
/*[1240]*/ 0x0, 0x0, 0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1, 0x90, 0xf4, 0xbd, 0x1, 0x80, | |
/*[1250]*/ 0x1, 0x90, 0x84, 0xa1, 0x2, 0x40, 0x1, 0x90, 0xe4, 0xb9, 0x2, 0x40, 0x1, 0x90, 0x83, 0x21, | |
/*[1260]*/ 0x2, 0x40, 0x1, 0x9e, 0xf3, 0x3d, 0xe1, 0x80, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1, 0x80, | |
/*[1270]*/ 0x0, 0x0, 0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8f, 0x80, 0x0, 0x0, 0x1, | |
/*[1280]*/ 0xf1, 0xf0, 0x7f, 0xff, 0xff, 0xfe, 0xf, 0x8f, 0x80, 0x0, 0x0, 0x1, 0xf1, 0x80, 0x0, 0x0, | |
/*[1290]*/ 0x0, 0x4, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8e, 0x73, 0x39, 0xe0, 0x4, 0x1, 0x90, | |
/*[12a0]*/ 0x84, 0xa5, 0x0, 0xe, 0x1, 0x8c, 0x84, 0xb9, 0xc3, 0xbf, 0xb9, 0x82, 0x84, 0xa9, 0x0, 0xe, | |
/*[12b0]*/ 0x1, 0x9c, 0x73, 0x25, 0xe0, 0x4, 0x1, 0x80, 0x0, 0x0, 0x0, 0x4, 0x1, 0x80, 0x0, 0x0, | |
/*[12c0]*/ 0x0, 0x0, 0x1, 0x80, 0x30, 0x0, 0x0, 0x30, 0x1, 0x80, 0x48, 0x0, 0x0, 0x48, 0x1, 0x80, | |
/*[12d0]*/ 0x48, 0x0, 0x0, 0x48, 0x1, 0x80, 0x48, 0x0, 0x0, 0x48, 0x1, 0x80, 0x30, 0x0, 0x0, 0x30, | |
/*[12e0]*/ 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x7f, 0xff, 0xff, | |
/*[12f0]*/ 0xff, 0xff, 0xfe, 0x30, 0x48, 0x48, 0x48, 0x30, 0x10, 0x30, 0x10, 0x10, 0x38, 0x30, 0x48, 0x10, | |
/*[1300]*/ 0x20, 0x78, 0x70, 0x8, 0x38, 0x8, 0x70, 0x10, 0x20, 0x50, 0x78, 0x10, 0x78, 0x40, 0x70, 0x8, | |
/*[1310]*/ 0x70, 0x30, 0x40, 0x70, 0x48, 0x30, 0x78, 0x8, 0x10, 0x20, 0x20, 0x30, 0x48, 0x30, 0x48, 0x30, | |
/*[1320]*/ 0x30, 0x48, 0x38, 0x8, 0x30, 0x78, 0x5c, 0x9, 0x3, 0x4c, 0x9e, 0x0, 0x4, 0x9f, 0x0, 0x4, | |
/*[1330]*/ 0xa0, 0x21, 0x1, 0xf0, 0xf8, 0x7, 0x9f, 0x4c, 0xfb, 0x23, 0x27, 0x0, 0xf8, 0x7, 0x78, 0x5c, | |
/*[1340]*/ 0xf0, 0x7f, 0x4c, 0xf8, 0x23, 0x27, 0x80, 0xf8, 0x7, 0x9f, 0x4c, 0xfb, 0x1, 0xd7, 0x0, 0x0, | |
/*[1350]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1360]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1370]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1380]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1390]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[13a0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[13b0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[13c0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[13d0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[13e0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[13f0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[1400]*/ 0x0}; | |
const int gamesize = sizeof(flash); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment