Created
December 5, 2017 11:36
-
-
Save felipemanga/fe38feda23e09d660bab99411295b68e 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
:100000000C94D5060C94FD060C94FD060C94FD068C | |
:100010000C94FD060C94FD060C94FD060C94FD0654 | |
:100020000C94FD060C94FD060C94200D0C94920D7E | |
:100030000C94FD060C94FD060C94FD060C94FD0634 | |
:100040000C94FD060C94FD060C94FD060C94FD0624 | |
:100050000C94FD060C94FD060C94FD060C945E07B2 | |
:100060000C94FD060C94FD060C94FD060C94FD0604 | |
:100070000C94FD060C94FD060C94FD060C94FD06F4 | |
:100080000C94FD060C94FD060C94FD060C94FD06E4 | |
:100090000C94FD060C94FD060C94FD060C94FD06D4 | |
:1000A0000C94FD060C94FD060C94FD06F6111C1232 | |
:1000B00038125A12861290129D12B112C012D21228 | |
:1000C000DC12F312F9120713141342135A136613B6 | |
:1000D0008F134719B213C513DA1321146F149F1429 | |
:1000E000DC14F21401151015421545155415781538 | |
:1000F0009C15A515AC15B115E415E615E815EA151E | |
:10010000F215F615FA152F1632163E166B169116C5 | |
:10011000A816AD16B416F016411764179E17A91746 | |
:10012000B117B917D5F08D14A1C881CFD9F1AF207F | |
: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 | |
:1003300000536E616B65202020202020202020208B | |
:1003400020207772697474656E20627920532E6C58 | |
:100350006F636F636B406274696E7465726E65740F | |
:100360002E636F6D20000000000000000000000000 | |
:100370000001000A00000000000000000000000072 | |
:10038000000000000000000000000000000000006D | |
:100390000000F000FFF0F00FF0F0FFFFFA1FFFFF8A | |
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D | |
:1003B000FF44444444444444444444444444444442 | |
:1003C00044444444444444444444444444444444ED | |
:1003D00044444444444444444444444444444444DD | |
:1003E00044444444444444444444444444444444CD | |
:1003F00044444444444444444444444444444444BD | |
:1004000044444444444444444444444444444444AC | |
:10041000444444444444444444444444444444449C | |
:10042000444444444444444444444444444444448C | |
:10043000444444444444444444444444444444447C | |
:10044000444444444444444444444444444444446C | |
:10045000444444444444444444444444444444445C | |
:10046000444444444444444444444444444444444C | |
:10047000444444444444444444444444444444443C | |
:10048000444444444444444444444444444444442C | |
:10049000444444444444444444444444444444441C | |
:1004A000444444444444444444444444444444440C | |
:1004B00044444444444444444444444444444444FC | |
:1004C00044444444444444444444444444444444EC | |
:1004D00044444444444444444444444444444444DC | |
:1004E00044444444444444444444444444444444CC | |
:1004F00044444444444444444444444444444444BC | |
:1005000044444444444444444444444444444444AB | |
:10051000444444444444444444444444444444449B | |
:10052000444444444444444444444444444444448B | |
:10053000444444444444444444444444444444447B | |
:10054000444444444444444444444444444444446B | |
:10055000444444444444444444444444444444445B | |
:10056000444444444444444444444444444444444B | |
:10057000444444444444444444444444444444443B | |
:10058000444444444444444444444444444444442B | |
:10059000444444444444444444444444444444441B | |
:1005A000444444444444444444444444444444440B | |
:1005B00044230EA1232009232780D84EDF44234C57 | |
:1005C000FFD901021CF21DF90112C4230471230595 | |
:1005D0000A18B40D67188022300522811E22C0053A | |
:1005E00022C10422C20522C3C82230002302180EF1 | |
:1005F0008B23020F0E9D2302172230010E8B230244 | |
:100600000F0E9D2302162230020E8B23020F0E9D29 | |
:100610002302152230030E8B23020F0E9D2302149A | |
:100620002230040E8B23020F0E9D22CE0422CF0017 | |
:100630000DE40D800E090E1202CE12300E9512C876 | |
:1006400002CE12300EA712C962CE02CE4132032270 | |
:10065000CE0002C9130202CE12300E9D02C8130250 | |
:1006600002CE12300E8B0E2102CE12300E951302E6 | |
:1006700012C802CE12300EA712C90ED962CF02CF15 | |
:1006800041320322CF0002CF12300E95130202CF67 | |
:1006900012300EA70F2A2D031B317C00FBA01B314B | |
:1006A0007D00FBA0A02304B123050918B40D672C1D | |
:1006B0008022C71F02C72302000EAF23022F02C7EA | |
:1006C0000EAF72C702C790EC22C72F02C7130223D6 | |
:1006D00000010EAF02C7130223001F0EAF72C70244 | |
:1006E000C790E8A0030232C501A002C932C601A02A | |
:1006F00072CF0DE4A06102610302C4130223004E15 | |
:1007000023036D3013020303813912C403029130B5 | |
:1007100071037102A00DC4130323000023021C40C7 | |
:1007200003026300630012C60DC4130323000023F9 | |
:10073000022D400302630012C5A002C5130202C6C7 | |
:100740000EAFA01B319A001A9900299B001D98003A | |
:100750002CA002C131013C31025331032931044044 | |
:10076000A0A002C131040322C103A002C1310303CE | |
:1007700022C104A002C131010322C102A002C13181 | |
:10078000020322C101A002C87300130202CE12307C | |
:100790000E8BA002C97300130202CE12300E9DA070 | |
:1007A00002C86300130202CE12300E8BA002C9638E | |
:1007B00000130202CE12300E9DA02D740230813142 | |
:1007C0001200030214A002308131120004A0023092 | |
:1007D00081811200030214A002308181120004A062 | |
:1007E0002325009C0003232501230400230508C1C1 | |
:1007F00012030302C0C0C0E11F82031203230420BE | |
:100800000302C1DD0ED717FD0EA02325009C0003B7 | |
:10081000232501230400230508C112030302C0C0DD | |
:10082000C0E11F820312032304200302C1DD0E6115 | |
:10083000000713027100D71707330204FD0E07A04B | |
:1008400002C532C8020D7402C632C9020D740DE42D | |
:1008500072CF02CF41FF0322CF31A02325009C009D | |
:1008600003232501230400230508C112030302C04A | |
:10087000C0C0E11F820312032304502305080302B2 | |
:10088000C1DD0EE717FD0EA0000000000000000013 | |
:100890000000000000000000000000000000000058 | |
:1008A0000000000000000000000000000000000048 | |
:1008B0000000000000000000000000000000000038 | |
:1008C0000000000000000000000000000000000028 | |
:1008D0000000000000000000000000000000000018 | |
:1008E0000000000000000000000000000000000008 | |
:1008F00000000000000000000000000000000000F8 | |
:1009000000000000000000000000000000000000E7 | |
:1009100000000000000000000000000000000000D7 | |
:1009200000000000000000000000000000000000C7 | |
:100930000080869096A0A6B0B6C0C6D0D6E0E6F0FD | |
:10094000F680869096A0A6B0B6C0C6D0D6E0E6F0F7 | |
:10095000F6804020100804020180402010080402A4 | |
:100960000180402010080402018040201008040289 | |
:100970000180402010080402018040201008040279 | |
:10098000017FBFDFEFF7FBFDFE7FBFDFEFF7FBFD72 | |
:10099000FE7FBFDFEFF7FBFDFE7FBFDFEFF7FBFD65 | |
:1009A000FE7FBFDFEFF7FBFDFE7FBFDFEFF7FBFD55 | |
:1009B000FEDD0E61006125600223250022028026F3 | |
:1009C0000062020202E10F410C06020281041202DF | |
:1009D000020290EB78250523250101E070027125C4 | |
:1009E0007100FD0EA0DD0E61006125610360022231 | |
:1009F0000280F30013251303C11662020202E10F05 | |
:100A0000410C0D020281041202900563252202802E | |
:100A10006303030341C0E17002710371257100FD9E | |
:100A20000EA0000000000000000000000000000018 | |
:100A3000000000001E7C4200000010104200000078 | |
:100A40001E10420000000210420000001E107E0036 | |
:100A50000000000000000000000000000000000096 | |
:100A60000000000000000000000000000000000086 | |
:100A70000000000000000000000000000000000076 | |
:100A80000000000000000000000000000000000066 | |
:100A90000000000000000000000000000000000056 | |
:100AA0000000000000000000000000000000000046 | |
:100AB0000000000000000000000000000000000036 | |
:100AC0000000000000000000000000000000000026 | |
:100AD0000000000000000000000000000000000016 | |
:100AE0000000000000000000000000000000000006 | |
:100AF0000000000001F830C67C00010848AA400050 | |
:100B0000010084924000010084827000011CFC827C | |
:100B1000400001088482400001F884827C000000CB | |
:100B200000000000000000000000000000000000C5 | |
:100B300001F884FC7E000108848042000108848062 | |
:100B400042000108CCE07E0001084880480001080E | |
:100B50007880440001F830FC4200000000000000F2 | |
:100B60000000000000000000000000000000000085 | |
:100B70000000000000000000000000000000000075 | |
:100B80000000000000000000000000000000000065 | |
:100B90000000000000000000000000000000000055 | |
:100BA00000000001800000000003C00000000005FC | |
:100BB000C0000000000680000000003F8000000030 | |
:100BC000007E0000000000C00001000000C0847131 | |
:100BD00037C00078C4D16400000EE499C40000025C | |
:100BE000B489470000029CF9640000068D0D3400B2 | |
:100BF000000C850517C00030000000000041FFFF19 | |
:100C0000FFC00040000000000080000800000080DD | |
:100C1000000EA6EA0000000A444A0000000E424A04 | |
:100C200000000000864E00000000000000000000F0 | |
:100C30000000000000000000AEED15D559DCE44CCA | |
:100C40002895D894A449519D529C000000000000B2 | |
:100C500000000AA80000000012B8000000002128CF | |
:100C60000000785C09034C9E00049F0003A029F05B | |
:100C7000F8079F4CFB232700F807785CF17F4CF8BE | |
:100C8000232780F8079F4CFB01D8000000000000DC | |
:100C90000000000000000000000000000000000054 | |
:100CA0000000000000000000000000000000000044 | |
:100CB0000000000000000000000000000000000034 | |
:100CC0000000000000000000000000000000000024 | |
:100CD0000000000000000000000000000000000014 | |
:100CE0000000000000000000000000000000000004 | |
:100CF00000000000000000000000000000000000F4 | |
:100D000000000000000000000000000000000000E3 | |
:100D100000000000000000000000000000000000D3 | |
:100D200000000000000000000000000000000000C3 | |
:100D30000000080B00020202010009040000010289 | |
:100D40000200000524001001052401010104240211 | |
:100D5000060524060001070581031000400904016F | |
:100D600000020A0000000705020240000007058398 | |
:100D7000024000000403090412010002EF020140D6 | |
:100D80004123368000010102030141726475696EDE | |
:100D90006F204C4C430041726475696E6F204C6546 | |
:100DA0006F6E6172646F0000571D11241FBECFEF7C | |
:100DB000DAE0DEBFCDBF11E0A0E0B1E0E6E8FBE3A2 | |
:100DC00002C005900D92A632B107D9F728E0A6E23D | |
:100DD000B1E001C01D92A433B207E1F716E0C5ED02 | |
:100DE000D6E004C02197FE010E94B61DC43DD10784 | |
:100DF000C9F70E94FD0F0C94C11D0C9400003FB771 | |
:100E0000F8948091CA079091CB07A091CC07B0913C | |
:100E1000CD0726B5A89B05C02F3F19F00196A11D4F | |
:100E2000B11D3FBFBA2FA92F982F8827820F911D80 | |
:100E3000A11DB11DBC01CD0142E0660F771F881FC7 | |
:100E4000991F4A95D1F708958F929F92AF92BF92C2 | |
:100E5000CF92DF92EF92FF926B017C010E94FF061E | |
:100E60004B015C01C114D104E104F104F1F00E94D2 | |
:100E7000FF06DC01CB0188199909AA09BB09883E44 | |
:100E80009340A105B10570F321E0C21AD108E10831 | |
:100E9000F10888EE880E83E0981EA11CB11CC114D5 | |
:100EA000D104E104F10419F7DDCFFF90EF90DF905A | |
:100EB000CF90BF90AF909F908F9008951F920F9208 | |
:100EC0000FB60F9211242F933F938F939F93AF935D | |
:100ED000BF938091260190912701A0912801B091A4 | |
:100EE00029013091C90723E0230F2D3720F4019603 | |
:100EF000A11DB11D05C026E8230F0296A11DB11D3D | |
:100F00002093C9078093260190932701A09328017D | |
:100F1000B09329018091CA079091CB07A091CC078B | |
:100F2000B091CD070196A11DB11D8093CA07909382 | |
:100F3000CB07A093CC07B093CD07BF91AF919F9102 | |
:100F40008F913F912F910F900FBE0F901F9018958A | |
:100F50008EBD00000DB407FEFDCF08952F923F9285 | |
:100F60004F925F926F927F928F929F92AF92BF92B9 | |
:100F7000CF92DF92EF92FF920F931F93CF93DF9365 | |
:100F8000CDB7DEB7EC970FB6F894DEBF0FBECDBF7E | |
:100F9000CE0101964C0180E3D4011D928A95E9F7B8 | |
:100FA0001091D906133808F01358012F02950695B1 | |
:100FB000069503701F73110F90E0792F7370872FC0 | |
:100FC000880FB0902A016401FE013896612F56E027 | |
:100FD0001F5F20E8029FD0011124A60FB11DA55D5F | |
:100FE000BC4F4C91B11001C040E0342F331F332768 | |
:100FF000331F082E01C0330F0A94EAF7D6012C9153 | |
:10100000232B2C93DF01169746FBFF24F0F8F9AA57 | |
:101010001AAAE9A8FAA8082E01C0EE0C0A94EAF769 | |
:101020003C91E32AEC92119645FBFF24F0F8FBAAD1 | |
:101030001CAAEBA8FCA8082E01C0EE0C0A94EAF743 | |
:101040003C91E32AEC92119644FBFF24F0F8FDAAB0 | |
:101050001EAAEDA8FEA8082E01C0EE0C0A94EAF71D | |
:101060003C91E32AEC92119643FBFF24F0F8FFAA8F | |
:1010700018AEEFA8F8AC082E01C0EE0C0A94EAF7FF | |
:101080003C91E32AEC92119642FBFF24F0F8F9AE72 | |
:101090001AAEE9ACFAAC082E01C0EE0C0A94EAF7DD | |
:1010A0003C91E32AEC92DF0141FB222420F8312C11 | |
:1010B0009101082E01C0220F0A94EAF73E91232BDA | |
:1010C0002C9340FB662460F8712C9301082E01C01C | |
:1010D000220F0A94EAF73081232B2083212F2F70CF | |
:1010E0002C3010F015E0160F17FF02C00F5F1058DC | |
:1010F000023021F4163010F0165000E0515028E074 | |
:10110000C20ED11C3896552311F0612F61CF733078 | |
:1011100079F5412C512C620183E0CC0CDD1C8A95C1 | |
:10112000E1F7A12CB12C7501EC28FD28E80CF91C85 | |
:10113000D7012C91822F880F282B2095822F2BAF3F | |
:101140009CAF0E94A8072BAD822F0E94A807F70131 | |
:101150001082FFEFAF1ABF0A9CAD28E0A216B104BF | |
:1011600011F78FEF481A580AA6E04A16510499F66B | |
:101170009F5F903209F021CF1092B707EC960FB61F | |
:10118000F894DEBF0FBECDBFDF91CF911F910F91BD | |
:10119000FF90EF90DF90CF90BF90AF909F908F9097 | |
:1011A0007F906F905F904F903F902F9008950F9396 | |
:1011B0001F93CF93DF931F92CDB7DEB78C0180389A | |
:1011C0009140F0F08091DC06833008F040C182301D | |
:1011D00029F4063891E0190708F039C1F80120E830 | |
:1011E000829FE00DF11D1124E555FE4F6083809133 | |
:1011F0002A01882309F426C181E08093B70722C120 | |
:10120000053181E0180709F4B0C000F50E3021E087 | |
:10121000120709F468C050F4011591E01907B9F1FB | |
:101220000D3021E0120709F444C00CC1013181E006 | |
:10123000180709F482C0033191E0190709F48AC044 | |
:10124000003121E0120709F0FDC069C00D3181E0D5 | |
:10125000180709F4AEC058F4083121E0120709F468 | |
:101260008FC00B3181E0180709F498C0EBC007323A | |
:1012700091E0190709F4A8C0063621E0120709F425 | |
:10128000B6C0023281E0180709F0DCC0B0CF862F6B | |
:1012900082958F708627982F969596958927982FF7 | |
:1012A000969589279091B80680FB90F99093B8069F | |
:1012B000C9C08091C406862780FFC4C08091BA0748 | |
:1012C0009091BB078E3F2FEF920708F0BBC0409173 | |
:1012D000BC075091BD07FA01E80FF91FE491E13214 | |
:1012E00009F0B0C09DC0862F807A803271F028F45A | |
:1012F0008111A8C088EB9BE00AC0803869F0803A71 | |
:1013000009F0A0C088E491E002C084EA90E09093E4 | |
:10131000B9078093B80796C080E797E1F8CF66FDDC | |
:1013200007C08091CA0690E09093B2068093B10600 | |
:1013300067FD88C08091CC061DC080E091E0861BCF | |
:1013400091099093B4068093B3061092B60610925A | |
:10135000B50678C08091C70686FD74C0862F90E0E0 | |
:101360009093B2068093B1066DC08091C70687FD49 | |
:1013700069C0862F90E09093B0068093AF0662C05C | |
:1013800066FD07C08091D20690E09093AE068093F0 | |
:10139000AD0667FD57C08091D40610C08091CF067E | |
:1013A00086FD50C0862F90E09093AE068093AD06E8 | |
:1013B00049C08091CF0687FD45C0862F90E090936D | |
:1013C000AC068093AB063EC0262F221F2227221F89 | |
:1013D000422F50E080912A0190E04817590791F17F | |
:1013E00020932A0169830E94AE0769812BC09091E6 | |
:1013F0001C0780911B07E82FF0E0F92BF170E55DE9 | |
:10140000FE4F608320911A0724FF21C08F5F8093D5 | |
:101410001B0781111CC081E0892780931C0717C01E | |
:101420009C012F5F3F4FFA01E20FF31F24910296B8 | |
:10143000FA01E80FF91FE491F0E0F22BF093BB07FB | |
:10144000E093BA071127F801E954F94F60830F9030 | |
:10145000DF91CF911F910F910895A7EBB6E01696FB | |
:101460009C911697E92FF0E0E555FB4F8081915054 | |
:1014700016969C9308958F3F910509F068F420918A | |
:10148000B80626952170F22FE0E08E0F9F1FFC0119 | |
:10149000E555FB4F608308950C94D7088F3F910565 | |
:1014A00009F060F42091B80626952170F22FE0E053 | |
:1014B0008E0F9F1FFC01E555FB4F11C0803821E0C6 | |
:1014C000920778F02091DC06233008F056C030E80F | |
:1014D000239F800D911D1124FC01E555FE4F808155 | |
:1014E00008958D3121E0920719F178F4843121E0DB | |
:1014F0009207C1F08B3131E09307B9F0823121E0DE | |
:101500009207B1F58091B1060895853631E09307D1 | |
:1015100091F0863621E0920791F08C3531E0930707 | |
:1015200039F52DC08091AF0608958091AD060895DC | |
:101530008091AB06089580911C078E6F08952091CD | |
:101540001C0790911B07E92FF0E0F22BF170E55D8D | |
:10155000FE4F808130911A0734FF12C09F5F909335 | |
:101560001B0791110DC091E0922790931C070895DD | |
:101570009927FC01E954F94FB2CF8FEF089582E02B | |
:101580000895A7EBB6E01696EC911697EF5F1696C6 | |
:10159000EC93F0E0E555FB4F808308958B3121E01B | |
:1015A000920741F08D3121E0920721F00E944E0A0E | |
:1015B00090E008958FEF90E0089521E030E001C0C1 | |
:1015C000220F8A95EAF780910307282B20930307BF | |
:1015D0008091050782FF03C082608093050708950C | |
:1015E00021E030E001C0220F8A95EAF72095809132 | |
:1015F00003072823209303078091050782FF03C078 | |
:101600008260809305070895FC018091D6078111BF | |
:1016100003C08FEF9FEF08959FB7F89482E0809307 | |
:10162000E9002091F20030E01216130614F421E0D4 | |
:1016300030E02115310559F0289884E68093D507CC | |
:101640008091F10080838091F200882319F09FBF80 | |
:10165000C90108958BE68093E800F9CF2FB7F8947D | |
:1016600083E08093E9009091E800892F807295FFD4 | |
:1016700004C09091F20080E4891B2FBF0895CF929F | |
:10168000DF92EF92FF920F931F93CF93DF936C0142 | |
:101690007A018B01C0E0D0E0CE15DF0589F0D801DA | |
:1016A0006D918D01D601ED91FC910190F081E02DBD | |
:1016B000C6010995892B11F47E0102C02196ECCF59 | |
:1016C000C701DF91CF911F910F91FF90EF90DF90B5 | |
:1016D000CF90089580912C0881110DC082E08093F5 | |
:1016E000280884E08093290810922B0810922A0879 | |
:1016F00081E080932C0888E298E00895CF93DF93EF | |
:101700001F92CDB7DEB76983DC01ED91FC910280B9 | |
:10171000F381E02D41E050E0BE016F5F7F4F0995FE | |
:101720000F90DF91CF91089583E08093E90080913D | |
:10173000F200882319F08AE38093E80008950E945C | |
:101740002E0B90E00895CF93DF931F92CDB7DEB7B5 | |
:10175000FC018485958597FD05C02FEF3FEF358708 | |
:1017600024870BC0CE0101960E94040B019719F447 | |
:10177000898190E002C08FEF9FEF0F90DF91CF91B2 | |
:1017800008950F931F93CF93DF931F92CDB7DEB7CA | |
:101790008C01FC018485958597FF0EC0CE010196D2 | |
:1017A0000E94040B019719F4298130E002C02FEF49 | |
:1017B0003FEFF80135872487F801848595850F90E0 | |
:1017C000DF91CF911F910F910895FC01848595853C | |
:1017D00097FD0BC09FB7F89482E08093E900809159 | |
:1017E000F2009FBF90E0019608959FB7F89482E0C1 | |
:1017F0008093E9008091F2009FBF90E008950895E2 | |
:1018000080E090E008950E94BC1D8F929F92AF925D | |
:10181000BF92CF92DF92EF92FF920F931F93CF93DD | |
:10182000DF935C016B017A0180910B01882309F43D | |
:101830005BC08091D607882309F456C08091D407F5 | |
:1018400080FF05C08091E00082608093E000E701A6 | |
:1018500010E00AEF83E0882E9AE3992E2097D9F1C1 | |
:101860000E942E0B81110AC0015009F43DC061E0B5 | |
:1018700070E080E090E00E942407F0CF282F30E055 | |
:10188000C217D3070CF48C2F4FB7F8948092E9005D | |
:101890009091E80095FF1DC0282F30E0C21BD30BAC | |
:1018A000F601982F915020F081918093F100FACFAA | |
:1018B000C20ED31E112319F09092E80009C0809146 | |
:1018C000E80085FD06C09092E80011E0209709F03D | |
:1018D00010E04FBFC3CF1111C3CF5D9884E6809352 | |
:1018E000D7071E141F0444F081E090E0F5019383B4 | |
:1018F000828380E090E001C0C701DF91CF911F910A | |
:101900000F91FF90EF90DF90CF90BF90AF909F909E | |
:101910008F900895CF92DF92EF92FF920F931F93D3 | |
:10192000CF93DF931F92CDB7DEB7182F062FE42E8B | |
:10193000862F880F8E5F99830E94C20F83E00E94DA | |
:10194000C20FF12EC12E9981D92E8C2D8F1980179F | |
:1019500098F4F601E7FE02C0849101C080810E94E4 | |
:10196000C20F182F80E00E94C20F8123FFEFCF1A11 | |
:10197000DF0A8111EACF01C081E00F90DF91CF91A2 | |
:101980001F910F91FF90EF90DF90CF900895DF921D | |
:10199000EF92FF920F931F93CF93DF93D82E8A017C | |
:1019A0007B01E40EF51EEB01CE15DF0571F0D7FECD | |
:1019B00003C0FE01849101C088810E94C20F21965C | |
:1019C0008111F2CF8FEF9FEF01C0C801DF91CF915E | |
:1019D0001F910F91FF90EF90DF9008950F931F9349 | |
:1019E000CF93DF931F92CDB7DEB782E0898342E4C5 | |
:1019F00050E062E37DE080E80E94C70C0E946A0B21 | |
:101A0000DC0112960D911C9113970115110569F0D7 | |
:101A1000D801ED91FC910280F381E02DBE016F5F52 | |
:101A20007F4FC801099597FF07C089810F90DF910B | |
:101A3000CF911F910F910895F80100851185E5CF91 | |
:101A40001F920F920FB60F9211248F939F93809144 | |
:101A5000E1009091E100937F9093E10083FF0FC03C | |
:101A60001092E90091E09093EB001092EC0092E369 | |
:101A70009093ED001092D60798E09093F00082FFCB | |
:101A800020C093E09093E9009091F200992319F01F | |
:101A90009AE39093E8009091D707992339F09091B9 | |
:101AA000D70791509093D707992389F19091D50743 | |
:101AB000992339F09091D50791509093D5079923A8 | |
:101AC00041F184FF10C08091E2008E7E816080939E | |
:101AD000E2008091E1008F7E8093E1008091D40745 | |
:101AE0008E7E806111C080FF16C08091E2008E7EE4 | |
:101AF00080618093E2008091E1008E7E8093E1001E | |
:101B00008091D4078E7E81608093D40704C05D9A53 | |
:101B1000CDCF289AD6CF9F918F910F900FBE0F9067 | |
:101B20001F9018951F920F920FB60F921124CF920B | |
:101B3000DF92EF92FF920F931F932F933F934F9358 | |
:101B40005F936F937F938F939F93AF93BF93EF9325 | |
:101B5000FF93CF93DF93CDB7DEB76C97DEBFCDBFDA | |
:101B60001092E9008091E80083FFEDC168E0CE01AA | |
:101B700045960E94F00F82EF8093E8008D8987FFE1 | |
:101B800005C09091E80090FFFCCF03C09EEF9093BA | |
:101B9000E800982F907609F0C6C09E892F89188D8D | |
:101BA00091110CC0803829F48091D3078093F10003 | |
:101BB00002C01092F1001092F10048C1422F50E093 | |
:101BC000512B913051F4811141C14130510509F03F | |
:101BD0003DC18091D3078D7F0BC0933061F481119B | |
:101BE00035C14130510509F031C18091D307826080 | |
:101BF0008093D3072BC1953041F48091E80080FF9A | |
:101C0000FCCF20682093E30021C1963009F05FC02B | |
:101C1000EB8CFC8C1092E9001092D1071092D00747 | |
:101C2000123091F51092CF071092CE070E94EE0C61 | |
:101C300099E0BE016F5F7F4FDB01E92F1D92EA95AE | |
:101C4000E9F799831A8391E09E8390EA98879AEF47 | |
:101C500099872091D0073091D107275F3F4F3C8370 | |
:101C60002B838D831092E9001092D1071092D00738 | |
:101C7000F092CF07E092CE0749E050E080E00E946A | |
:101C8000C70C0E94EE0CE2C0F092CF07E092CE07A4 | |
:101C90000E946A0BDC011296ED90FC901397E11400 | |
:101CA000F10409F4C0C0D701ED91FC910480F581E5 | |
:101CB000E02DBE016B5E7F4FC7010995009719F0BB | |
:101CC0000CF0C4C0C7C0F701E084F184E8CF9730BE | |
:101CD00009F4C0C0983021F481E08093F100B6C0CF | |
:101CE000993009F0B3C0837009F0B4C0EDE0F1E0C1 | |
:101CF00081E021E036E39081992361F08093E9004F | |
:101D00002093EB0091919093EC003093ED008F5F66 | |
:101D1000873089F78EE78093EA001092EA008F8976 | |
:101D20008093D60793C08B8D9C8D1092E900109202 | |
:101D3000D1071092D0079093CF078093CE07898D5B | |
:101D4000811156C08E899D89913A59F4813209F0EA | |
:101D500081C047E050E064E071E080E00E94C70C81 | |
:101D600075C0913209F076C0833289F4888D90E095 | |
:101D7000982F88272F89822BA0E0B0E08093000164 | |
:101D800090930101A0930201B09303015FC08032E0 | |
:101D900069F48091E80082FFFCCF67E084E091E085 | |
:101DA0000E94F00F8BEF8093E80006C0823209F0AA | |
:101DB0004DC08F8980930B018091D207882319F041 | |
:101DC000EEEFFAE002C0E0E0F8E0809104019091CB | |
:101DD0000501A0910601B0910701803B9440A10547 | |
:101DE000B10509F07BC080910B0180FF93C076C0E4 | |
:101DF0000E946A0BDC0112960D911C91139701153C | |
:101E0000110541F1D801ED91FC910190F081E02D97 | |
:101E1000BE016B5E7F4FC8010995811117C0F801A3 | |
:101E200000851185ECCF113009F44EC0133091F4C8 | |
:101E30008F89882309F445C0823081F440E860E14D | |
:101E400086E99DE00E948A0C882321F08EEF809322 | |
:101E5000E80079C081E28093EB0075C0813029F4FD | |
:101E600040E86BE08AE89DE0EDCF833099F70E946F | |
:101E70006A0BDC011296ED90FC9013978E010F5FB8 | |
:101E80001F4F6801E114F10479F0D701ED91FC9145 | |
:101E90000680F781E02DB801C7010995080F111DD3 | |
:101EA000F701E084F184EECFD8011C92F601019095 | |
:101EB0000020E9F73197BF016C197D0940E0C601A8 | |
:101EC000C1CF64E77DE002C068E77DE06115710580 | |
:101ED00009F2FB01449150E080E840CF0FB6F8943E | |
:101EE000A8958091600088618093600010926000E6 | |
:101EF0000FBEA895EE3F2AE0F20739F08091FE0A66 | |
:101F00009091FF0A91838083A1CF1092FF0A1092D3 | |
:101F1000FE0A9CCFEE3F8AE0F80731F08081918184 | |
:101F20009093FF0A8093FE0A87E797E79183808367 | |
:101F30009BE088E10FB6F894A895809360000FBEEF | |
:101F40009093600083CF6C960FB6F894DEBF0FBEFF | |
:101F5000CDBFDF91CF91FF91EF91BF91AF919F9155 | |
:101F60008F917F916F915F914F913F912F911F9131 | |
:101F70000F91FF90EF90DF90CF900F900FBE0F90DA | |
:101F80001F9018954091D0075091D1072091CE070E | |
:101F90003091CF0742175307B4F49091E800957041 | |
:101FA000E1F39091E80092FD19C08093F1008091D7 | |
:101FB000D0079091D10701968F739927892B19F437 | |
:101FC0008EEF8093E8008091D0079091D107019621 | |
:101FD0009093D1078093D00781E0089580E0089521 | |
:101FE000615030F02091F100FC0120830196F8CF80 | |
:101FF000289884E68093D5070895CF93DF9300D087 | |
:1020000000D01F92CDB7DEB7789484B5826084BDCE | |
:1020100084B5816084BD85B5826085BD85B58160EC | |
:1020200085BD80916E00816080936E00109281006A | |
:102030008091810082608093810080918100816025 | |
:1020400080938100809180008160809380008091E6 | |
:1020500091008260809391008091910081608093D3 | |
:102060009100809190008160809390008091C100E8 | |
:1020700084608093C1008091C10082608093C10020 | |
:102080008091C10081608093C1008091C300816014 | |
:102090008093C3008091C00082608093C0008091D3 | |
:1020A000C20081608093C20080917A008460809336 | |
:1020B0007A0080917A00826080937A0080917A0021 | |
:1020C000816080937A0080917A00806880937A00A2 | |
:1020D0001092D6071092D3071092D4078091D700A0 | |
:1020E00081608093D70080EA8093D80089B58061B1 | |
:1020F00089BD89B5826089BD09B400FEFDCF61E06C | |
:1021000070E080E090E00E9424078091D8008F7CEE | |
:1021100080618093D8008091E000807F8093E00010 | |
:102120008091E1008E7E8093E1008DE08093E2005B | |
:10213000559A209AEEEFFFE7859194918B3F9C4D45 | |
:1021400019F481E08093D20785B1806F85B9249816 | |
:1021500084B1866E84B95E9A5F988AB1806D8AB9BF | |
:10216000769A6E9881B3806F81BB899880B38D70A9 | |
:1021700080BB80E58CBD81E08DBD65E070E080E0D6 | |
:1021800090E00E9424075F9A65E070E080E090E0B4 | |
:102190000E9424075E985C9874E2E72E71E0F72EA7 | |
:1021A0001DE01E0DF70184910E94A807FFEFEF1AB2 | |
:1021B000FF0A1E11F7CF5C9A01E014E001501109EB | |
:1021C00021F08FEF0E94A807F9CF5C9881E20E946E | |
:1021D000A80780E10E94A8078FE60E94A80782E274 | |
:1021E0000E94A80780E00E94A80787E00E94A80735 | |
:1021F0005C9A2FB7F8946091260170912701809125 | |
:102200002801909129012FBF40E052E0EBEAF4E071 | |
:10221000DF018A011D9201501040E1F720E831E012 | |
:10222000EBE2F3E0DF0189011D9201501040E1F77C | |
:10223000EBE2F1E0DF018A011D9201501040E1F76D | |
:1022400040E051E0E7EBF6E0DF018A011D9201502A | |
:102250001040E1F72FE72093BD061FEF109303070F | |
:1022600002E00093B8061092B2061092B1061092E6 | |
:10227000B0061092AF061092AE061092AD06109204 | |
:10228000AC061092AB061092B6061092B5065093AB | |
:10229000B4064093B30620E22093BB0427E12093C9 | |
:1022A000BC04FF24F394F092BD04F092BE04F092BB | |
:1022B000BF0427E02093C20421EE2093C304F092D0 | |
:1022C000C404F092C504F092C60428EE33E040E066 | |
:1022D00050E00E94941D2093C8041093DC0480E811 | |
:1022E0008093BF0661E88EE091E00E94D7081092CB | |
:1022F000B70710922A011092C6071092C5071092D4 | |
:10230000C0071092BF07F092C40681E391E090935A | |
:10231000BD078093BC071092BB071092BA070093C9 | |
:10232000DC0660E182E891E00E94D7081092DC06AA | |
:1023300060E887E291E00E94D708CC24C394D12CB6 | |
:1023400056E0452E512C66246394712C8091C7076A | |
:102350009091C8079C01215031093093C807209300 | |
:10236000C707892B71F483B7817F83BF83B78160EF | |
:1023700083BF889583B78E7F83BF5092C8074092F2 | |
:10238000C7070091BC071091BD07E090BA07F09015 | |
:10239000BB07F801EE0DFF1D2491B7016F5F7F4F62 | |
:1023A0007093BB076093BA07822F8F70843048F414 | |
:1023B000823008F044C3882341F0813009F441C1E0 | |
:1023C000E4C5883008F41AC4E0C5E22FF0E034E038 | |
:1023D000F595E7953A95E1F73197EF30F10510F073 | |
:1023E0000C944919EA5AFF4F0C94B61D82E0860FEF | |
:1023F0000E94C10A8091BA079091BB070296892F6B | |
:102400000E94C10A8091BA079091BB07F801E80FBA | |
:10241000F91F34910196F801E80FF91F2491830FF9 | |
:10242000911DE22FF0E0FE2FEE27E80FF91FF09349 | |
:10243000BB07E093BA073CC182E0860F0E94C10A45 | |
:102440008091BA079091BB070296892F0E94C10A1A | |
:102450008091BA079091BB07F801E80FF91F24910A | |
:10246000FC013196E00FF11FE491F0E0F22B56C62B | |
:102470002091B9068091B70690E0982F8827309177 | |
:10248000BA06832B289F7001299FF00C112480919C | |
:10249000B8068B778093B806E092BA066F2D80E07D | |
:1024A00091E00E94D708C701FF0CAA0BBB0BB093A9 | |
:1024B000B9062AC06091B90670E08091BA0661152C | |
:1024C000710541F02091B70690E0922B0E94801D8B | |
:1024D0007C0105C0682F70E07F6FE12CF12C8091AA | |
:1024E000B8068B77E114F10411F494E001C090E098 | |
:1024F000892B8093B8066093BA06672F80E091E03D | |
:102500000E94D708E092B90687E0C4C6E091BC06F5 | |
:10251000F0E0FE2FEE278091BB06E80FF11D5AC2B6 | |
:1025200022E0E20EF11CF092BB07E092BA07F8013C | |
:10253000E60FF71F849190E023C10E942D0AE091DD | |
:10254000BA07F091BB079F012F5F3F4F3093BB0746 | |
:102550002093BA07E00FF11FE491682F8E2F90E0CF | |
:10256000A0C22091B706C70102962111ECC3F80161 | |
:10257000E60FF71F249127FF09C6E491EE2ED9C27A | |
:102580002091B706C7010296222309F4DCC3F801A3 | |
:10259000E60FF71F249127FFF9C5E491EE2EF12CE9 | |
:1025A000FA94F7C50E942D0AE82EF12CFE2CEE2499 | |
:1025B0000E942D0AE82AEFC50E942D0AE82EF12C70 | |
:1025C000FE2CEE240E942D0AE82AF092BB07E0922E | |
:1025D000BA078091C5079091C60701979093C607E7 | |
:1025E0008093C50754C66091B70660FB679567F98D | |
:1025F000C7C48091B70690E06091B806262F80FB93 | |
:1026000027F92093B8069595879560780BC060915F | |
:10261000B706962F9078892F90E0880F892F881F12 | |
:10262000990B660F682BACC46091B7068091B80611 | |
:10263000262F2078982F9F77922B9093B80680783A | |
:10264000EBCFE22FF0E044E0F595E7954A95E1F70E | |
:102650003197EF30F10520F4EB59FF4F0C94B61D84 | |
:10266000F801E60FF71F849187FF04C0E491F0E0C2 | |
:10267000FA9502C0E491F0E052E0E50EF11CEE0D97 | |
:10268000FF1D4CC5F801E60FF71F949162E0E60EBE | |
:10269000F11CF801EE0DFF1DE491E90EF11CF0E0D4 | |
:1026A000FE2FEE27EE0EFF1EF092BB07E092BA0758 | |
:1026B00084E0F0C5F801E60FF71F8491F701329628 | |
:1026C000E00FF11FE491F0E0F82B28C52091B70648 | |
:1026D00030E04091B8064F77F801E60FF71F84917C | |
:1026E00090E02817390714F080E001C080E8482BFB | |
:1026F0004093B806A7014E5F5F4FE491F0E0C70139 | |
:1027000003962E173F0709F01EC3F801E40FF51FCB | |
:10271000249127FF3BC5E490F12CFA943AC520910F | |
:10272000B70630E04091B8064F77F801E60FF71F83 | |
:10273000849190E02817390714F080E001C080E808 | |
:10274000482B4093B806A7014E5F5F4FE491F0E03D | |
:10275000C70103962E173F0709F4F5C2F801E40FED | |
:10276000F51FB2C2B2E0EB0EF11CF092BB07E09293 | |
:10277000BA07F801E60FF71FE4918E2F90E0916001 | |
:102780000E944E0A0E94C10A82C50E942D0AE09151 | |
:10279000BA07F091BB079F012F5F3F4F3093BB07F4 | |
:1027A0002093BA07E00FF11FE491F0E0682FCF010A | |
:1027B000916077C13090B706A32CB12CE2E0EE0E09 | |
:1027C000F11CF092BB07E092BA07F801E60FF71F81 | |
:1027D0002490E22CF12C622D630D80E091E00E94A8 | |
:1027E000D7082091B8062B73C5018E0D9F1D8F3F12 | |
:1027F000910509F014F430E001C030E8232B332DAB | |
:102800003F70422D4F7050E0430F511D4031510534 | |
:1028100014F430E001C030E4232BA094B094AE2433 | |
:10282000BF24F0E8AF22BB24E826F926AE20BF2063 | |
:10283000AB2811F480E001C084E0282B2093B80677 | |
:1028400028C53090B706A32CB12C22E0E20EF11C73 | |
:10285000F092BB07E092BA07F801E60FF71F249049 | |
:10286000E22CF12C2091B806221F2227221F622F72 | |
:10287000630D620D80E091E02D830E94D708809166 | |
:10288000B8068B732D8130E0A5014E0D5F1D420F00 | |
:10289000531F4F3F510509F014F490E001C090E838 | |
:1028A000892B932D9F70E22DEF70F0E0E90FF11D61 | |
:1028B000E20FF31F709714F490E001C090E4892BAD | |
:1028C000A094B094AE24BF2430E8A322BB24E42615 | |
:1028D000F526AE20BF20AB2809F080C27DC2B090A3 | |
:1028E000B70642E0E40EF11CF092BB07E092BA0793 | |
:1028F000F801E60FF71FF4906B2D6F1980E091E05F | |
:102900000E94D7088091B8068B732B2D30E02F19C9 | |
:10291000310937FD02C020E001C020E8282B8B2DB3 | |
:102920008F7090E03F2D3F70831B9109991F99276D | |
:10293000991F9295990F990F907C822FFBC2B090AE | |
:10294000B70652E0E50EF11CF092BB07E092BA0721 | |
:10295000F801E60FF71FF4904091B806E42EEE1C44 | |
:10296000EE24EE1C6B2D6F196E1980E091E00E9431 | |
:10297000D7088091B8068B734E2D50E02B2D30E098 | |
:102980002F193109241B350B37FD02C090E001C01F | |
:1029900090E8892B2B2D2F7030E09F2D9F70291BE5 | |
:1029A0003109241B350B932F991F9927991F929555 | |
:1029B000990F990F907CBEC28091B706E091BB063B | |
:1029C000F0E0E80FF11D8091BC0690E0982F882779 | |
:1029D000E80FF91FE00FF11F649180E091E00E9481 | |
:1029E000D70855C49091B70682E0E80EF11CF0922A | |
:1029F000BB07E092BA07F801E60FF71F6491692B55 | |
:102A0000BFC29091B706A2E0EA0EF11CF092BB079C | |
:102A1000E092BA07F801E60FF71F64916923B0C28C | |
:102A20009091B706B2E0EB0EF11CF092BB07E0927A | |
:102A3000BA07F801E60FF71F64916927A1C2570191 | |
:102A4000E2E0AE0EB11CB092BB07A092BA07F8014B | |
:102A5000E60FF71FE491822F8170982E812C1401CC | |
:102A60002E2AE22FF0E084E0F595E7958A95E1F7CC | |
:102A70003197EF30F10520F4EC58FF4F0C94B61D60 | |
:102A8000C101E9C06091B70665C0F3E0EF0EF11C2B | |
:102A9000F092BB07E092BA07F801EA0DFB1D6491C2 | |
:102AA000C1010E943B0AF3C3C1010E944E0A282FB4 | |
:102AB00030E04091B70650E08091B8068F7742171A | |
:102AC000530714F090E001C090E8892B8093B8067A | |
:102AD000C70103964217530709F035C1F801EA0D03 | |
:102AE000FB1D249127FF52C3E490F12CFA9451C3AB | |
:102AF000C1010E944E0A282F30E04091B70650E0F5 | |
:102B00008091B8068F774217530714F090E001C008 | |
:102B100090E8892B8093B806C701039642175307A4 | |
:102B200009F411C1F801EA0DFB1D249127FF2EC302 | |
:102B3000E490F12CFA942DC3C1010E94CE0A0197B2 | |
:102B40007C01FF246E2DC101F4C0C1010E94CE0A98 | |
:102B500061E0680FC10198C3C1010E94CE0A6FEF06 | |
:102B6000F8CFC1010E944E0AB82EE82EF12CA09099 | |
:102B7000B7062A2C312C682F6A0D80E091E00E9464 | |
:102B8000D7088091B8068B7391012E0D3F1D2F3F02 | |
:102B9000310509F014F450E001C050E8582B4A2DDB | |
:102BA0004F708B2D8F7090E0840F911D409714F41F | |
:102BB00080E001C080E4852B209430942E243F24B3 | |
:102BC00040E82422332402C1C1010BC1C1015AC112 | |
:102BD000C1017BC1C1010E944E0AF82E6091B70667 | |
:102BE000C101B3C1F090B706C101B6C1F090B706FC | |
:102BF000C101BAC1F090B706C101BEC18091B8064B | |
:102C000090E0959587958C709927322F3370832BA0 | |
:102C10002D8369837C830E944E0A90E02D81698117 | |
:102C20007C8121FD03C040E050E002C040E051E063 | |
:102C30005A01A82AB92AE22FF0E0A4E0F595E79519 | |
:102C4000AA95E1F73197EF30F10520F4ED57FF4FEA | |
:102C50000C94B61DC5010E944E0A682F91C1609167 | |
:102C6000B70680C082E0E80EF11CF092BB07E0924C | |
:102C7000BA07F801E60FF71F649174C0C5016983B4 | |
:102C80007C830E944E0A482F50E097012E5F3F4FF1 | |
:102C900069817C81F801E60FF71FE491F0E08091F3 | |
:102CA000B8068F774E175F0714F090E001C090E8E8 | |
:102CB000892B8093B806C7010396E417F50709F03E | |
:102CC00042C0F801E20FF31F249127FF5FC2E49096 | |
:102CD000F12CFA945EC2C50169837C830E944E0A7E | |
:102CE000482F50E097012E5F3F4F69817C81F801AA | |
:102CF000E60FF71FE491F0E08091B8068F774E174A | |
:102D00005F0714F090E001C090E8892B8093B8062B | |
:102D1000C7010396E417F507B1F0F801E20FF31FBE | |
:102D200067C2C5010E94CE0A01977C01FF246E2D67 | |
:102D3000C5010E943B0A8091BA079091BB07EF281A | |
:102D400009F0DDC101969093BB078093BA079FC23B | |
:102D5000C5010E94CE0A61E004C0C5010E94CE0AEE | |
:102D60006FEF680FC50190C2C5010E944E0AB82ED0 | |
:102D7000E82EF12CA090B7062A2C312C682F6A0D72 | |
:102D800080E091E00E94D7088091B8068B73910192 | |
:102D90002E0D3F1D2F3F310509F014F450E001C006 | |
:102DA00050E8582B4A2D4F708B2D8F7090E0840F78 | |
:102DB000911D409714F480E001C080E4852B20949D | |
:102DC00030942E243F24E0E82E223324E226F326FA | |
:102DD000E220F320EF2811F490E0ACC094E0AAC008 | |
:102DE000C5010E944E0AA82EE82EF12CB090B7061D | |
:102DF0002B2D30E03B832A832091B806322E331CE2 | |
:102E00003324331C632D6B0D680F80E091E00E942A | |
:102E1000D7086091B8066B73232D30E04A815B813F | |
:102E20004E0D5F1D420F531F4F3F510509F014F423 | |
:102E300080E001C080E8682B7B2D7F708A2D8F7029 | |
:102E400090E0870F911D280F391F2031310514F4B0 | |
:102E500080E001C080E4682B8A819B8180959095F9 | |
:102E60008E259F2580789927E426F5268E219F219F | |
:102E7000892B11F480E001C084E0682B6093B806D0 | |
:102E800008C2C5010E944E0AF82EE090B7066E2DCA | |
:102E9000681B80E091E00E94D7088091B8068B7390 | |
:102EA0002E2D30E02F19310937FD02C040E001C05E | |
:102EB00040E8482B2E2D2F7030E08F2D8F70B901F8 | |
:102EC000681B7109CB012EC0C5010E944E0AE82E75 | |
:102ED000B090B7066091B806F62EFF1CFF24FF1CC9 | |
:102EE0006B2D681B6F1980E091E00E94D7088091DC | |
:102EF000B8068B736F2D70E02B2D30E02E19310941 | |
:102F0000261B370B37FD02C040E001C040E8482BCC | |
:102F10002B2D2F7030E08E2D8F70281B3109261B32 | |
:102F2000370B932F991F9927991F9295990F990FF6 | |
:102F3000907C842F892B8093B806ABC1C5010E9479 | |
:102F40004E0AF82E6091B706C5010E943B0A6F2D0C | |
:102F500017C0F090B706C5010E944E0A682F6F296E | |
:102F60000FC0F090B706C5010E944E0A682F6F216E | |
:102F700007C0F090B706C5010E944E0A682F6F2562 | |
:102F800080E091E00E94D70884C1822F807E803645 | |
:102F900009F4CDC088F5803209F45EC0803409F4AC | |
:102FA00079C0811176C1C70102969093BB078093C7 | |
:102FB000BA07F801E60FF71FE491922F9071A92E3E | |
:102FC000B12CB694BA2CAA24B794A7942770B22A2D | |
:102FD000AE2A0E94C10A8091BB070E94C10A80915B | |
:102FE000BA079091BB078827907FA82AB92AB09288 | |
:102FF000BB07A092BA074BC1803A09F400C120F484 | |
:10300000803809F4CDC045C1803C09F41AC1803E26 | |
:1030100009F03FC132E0E30EF11CF092BB07E092F1 | |
:10302000BA07F801E60FF71FE491822F807190E054 | |
:1030300074E0880F991F7A95E1F77C01EE2AC701A9 | |
:103040002D830E94CE0A2D812770B60101C0660F24 | |
:103050002A95EAF7682B17C1F801E60FF71FE491EC | |
:10306000422F407150E05695542F4427579547956D | |
:103070002770CA01922B9C012E2B92E0E90EF11CC5 | |
:10308000EE24A0EFFA222E293F293093BB0720938C | |
:10309000BA07FDC0C70102969093BB078093BA0799 | |
:1030A000F801E60FF71FE491822F807190E044E071 | |
:1030B000880F991F4A95E1F75C01AE2AC5012D835F | |
:1030C0000E944E0A2D812770482F50E0022E02C028 | |
:1030D000559547950A94E2F740FF25C0F60102C0D6 | |
:1030E000EE0FFF1F2A95E2F79F012095682F6223BC | |
:1030F000C5010E943B0A8091BA079091BB07F80175 | |
:10310000E80FF91F249127FF04C0E491F0E0FA953D | |
:1031100002C0E491F0E00196E80FF91FF093BB07BD | |
:10312000E093BA07B4C0F3E0EF0EF11C34C05701CE | |
:1031300032E0A30EB11CB092BB07A092BA07F8010F | |
:10314000E60FF71FE491822F807190E034E0880F42 | |
:10315000991F3A95E1F78E2B2D830E944E0A90E03D | |
:103160002D812770AC0102C0559547952A95E2F74D | |
:10317000C701039640FFE7CDF801EA0DFB1D24913E | |
:1031800027FF04C0E490F12CFA9403C0E491EE2EE2 | |
:10319000F12CE80EF91EF092BB07E092BA0777C057 | |
:1031A000570182E0A80EB11CB092BB07A092BA07EB | |
:1031B000F801E60FF71FE491822F807190E0B4E0F0 | |
:1031C000880F991FBA95E1F78E2B2D830E944E0A26 | |
:1031D00090E02D812770DC0102C0B595A7952A9556 | |
:1031E000E2F7C7010396A0FDAECDF801EA0DFB1D85 | |
:1031F000249127FFCBCFE490F12CFA94CACFE2E0E0 | |
:10320000EE0EF11CF092BB07E092BA07F801E60F50 | |
:10321000F71FE491822F807190E0A4E0880F991F3E | |
:10322000AA95E1F77C01EE2AC7012D830E94CE0A00 | |
:103230002D812770B60101C0660F2A95EAF768272D | |
:1032400022C0F2E0EF0EF11CF092BB07E092BA0749 | |
:10325000F801E60FF71FE491822F807190E0F4E00F | |
:10326000880F991FFA95E1F77C01EE2AC7012D839B | |
:103270000E94CE0A2D812770B60101C0660F2A95E3 | |
:10328000EAF760956823C7010E943B0A02C082E00A | |
:1032900001C081E0482F50E05B834A83E090C30780 | |
:1032A000F090C407E40EF51EF092C407E092C30745 | |
:1032B000A090B807B090B907EA14FB0408F4CDC099 | |
:1032C0008091B70781110E94AE074FB12CB193B125 | |
:1032D00030E0209530952074332753E035952795BD | |
:1032E0005A95E1F7892F90E0809590958071992704 | |
:1032F0009595879595958795822B4095407F382E9B | |
:10330000342A8091BE0737FE0AC080FD11C081605B | |
:103310008093BE0780E090E00E94F00A09C080FF21 | |
:1033200007C08E7F8093BE0780E090E00E94DD0A98 | |
:103330008091BE0734FE0AC081FD11C08260809377 | |
:10334000BE0781E090E00E94F00A09C081FF07C03B | |
:103350008D7F8093BE0781E090E00E94DD0A80911E | |
:10336000BE0735FE0AC082FD11C084608093BE078F | |
:1033700082E090E00E94F00A09C082FF07C08B7FC4 | |
:103380008093BE0782E090E00E94DD0A8091BE0734 | |
:1033900036FE0AC083FD11C088608093BE0783E0BB | |
:1033A00090E00E94F00A09C083FF07C0877F8093E6 | |
:1033B000BE0783E090E00E94DD0A8091BE0733FEE5 | |
:1033C0000AC084FD11C080618093BE0784E090E054 | |
:1033D0000E94F00A09C084FF07C08F7E8093BE0759 | |
:1033E00084E090E00E94DD0A8091BE0732FE0AC0B0 | |
:1033F00085FD11C080628093BE0785E090E00E9449 | |
:10340000F00A09C085FF07C08F7D8093BE0785E065 | |
:1034100090E00E94DD0AEA18FB08F092C407E092EF | |
:10342000C3078091C1079091C2079C012F5F3F4F56 | |
:103430003093C2072093C1072233310570F02091E9 | |
:10344000BF073091C00728603093C0072093BF07A3 | |
:10345000C1979093C2078093C107E091C7068E2F52 | |
:10346000807CA1F18091B5069091B6066A817B813E | |
:10347000860F971F9093B6068093B5062091B306EA | |
:103480003091B4068217930708F140E050E04F5F97 | |
:103490005F4F821B930B82179307C8F79093B60672 | |
:1034A0008093B5068E2F807E803E09F096C2809173 | |
:1034B000B1069091B206480F591F4F3F510511F0C8 | |
:1034C00008F040C25093B2064093B1066091CF0617 | |
:1034D000862F807C09F4CDC0862F807E803E09F047 | |
:1034E0005CC08091AD069091AE062A813B81820F2F | |
:1034F000931F8F3F910509F028F49093AE068093B7 | |
:10350000AD06B7C0AC015A955093AE064093AD06D8 | |
:103510008091AB069091AC069C012F5F3F4F2F3FEF | |
:10352000310509F028F43093AC062093AB06A1C016 | |
:103530008F5F91099093AC068093AB062091D206E1 | |
:1035400030E0420F531F4F3F510509F028F45093CC | |
:10355000AE064093AD061AC05A955093AE064093FE | |
:10356000AD064091D40650E0840F951F9093AC06B1 | |
:103570008093AB068F3F910549F040F03093AE0643 | |
:103580002093AD065093AC064093AB06862F8A601D | |
:103590008093CF0662FF6DC063C066FF33C0809129 | |
:1035A000AD069091AE064A815B81840F951F909382 | |
:1035B000AE068093AD068F3F910521F118F1209161 | |
:1035C000D20630E0A9015A95840F951F8F3F9105CF | |
:1035D00009F028F49093AE068093AD0604C03093B2 | |
:1035E000AE062093AD06862F82608093CF0660FFE3 | |
:1035F00009C08091BF079091C00780629093C00777 | |
:103600008093BF074091CF0647FF33C08091AB0640 | |
:103610009091AC066A817B81680F791F7093AC062C | |
:103620006093AB066F3F710521F118F18091D406CC | |
:1036300090E09C013A95260F371F2F3F310509F086 | |
:1036400028F43093AC062093AB0604C09093AC06EC | |
:103650008093AB06842F88608093CF0642FF09C019 | |
:103660008091BF079091C00780629093C0078093BC | |
:10367000BF078091C40680FD0EC18091BA0790916A | |
:10368000BB07803151E0950739F124F48115914051 | |
:1036900059F0F3C08032A1E09A0709F445C08033A5 | |
:1036A000914009F461C0E9C08091290690E0982F0B | |
:1036B000882720912A06822B81309C402CF460E0E0 | |
:1036C00080E091E00E94D7086FEF80E091E00E94D7 | |
:1036D000D70885E091E0D3C08091290690E0982F2B | |
:1036E000882720912A06822B20E030E0AC01442775 | |
:1036F000B901680F791FFA01E62BE00FF11F649101 | |
:10370000D901A55DB94F7C91672739F42F5F3F4FF1 | |
:103710002038310569F760E070E080E091E00E94B8 | |
:10372000D70885E191E0ABC08091290690E0982F01 | |
:10373000882720912A06822B20E030E0AC01442724 | |
:10374000B901680F791FFA01E62BE00FF11FE49130 | |
:10375000D901A55DB94FEC932F5F3F4F203831055C | |
:1037600079F785E291E08BC09091C90481E08927C7 | |
:103770008093C90480FD7EC08091C8048F5F8C3324 | |
:1037800018F48093C80476C01092C8048091C704CE | |
:103790008F5F8C3318F48093C7046CC01092C704F9 | |
:1037A0008091C6048F5F883118F48093C60462C08C | |
:1037B0001092C604E091C504EF5FE093C504409108 | |
:1037C000C404423051F52091C20430E0322F222748 | |
:1037D0008091C304282BC90183709927892B49F54F | |
:1037E000C90160EA7FE00E946C1D892B01F1C901CB | |
:1037F00068EE73E00E946C1D892BD9F0C90160E965 | |
:1038000071E00E946C1D892B91F0C90164E670E0A3 | |
:103810000E946C1D892B69F00AC0842F817048308A | |
:1038200018F0811108C009C0811107C004C08DE1E2 | |
:1038300005C08CE103C08EE101C08FE18E17D0F48A | |
:1038400091E09093C50481E0840F8093C4048D308F | |
:1038500088F09093C4048091C3048F3F41F4109288 | |
:10386000C3048091C2048F5F8093C20403C08F5F42 | |
:103870008093C30489E391E002C080E090E09093DC | |
:10388000BB078093BA07892B09F452C08091C40604 | |
:1038900081608093C406809105078370833079F43A | |
:1038A0008091C5079091C607892B49F48091BF0785 | |
:1038B0009091C00792609093C0078093BF0780915A | |
:1038C000BF079091C007009799F12091C5073091EB | |
:1038D000C607232B69F52091BF0627FF29C020E0EA | |
:1038E00030E0A601022E02C0440F551F0A94E2F7F1 | |
:1038F00048235923452BE1F42F5F3F4F2A303105F0 | |
:1039000081F79B7F9093C0078093BF078091BA0790 | |
:103910000E94C10A8091BB070E94C10A7092C6072B | |
:103920006092C50703E510E01093BB070093BA0748 | |
:1039300080E090E0892B11F40C94A6110E94000005 | |
:103940000C94A611CA019A959093B2068093B10681 | |
:103950002091AF063091B006A9014F5F5F4F4F3FF6 | |
:10396000510509F028F45093B0064093AF06AECD50 | |
:103970002F5F31093093B0062093AF066091CA06DD | |
:1039800070E0860F971F8F3F910509F028F4909300 | |
:10399000B2068093B1061AC09A959093B2068093AE | |
:1039A000B1068091CC0690E0280F391F3093B00605 | |
:1039B0002093AF062F3F310549F040F07093B206D7 | |
:1039C0006093B1069093B0068093AF068E2F8A6005 | |
:1039D0008093C706E2FF7ACD60C0E6FF31C0209138 | |
:1039E000B1063091B206240F351F3093B2062093F2 | |
:1039F000B1062F3F310521F118F18091CA0690E000 | |
:103A0000BC017A95260F371F2F3F310509F028F4A6 | |
:103A10003093B2062093B10604C09093B20680930F | |
:103A2000B1068E2F82608093C706E0FF09C08091A7 | |
:103A3000BF079091C00784609093C0078093BF0731 | |
:103A40006091C70667FF42CD8091AF069091B006A6 | |
:103A5000480F591F5093B0064093AF064F3F510592 | |
:103A600009F008F433CD2091CC0630E0C9019A95D5 | |
:103A7000480F591F4F3F510509F028F45093B006E5 | |
:103A80004093AF0604C03093B0062093AF06862F54 | |
:103A900088608093C70662FF19CD8091BF0790911F | |
:103AA000C00780619093C0078093BF070FCDE8EDFA | |
:103AB000F7E01382128288EE93E0A0E0B0E0848306 | |
:103AC0009583A683B78387E191E0918380838FEF0D | |
:103AD0009FEF958784870895AA1BBB1B51E107C000 | |
:103AE000AA1FBB1FA617B70710F0A61BB70B881F8E | |
:103AF000991F5A95A9F780959095BC01CD0108951D | |
:103B000097FB072E16F4009407D077FD09D00E948A | |
:103B10006C1D07FC05D03EF4909581959F4F08954C | |
:103B2000709561957F4F0895A1E21A2EAA1BBB1BC9 | |
:103B3000FD010DC0AA1FBB1FEE1FFF1FA217B30779 | |
:103B4000E407F50720F0A21BB30BE40BF50B661F8F | |
:103B5000771F881F991F1A9469F760957095809553 | |
:103B600090959B01AC01BD01CF010895EE0FFF1FA1 | |
:103B70000590F491E02D099481E090E0F8940C9484 | |
:063B8000C11DF894FFCF07 | |
:103B8600FFFFFFFF00E100000000000000C1808190 | |
:103B9600000000000000007E0B050C9F0B940BE557 | |
:063BA6000BA30BC10B0094 | |
: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
// Snake - game by Stu | |
// SoftVMS - emulator by Marcus Comstedt | |
// Port to Arduboy - Felipe Manga | |
#include <avr/sleep.h> | |
#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, sleepCount = 0; | |
void run_cpu() | |
{ | |
if( sleepCount-- <= 0 ){ | |
set_sleep_mode(SLEEP_MODE_IDLE); | |
sleep_mode(); | |
sleepCount = 6; | |
} | |
// 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(0xFF); | |
} | |
// 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){} | |
// 0x00: Black background, white pixels (inverted). | |
// 0xFF: White BG, black pixels (like the original) | |
const uint8_t TOG = 0xFF; | |
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, 0x6e, 0x61, 0x6b, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
/*[210]*/ 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x53, 0x2e, 0x6c, 0x6f, | |
/*[220]*/ 0x63, 0x6f, 0x63, 0x6b, 0x40, 0x62, 0x74, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, | |
/*[230]*/ 0x63, 0x6f, 0x6d, 0x20, 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]*/ 0x0, 0xf0, 0x0, 0xff, 0xf0, 0xf0, 0xf, 0xf0, 0xf0, 0xff, 0xff, 0xfa, 0x1f, 0xff, 0xff, 0xff, | |
/*[270]*/ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
/*[280]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[290]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[2a0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[2b0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[2c0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[2d0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[2e0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[2f0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[300]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[310]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[320]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[330]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[340]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[350]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[360]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[370]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[380]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[390]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[3a0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[3b0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[3c0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[3d0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[3e0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[3f0]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[400]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[410]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[420]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[430]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[440]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[450]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[460]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[470]*/ 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
/*[480]*/ 0x23, 0xe, 0xa1, 0x23, 0x20, 0x9, 0x23, 0x27, 0x80, 0xd8, 0x4e, 0xdf, 0x44, 0x23, 0x4c, 0xff, | |
/*[490]*/ 0xd9, 0x1, 0x2, 0x1c, 0xf2, 0x1d, 0xf9, 0x1, 0x12, 0xc4, 0x23, 0x4, 0x71, 0x23, 0x5, 0xa, | |
/*[4a0]*/ 0x18, 0xb4, 0xd, 0x67, 0x18, 0x80, 0x22, 0x30, 0x5, 0x22, 0x81, 0x1e, 0x22, 0xc0, 0x5, 0x22, | |
/*[4b0]*/ 0xc1, 0x4, 0x22, 0xc2, 0x5, 0x22, 0xc3, 0xc8, 0x22, 0x30, 0x0, 0x23, 0x2, 0x18, 0xe, 0x8b, | |
/*[4c0]*/ 0x23, 0x2, 0xf, 0xe, 0x9d, 0x23, 0x2, 0x17, 0x22, 0x30, 0x1, 0xe, 0x8b, 0x23, 0x2, 0xf, | |
/*[4d0]*/ 0xe, 0x9d, 0x23, 0x2, 0x16, 0x22, 0x30, 0x2, 0xe, 0x8b, 0x23, 0x2, 0xf, 0xe, 0x9d, 0x23, | |
/*[4e0]*/ 0x2, 0x15, 0x22, 0x30, 0x3, 0xe, 0x8b, 0x23, 0x2, 0xf, 0xe, 0x9d, 0x23, 0x2, 0x14, 0x22, | |
/*[4f0]*/ 0x30, 0x4, 0xe, 0x8b, 0x23, 0x2, 0xf, 0xe, 0x9d, 0x22, 0xce, 0x4, 0x22, 0xcf, 0x0, 0xd, | |
/*[500]*/ 0xe4, 0xd, 0x80, 0xe, 0x9, 0xe, 0x12, 0x2, 0xce, 0x12, 0x30, 0xe, 0x95, 0x12, 0xc8, 0x2, | |
/*[510]*/ 0xce, 0x12, 0x30, 0xe, 0xa7, 0x12, 0xc9, 0x62, 0xce, 0x2, 0xce, 0x41, 0x32, 0x3, 0x22, 0xce, | |
/*[520]*/ 0x0, 0x2, 0xc9, 0x13, 0x2, 0x2, 0xce, 0x12, 0x30, 0xe, 0x9d, 0x2, 0xc8, 0x13, 0x2, 0x2, | |
/*[530]*/ 0xce, 0x12, 0x30, 0xe, 0x8b, 0xe, 0x21, 0x2, 0xce, 0x12, 0x30, 0xe, 0x95, 0x13, 0x2, 0x12, | |
/*[540]*/ 0xc8, 0x2, 0xce, 0x12, 0x30, 0xe, 0xa7, 0x12, 0xc9, 0xe, 0xd9, 0x62, 0xcf, 0x2, 0xcf, 0x41, | |
/*[550]*/ 0x32, 0x3, 0x22, 0xcf, 0x0, 0x2, 0xcf, 0x12, 0x30, 0xe, 0x95, 0x13, 0x2, 0x2, 0xcf, 0x12, | |
/*[560]*/ 0x30, 0xe, 0xa7, 0xf, 0x2a, 0x2d, 0x3, 0x1b, 0x31, 0x7c, 0x0, 0xfb, 0xa0, 0x1b, 0x31, 0x7d, | |
/*[570]*/ 0x0, 0xfb, 0xa0, 0xa0, 0x23, 0x4, 0xb1, 0x23, 0x5, 0x9, 0x18, 0xb4, 0xd, 0x67, 0x2c, 0x80, | |
/*[580]*/ 0x22, 0xc7, 0x1f, 0x2, 0xc7, 0x23, 0x2, 0x0, 0xe, 0xaf, 0x23, 0x2, 0x2f, 0x2, 0xc7, 0xe, | |
/*[590]*/ 0xaf, 0x72, 0xc7, 0x2, 0xc7, 0x90, 0xec, 0x22, 0xc7, 0x2f, 0x2, 0xc7, 0x13, 0x2, 0x23, 0x0, | |
/*[5a0]*/ 0x1, 0xe, 0xaf, 0x2, 0xc7, 0x13, 0x2, 0x23, 0x0, 0x1f, 0xe, 0xaf, 0x72, 0xc7, 0x2, 0xc7, | |
/*[5b0]*/ 0x90, 0xe8, 0xa0, 0x3, 0x2, 0x32, 0xc5, 0x1, 0xa0, 0x2, 0xc9, 0x32, 0xc6, 0x1, 0xa0, 0x72, | |
/*[5c0]*/ 0xcf, 0xd, 0xe4, 0xa0, 0x61, 0x2, 0x61, 0x3, 0x2, 0xc4, 0x13, 0x2, 0x23, 0x0, 0x4e, 0x23, | |
/*[5d0]*/ 0x3, 0x6d, 0x30, 0x13, 0x2, 0x3, 0x3, 0x81, 0x39, 0x12, 0xc4, 0x3, 0x2, 0x91, 0x30, 0x71, | |
/*[5e0]*/ 0x3, 0x71, 0x2, 0xa0, 0xd, 0xc4, 0x13, 0x3, 0x23, 0x0, 0x0, 0x23, 0x2, 0x1c, 0x40, 0x3, | |
/*[5f0]*/ 0x2, 0x63, 0x0, 0x63, 0x0, 0x12, 0xc6, 0xd, 0xc4, 0x13, 0x3, 0x23, 0x0, 0x0, 0x23, 0x2, | |
/*[600]*/ 0x2d, 0x40, 0x3, 0x2, 0x63, 0x0, 0x12, 0xc5, 0xa0, 0x2, 0xc5, 0x13, 0x2, 0x2, 0xc6, 0xe, | |
/*[610]*/ 0xaf, 0xa0, 0x1b, 0x31, 0x9a, 0x0, 0x1a, 0x99, 0x0, 0x29, 0x9b, 0x0, 0x1d, 0x98, 0x0, 0x2c, | |
/*[620]*/ 0xa0, 0x2, 0xc1, 0x31, 0x1, 0x3c, 0x31, 0x2, 0x53, 0x31, 0x3, 0x29, 0x31, 0x4, 0x40, 0xa0, | |
/*[630]*/ 0xa0, 0x2, 0xc1, 0x31, 0x4, 0x3, 0x22, 0xc1, 0x3, 0xa0, 0x2, 0xc1, 0x31, 0x3, 0x3, 0x22, | |
/*[640]*/ 0xc1, 0x4, 0xa0, 0x2, 0xc1, 0x31, 0x1, 0x3, 0x22, 0xc1, 0x2, 0xa0, 0x2, 0xc1, 0x31, 0x2, | |
/*[650]*/ 0x3, 0x22, 0xc1, 0x1, 0xa0, 0x2, 0xc8, 0x73, 0x0, 0x13, 0x2, 0x2, 0xce, 0x12, 0x30, 0xe, | |
/*[660]*/ 0x8b, 0xa0, 0x2, 0xc9, 0x73, 0x0, 0x13, 0x2, 0x2, 0xce, 0x12, 0x30, 0xe, 0x9d, 0xa0, 0x2, | |
/*[670]*/ 0xc8, 0x63, 0x0, 0x13, 0x2, 0x2, 0xce, 0x12, 0x30, 0xe, 0x8b, 0xa0, 0x2, 0xc9, 0x63, 0x0, | |
/*[680]*/ 0x13, 0x2, 0x2, 0xce, 0x12, 0x30, 0xe, 0x9d, 0xa0, 0x2d, 0x74, 0x2, 0x30, 0x81, 0x31, 0x12, | |
/*[690]*/ 0x0, 0x3, 0x2, 0x14, 0xa0, 0x2, 0x30, 0x81, 0x31, 0x12, 0x0, 0x4, 0xa0, 0x2, 0x30, 0x81, | |
/*[6a0]*/ 0x81, 0x12, 0x0, 0x3, 0x2, 0x14, 0xa0, 0x2, 0x30, 0x81, 0x81, 0x12, 0x0, 0x4, 0xa0, 0x23, | |
/*[6b0]*/ 0x25, 0x0, 0x9c, 0x0, 0x3, 0x23, 0x25, 0x1, 0x23, 0x4, 0x0, 0x23, 0x5, 0x8, 0xc1, 0x12, | |
/*[6c0]*/ 0x3, 0x3, 0x2, 0xc0, 0xc0, 0xc0, 0xe1, 0x1f, 0x82, 0x3, 0x12, 0x3, 0x23, 0x4, 0x20, 0x3, | |
/*[6d0]*/ 0x2, 0xc1, 0xdd, 0xe, 0xd7, 0x17, 0xfd, 0xe, 0xa0, 0x23, 0x25, 0x0, 0x9c, 0x0, 0x3, 0x23, | |
/*[6e0]*/ 0x25, 0x1, 0x23, 0x4, 0x0, 0x23, 0x5, 0x8, 0xc1, 0x12, 0x3, 0x3, 0x2, 0xc0, 0xc0, 0xc0, | |
/*[6f0]*/ 0xe1, 0x1f, 0x82, 0x3, 0x12, 0x3, 0x23, 0x4, 0x20, 0x3, 0x2, 0xc1, 0xdd, 0xe, 0x61, 0x0, | |
/*[700]*/ 0x7, 0x13, 0x2, 0x71, 0x0, 0xd7, 0x17, 0x7, 0x33, 0x2, 0x4, 0xfd, 0xe, 0x7, 0xa0, 0x2, | |
/*[710]*/ 0xc5, 0x32, 0xc8, 0x2, 0xd, 0x74, 0x2, 0xc6, 0x32, 0xc9, 0x2, 0xd, 0x74, 0xd, 0xe4, 0x72, | |
/*[720]*/ 0xcf, 0x2, 0xcf, 0x41, 0xff, 0x3, 0x22, 0xcf, 0x31, 0xa0, 0x23, 0x25, 0x0, 0x9c, 0x0, 0x3, | |
/*[730]*/ 0x23, 0x25, 0x1, 0x23, 0x4, 0x0, 0x23, 0x5, 0x8, 0xc1, 0x12, 0x3, 0x3, 0x2, 0xc0, 0xc0, | |
/*[740]*/ 0xc0, 0xe1, 0x1f, 0x82, 0x3, 0x12, 0x3, 0x23, 0x4, 0x50, 0x23, 0x5, 0x8, 0x3, 0x2, 0xc1, | |
/*[750]*/ 0xdd, 0xe, 0xe7, 0x17, 0xfd, 0xe, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[760]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[770]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[780]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[790]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[7a0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[7b0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[7c0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[7d0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[7e0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[7f0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[800]*/ 0x80, 0x86, 0x90, 0x96, 0xa0, 0xa6, 0xb0, 0xb6, 0xc0, 0xc6, 0xd0, 0xd6, 0xe0, 0xe6, 0xf0, 0xf6, | |
/*[810]*/ 0x80, 0x86, 0x90, 0x96, 0xa0, 0xa6, 0xb0, 0xb6, 0xc0, 0xc6, 0xd0, 0xd6, 0xe0, 0xe6, 0xf0, 0xf6, | |
/*[820]*/ 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, | |
/*[830]*/ 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, | |
/*[840]*/ 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, | |
/*[850]*/ 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe, 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe, | |
/*[860]*/ 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe, 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe, | |
/*[870]*/ 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe, 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe, | |
/*[880]*/ 0xdd, 0xe, 0x61, 0x0, 0x61, 0x25, 0x60, 0x2, 0x23, 0x25, 0x0, 0x22, 0x2, 0x80, 0x26, 0x0, | |
/*[890]*/ 0x62, 0x2, 0x2, 0x2, 0xe1, 0xf, 0x41, 0xc, 0x6, 0x2, 0x2, 0x81, 0x4, 0x12, 0x2, 0x2, | |
/*[8a0]*/ 0x2, 0x90, 0xeb, 0x78, 0x25, 0x5, 0x23, 0x25, 0x1, 0x1, 0xe0, 0x70, 0x2, 0x71, 0x25, 0x71, | |
/*[8b0]*/ 0x0, 0xfd, 0xe, 0xa0, 0xdd, 0xe, 0x61, 0x0, 0x61, 0x25, 0x61, 0x3, 0x60, 0x2, 0x22, 0x2, | |
/*[8c0]*/ 0x80, 0xf3, 0x0, 0x13, 0x25, 0x13, 0x3, 0xc1, 0x16, 0x62, 0x2, 0x2, 0x2, 0xe1, 0xf, 0x41, | |
/*[8d0]*/ 0xc, 0xd, 0x2, 0x2, 0x81, 0x4, 0x12, 0x2, 0x90, 0x5, 0x63, 0x25, 0x22, 0x2, 0x80, 0x63, | |
/*[8e0]*/ 0x3, 0x3, 0x3, 0x41, 0xc0, 0xe1, 0x70, 0x2, 0x71, 0x3, 0x71, 0x25, 0x71, 0x0, 0xfd, 0xe, | |
/*[8f0]*/ 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[900]*/ 0x0, 0x0, 0x0, 0x1e, 0x7c, 0x42, 0x0, 0x0, 0x0, 0x10, 0x10, 0x42, 0x0, 0x0, 0x0, 0x1e, | |
/*[910]*/ 0x10, 0x42, 0x0, 0x0, 0x0, 0x2, 0x10, 0x42, 0x0, 0x0, 0x0, 0x1e, 0x10, 0x7e, 0x0, 0x0, | |
/*[920]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[930]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[940]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[950]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[960]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[970]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[980]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[990]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[9a0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[9b0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[9c0]*/ 0x0, 0x0, 0x0, 0x1, 0xf8, 0x30, 0xc6, 0x7c, 0x0, 0x1, 0x8, 0x48, 0xaa, 0x40, 0x0, 0x1, | |
/*[9d0]*/ 0x0, 0x84, 0x92, 0x40, 0x0, 0x1, 0x0, 0x84, 0x82, 0x70, 0x0, 0x1, 0x1c, 0xfc, 0x82, 0x40, | |
/*[9e0]*/ 0x0, 0x1, 0x8, 0x84, 0x82, 0x40, 0x0, 0x1, 0xf8, 0x84, 0x82, 0x7c, 0x0, 0x0, 0x0, 0x0, | |
/*[9f0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, | |
/*[a00]*/ 0xf8, 0x84, 0xfc, 0x7e, 0x0, 0x1, 0x8, 0x84, 0x80, 0x42, 0x0, 0x1, 0x8, 0x84, 0x80, 0x42, | |
/*[a10]*/ 0x0, 0x1, 0x8, 0xcc, 0xe0, 0x7e, 0x0, 0x1, 0x8, 0x48, 0x80, 0x48, 0x0, 0x1, 0x8, 0x78, | |
/*[a20]*/ 0x80, 0x44, 0x0, 0x1, 0xf8, 0x30, 0xfc, 0x42, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[a30]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[a40]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[a50]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[a60]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[a70]*/ 0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x5, 0xc0, | |
/*[a80]*/ 0x0, 0x0, 0x0, 0x0, 0x6, 0x80, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x0, 0x0, | |
/*[a90]*/ 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc0, 0x84, 0x71, 0x37, | |
/*[aa0]*/ 0xc0, 0x0, 0x78, 0xc4, 0xd1, 0x64, 0x0, 0x0, 0xe, 0xe4, 0x99, 0xc4, 0x0, 0x0, 0x2, 0xb4, | |
/*[ab0]*/ 0x89, 0x47, 0x0, 0x0, 0x2, 0x9c, 0xf9, 0x64, 0x0, 0x0, 0x6, 0x8d, 0xd, 0x34, 0x0, 0x0, | |
/*[ac0]*/ 0xc, 0x85, 0x5, 0x17, 0xc0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x41, 0xff, 0xff, 0xff, | |
/*[ad0]*/ 0xc0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x8, 0x0, 0x0, 0x0, 0x80, 0x0, | |
/*[ae0]*/ 0xe, 0xa6, 0xea, 0x0, 0x0, 0x0, 0xa, 0x44, 0x4a, 0x0, 0x0, 0x0, 0xe, 0x42, 0x4a, 0x0, | |
/*[af0]*/ 0x0, 0x0, 0x0, 0x86, 0x4e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[b00]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xae, 0xed, 0x15, 0xd5, 0x59, 0xdc, 0xe4, 0x4c, 0x28, | |
/*[b10]*/ 0x95, 0xd8, 0x94, 0xa4, 0x49, 0x51, 0x9d, 0x52, 0x9c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[b20]*/ 0x0, 0xa, 0xa8, 0x0, 0x0, 0x0, 0x0, 0x12, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x21, 0x28, 0x0, | |
/*[b30]*/ 0x0, 0x78, 0x5c, 0x9, 0x3, 0x4c, 0x9e, 0x0, 0x4, 0x9f, 0x0, 0x3, 0xa0, 0x29, 0xf0, 0xf8, | |
/*[b40]*/ 0x7, 0x9f, 0x4c, 0xfb, 0x23, 0x27, 0x0, 0xf8, 0x7, 0x78, 0x5c, 0xf1, 0x7f, 0x4c, 0xf8, 0x23, | |
/*[b50]*/ 0x27, 0x80, 0xf8, 0x7, 0x9f, 0x4c, 0xfb, 0x1, 0xd8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[b60]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[b70]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[b80]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[b90]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[ba0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[bb0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[bc0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[bd0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[be0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[bf0]*/ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | |
/*[c00]*/ 0x0}; | |
const int gamesize = sizeof(flash); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment