Added first commit after corona

Signed-off-by: Tyrolyean <tyrolyean@tyrolyean.net>
This commit is contained in:
Tyrolyean 2020-03-15 22:14:50 +01:00
parent b280f3063f
commit d511e8645a
No known key found for this signature in database
GPG key ID: 81EC9BAC5E9667C6
16 changed files with 8764 additions and 255 deletions

Binary file not shown.

View file

@ -1,226 +1,286 @@
:100000000C940D030C943D030C943D030C943D03A0
:100010000C943D030C943D030C943D030C943D0360
:100020000C943D030C943D030C943D030C943D0350
:100030000C943D030C943D030C943D030C943D0340
:100040000C943D030C943D030C943D030C943D0330
:100050000C943D030C9417050C943D030C943D0344
:100060000C943D030C943D030C943D030C943D0310
:100070000C943D030C943D030C943D030C943D0300
:100080000C943D030C943D030C943D030C943D03F0
:100090000C943D030C943D030C943D030C943D03E0
:1000A0000C943D030C943D030C943D030C943D03D0
:1000B0000C943D030C943D030C943D030C943D03C0
:1000C0000C943D030C943D030C943D030C943D03B0
:1000D0000C943D030C943D030C943D030C943D03A0
:1000E0000C943D030C94660302F6FFF40102F7FF43
:1000F000F40102F8FFF40102F9FFF40102FAFFF43F
:100100000102FBFFF40102FEFFF40102FEFFF40115
:1001100002FEFFF4010000000000300C03DF31FAA2
:100120002B78D5D86C2945A1026969918D6571B884
:1001300043DEF2F6786E1DBF344ECB382EFD3259B9
:10014000750732E231778433E1EDC56E523627967A
:1001500015198D8D88AB4DBCF918F5271627818CA4
:100160002FB46E602BF2940CE0597B338FA3C9A49B
:10017000BD573245027F02FB98F723AE1EA53A4DCC
:1001800059A9AE849B42917C9B0CB02BB07ACF6D69
:10019000D102B2D381B4CE19ACF2C7CB970218F01A
:1001A000ABC774470906C4A51374D0C3EEA030BF13
:1001B000A2E2922497613D4453050FEA0728DAB37F
:1001C000EF4FFAF955BE9F68336F2B21105CE0B2F8
:1001D0003F73D6D7D4141B271A2A122153ECD542C9
:1001E0003CCF3C918EDBFAC24B26E35B82C40EC14E
:1001F00037E5980BFAB43314DE453631320B746EA2
:10020000DBB1006A8CFA2CD7210F33A3D342650AE5
:1002100027FE1621B24935918E6BC3C077382E5216
:10022000E92FBC7629E84D4BF781EFCBC354D5EBD2
:1002300053EC0D06354398C3AF5B842694B3787DA9
:10024000E235F30C1D415715C346E0879BB672EEAD
:10025000A37FF5D8C28D9C72E920987DD311FBB5A0
:1002600046EFC164311979F45F5A7BFA11EEE9B4B3
:100270006EDE8C316C29A355493BD31C4DCED293F5
:10028000BE94F7EFAD71E40DCC6008DD4EF192BC89
:10029000D01FED3C48909291CC65AE193481ADF2FF
:1002A00015A5E2C317C6D0E327D8C175CA53329B40
:1002B000721FD8BBB06A4D7DD0FB97047D45F79384
:1002C000EAD95601A027E4C700A53DCBF96F666CBB
:1002D0008F3F2740A974BE7A70557FEE9A7681854C
:1002E00050D787F1FF6BB9FF11F7CA0B673177F76A
:1002F000709F371A14F694854B1373E68AF46CDBFF
:10030000CBF3CCCB5F86CA717D957CE4C6F4DC363A
:10031000931350A70AE52D55F9A03C8394A95F607B
:100320009C2B2BFCB2F66D308BE91451DEF08871FA
:1003300004D8190EBE4664B7E6A13B7B4A9ADBE7B8
:10034000C607E378FD51A8883BBDDA19AE628AB3CF
:100350003AA4C2F9EB26B0D2C8EC4D138629FA4D67
:1003600030DEC62E2F6FB66A2D9083DBF20E8F2DF6
:10037000B351279E78D87140C4BE544BE84E9818AC
:100380002D5F465DCEFDC7FB8E4BD7815A66AF0E03
:10039000B7D6AC2FAE1D7072DCC4BDC41356DD40A1
:1003A000B6249D84216580B0B157310BBDE019752D
:1003B000B6C6A564E415D7C1DA9585EDEC632EA227
:1003C00087CC26A932A659E3FD8AEFBB6B09302101
:1003D000CFD586B4EB5D75C5F3FBB3DF5EE281E696
:1003E000AFA78FE14EE8C54C73B407DFBE38018E6E
:1003F0000D8742F8E5B8BED8B472B7125439F90483
:10040000E088E62F71AB7BE56083C41EBBC5ACC939
:100410004DEFC233A7800C5BF3C36E48FC674CDD25
:10042000F0320D61DD88473E0B0B5CC7D109901E91
:10043000F852529FD25EFBC622690E1FD15AFDC2EE
:100440008C0A236A926AA99E760565470EF56606B0
:1004500047B9A61A17A2E0390CEE59DD49569FD6C6
:1004600060C341F32EEA91A4F0F7ECFEEC5305349F
:100470000CAC4F244E2F5D5A1EB738670DD83E6D19
:100480009C7F61CA69F26F59E95C58D6B05E0BBCBB
:100490000A5AE0598A3EB4A8F5EC1003C54E7161C2
:1004A000CED22C37C49C91AEF8EA85A8489065520C
:1004B000EB46AC7584601E7A4D2F7D137DEE744C37
:1004C000C0A183853D153436FFBADF474B449A36C9
:1004D0008A47AC0FA7CA89F5F9070877F57DC3B637
:1004E0001F473C5C5C71935C2B72A376B73EAC41BA
:1004F0008558512D23DB221CE22B93D8A8578FC798
:100500009ECB24FB3CB757682AFBDEE1398B23BF27
:10051000E474EC074F0F24323AB87F8285888C8FC1
:100520009295989B9EA1A4A7AAADB0B3B6B9BBBE45
:10053000C1C3C6C9CBCED0D3D5D7D9DCDEE0E2E487
:10054000E6E8E9EBEDEEF0F1F2F4F5F6F7F8F9FA9A
:10055000FBFCFCFDFDFEFEFEFEFEFEFEFEFEFEFDC5
:10056000FDFCFCFBFAFAF9F8F7F6F4F3F2F0EFED24
:10057000ECEAE8E7E5E3E1DFDDDBD8D6D4D1CFCCA8
:10058000CAC7C5C2BFBDBAB7B4B1AFACA9A6A3A014
:100590009D9A9693908D8A8784817D7A7774716E07
:1005A0006B6864615E5B5855524F4D4A4744413F0A
:1005B0003C393734322F2D2A282623211F1D1B19A1
:1005C00017161412110F0E0C0B0A08070605040467
:1005D0000302020101000000000000000000000111
:1005E000010202030405060708090A0C0D0E10118A
:1005F000131516181A1C1E20222527292B2E3033DE
:1006000035383B3D404345484B4E5154575A5D6049
:100610006366696C6F7276797C7F11241FBECFEFA1
:10062000D1E2DEBFCDBF00E00CBF84B780930D04E4
:1006300014BE0FB6F894A8958091600088618093ED
:100640006000109260000FBE13E0A0E0B2E0ECE0AA
:10065000FCE000E00BBF02C007900D92AA3FB1077B
:10066000D9F724E0AAEFB3E001C01D92AD30B20784
:10067000E1F70E94BC050C9404060C940000CF9393
:10068000C62F0E943F058FEF80BBC1BBEBE0F1E0BE
:100690008081857F808385E08A95F1F700008081E5
:1006A0008A608083CF9108950E943F0510BA11BAE5
:1006B000EBE0F1E08081837F808385E08A95F1F72C
:1006C00000008FB190819C6090830895CF92DF925B
:1006D000EF92FF92CF93C82F80E4C82E82E4D82EE9
:1006E0008FE0E82EF12C85E00E94540385FD06C0C2
:1006F00081E0C81AD108E108F108A9F76C2F80E061
:100700000E943F0390E080E0CF91FF90EF90DF9058
:10071000CF90089563E883E00E943F0363E080E0A8
:100720000E943F0360E081E00E943F0363E083E0BA
:100730000E943F0380E092E090930A0480930904B2
:100740008CE592E00C94D805CF93C62F0E943F050C
:100750008FEF80BBC1BBEBE0F1E080818D7E8083B9
:1007600085E08A95F1F70000808180618083808137
:1007700082608083CF9108950E943F0510BA11BA1C
:10078000EBE0F1E080818B7E808385E08A95F1F754
:1007900000008FB190819461908308950F931F930F
:1007A000CF93DF9380910F02833009F4B3C0A8F494
:1007B000813009F444C0CFE7823009F476C0C0E04C
:1007C00060E08C2F81700E94A403CF5FCF3FC1F700
:1007D000DF91CF911F910F910895843009F4C8C023
:1007E0001FE7CFEFD0E00FEF853049F760910004AD
:1007F0008FEF860F8E3F28F080910E0281958093B7
:100800000E0280E00E94A4036091000481E00E9437
:10081000A4034091FA035091FB0357FDDFC0809180
:10082000FE039091FF030196841795070CF0CAC050
:100830009093FF038093FE031150C1F6C9CFCFE719
:10084000E0910004F0E0E65EFA4F649181E00E94DE
:10085000A403E0910004F0E0E65EFA4F649180E0CA
:100860000E94A4032091FA033091FB0337FD19C0C5
:100870008091FE039091FF030196821793073CF449
:100880009093FF038093FE03C150D1F6A1CF109245
:10089000FF031092FE03809100048F5F8093000499
:1008A000F3CF80910004821BF9CF8091000487FF71
:1008B0001DC06FEF80E00E94A4036FEF81E00E94F3
:1008C000A4032091FA033091FB0337FD1FC08091F0
:1008D000FE039091FF030196821793076CF49093A7
:1008E000FF038093FE03C15001F772CF60E080E008
:1008F0000E94A40360E0E2CF1092FF031092FE0377
:10090000809100048F5F80930004EDCF80910004FC
:10091000821BF9CFCFE76091000480E00E94A4031E
:100920006091000481E00E94A4032091FA033091B9
:10093000FB0337FD19C08091FE039091FF030196E0
:10094000821793073CF49093FF038093FE03C150FA
:1009500011F73ECF1092FF031092FE038091000426
:100960008F5F80930004F3CF80910004821BF9CF46
:10097000CFE7E091FC03F091FD03E65EFE4F64914A
:1009800081E00E94A403E091FC03F091FD03E65E88
:10099000FE4F649180E00E94A4038091FC0390913B
:1009A000FD030196811524E0920738F49093FD032E
:1009B0008093FC03C150E9F60BCF1092FD03109217
:1009C000FC03F8CF1092FF031092FE038091000405
:1009D00090910E02890F809300042ECF20910E0279
:1009E0002403B001259F700D112480910004FE01A5
:1009F000E81BF109E617F7071CF4009300041CCF6D
:100A0000249F202D11242093000416CF80E00E9403
:100A1000BC0380FF0C94CE03089582E884BD84E07B
:100A200085BD80E487BD82E080936E0008951F92AB
:100A30000F920FB60F9211240BB60F922F933F9384
:100A40004F935F936F937F938F939F93AF93BF93D6
:100A5000EF93FF930E946C05FF91EF91BF91AF91CF
:100A60009F918F917F916F915F914F913F912F91C6
:100A70000F900BBE0F900FBE0F901F901895809394
:100A8000080108958FEF80BB8093070180930A01CE
:100A90001092080111BAEBE0F1E0108280818F61C1
:100AA00080838FE891E00197F1F700C0000080811A
:100AB0008E7F8083089585E00E94540380FF07C0E5
:100AC00080E00E945403682F80E00E943F030E9450
:100AD000060590E080E00895609105047091060499
:100AE0006F5F7F4F7093060460930504E0910104EB
:100AF000F09102048081918140910304509104049B
:100B0000E5E0E49F9001E59F300D1124FC01E20F28
:100B1000F31F3396A591B4916A177B0738F54F5FA1
:100B20005F4FFC01E20FF31F389625913491232B80
:100B3000F1F0509304044093030420910304309196
:100B4000040445E0429FF001439FF00D11248E0FF5
:100B50009F1FFC012591349120930F020196FC0107
:100B6000859194919093FB038093FA0308951092DA
:100B7000040410920304E1CFF8940E9442050E94FD
:100B80008A030E940D0588EE90E090930204809302
:100B90000104789488E19EE00FB6F894A8958093BC
:100BA00060000FBE90936000A8950E945B05FCCF8B
:100BB0000F931F93CF93DF93E0910904F0910A0400
:100BC000238110E000E021FD0EC00FEF1FEFC801F0
:100BD000DF91CF911F910F9108951995892B11F0F5
:100BE0000FEF1FEFCE01EC01899160910904709124
:100BF0000A04DB011896ED91FC918111EECF8AE099
:0C0C00001995892B21F3E1CFF894FFCF68
:100C0C00000000020000000066030000000001016B
:100C1C0062026E027B027F02870294029D02A40292
:100C2C00B702C502CF02DA02E402F002F602FF02BA
:100C3C000D03130319031E03230329032D0333038D
:100C4C0046035A0374037B03810387038C039103CC
:100C5C00A203AA03B603CC03DB03EA03494E4954AF
:100C6C000D00464C4F505059204449534B005343B0
:100C7C0052455720445249564552004B4559005352
:100C8C0041555341474500524F5454454E20464C14
:100C9C00455348004B4559424F415244005049532B
:100CAC00544F4C004E4F5448494E474C4F4E454CB8
:100CBC005920524F414400532F4E20444952542046
:100CCC00524F41440046495245504C414345004E19
:100CDC002F5720537472656574004F4C4420484F55
:100CEC00555345004C4956494E4720524F4F4D00E5
:100CFC00415454494300424153454D454E540043E1
:100D0C004F4D505554455220524F4F4D006E6F72FF
:100D1C00746800736F75746800776573740065612F
:100D2C0073740073686F6F7400757365004552526D
:100D3C004F5200596F752063616E277420646F20C9
:100D4C00746861742100596F752063616E2774207B
:100D5C007573652074686174210057686174206133
:100D6C00726520796F7520676F696E6720746F20CC
:100D7C00646F3F00676F696E6720004E4F52544896
:100D8C0000534F5554480045415354005745535454
:100D9C0000594F55204D415920414354204E4F5737
:100DAC00210069742064696564006974207375722C
:100DBC0076697665640061206265617220626C6F91
:100DCC00636B732074686520776179006974207295
:100DDC00616E20617761792E2E2E00697420776FF9
:100DEC006E277420737461727400796F752063615F
:0A0DFC006E27742074797065000002
:100000000C9432040C9462040C9462040C94620408
:100010000C9462040C9462040C9462040C946204C8
:100020000C9462040C9462040C9462040C946204B8
:100030000C9462040C9462040C9462040C946204A8
:100040000C9462040C9462040C9462040C94620498
:100050000C9462040C9471060C9462040C94620477
:100060000C9462040C9462040C9462040C94620478
:100070000C9462040C9462040C9462040C94620468
:100080000C9462040C9462040C9462040C94620458
:100090000C9462040C9462040C9462040C94620448
:1000A0000C9462040C9462040C9462040C94620438
:1000B0000C9462040C9462040C9462040C94620428
:1000C0000C9462040C9462040C9462040C94620418
:1000D0000C9462040C9462040C9462040C94620408
:1000E0000C9462040C948B0402FDFFC80002FCFF18
:1000F000C80002FBFFC80002FDFFC80002FCFFC8E9
:100100000002FBFFC80002FDFFC80002FCFFC800A0
:1001100002FBFFC80002FDFFC80002FCFFC800028E
:10012000FBFFC80002FDFFC80002FCFFC80002FB85
:10013000FFC80002FDFFC80002FCFFC80002FBFF71
:10014000C80002FDFFC80002FCFFC80002FBFFC898
:100150000002FDFFC80002FCFFC80002FBFFC80050
:1001600002FDFFC80002FCFFC80002FBFFC800023E
:10017000FDFFC80002FCFFC80002FBFFC80002FD33
:10018000FFC80002FCFFC80002FBFFC80002FDFF21
:10019000C80002FCFFC80002FBFFC80002FDFF9080
:1001A0000102FCFF900102FBFF900102FDFF9001A4
:1001B00002FCFF900102FBFF900102FDFF20030201
:1001C000FCFF840302FBFFE803020000640004005C
:1001D000006400030000C800020000640004000086
:1001E0006400010000C80001000064000400006415
:1001F00000010000C80002000064000000000000D0
:100200000200006400020A006400020000640002B0
:100210000A0064000200006400040000C800010A33
:1002200000320001F6FF3200010A00320001F6FF41
:1002300032000200006400020A0064000200006450
:1002400000020A0064000200006400040000C8000C
:10025000010A00320001F6FF3200010A00320001FB
:10026000F6FF32000200006400020A00640002008F
:10027000006400020A006400020000640004000040
:10028000C800010A00320001F6FF3200010A003204
:100290000001F6FF32000200006400020A00640060
:1002A0000200006400020A0064000200006400040E
:1002B0000000C800010A00320001F6FF3200010A06
:1002C00000320001F6FF32000200006400020A0062
:1002D00064000200006400020A006400020000647E
:1002E00000040000C800010A00320001F6FF3200DD
:1002F000010A00320001F6FF320002FEFF64000234
:100300000800640002FEFF6400020800640002FEB0
:10031000FF6400040000C800010C00320001F8FF77
:100320003200010C00320001F8FF320002FDFF64D0
:1003300000020700640002FDFF6400020700640081
:1003400002FDFF6400040000C800010D003200013E
:10035000F9FF3200010D00320001F9FF3200000008
:10036000000000300C03DF31FA2B78D5D86C29451A
:10037000A1026969918D6571B843DEF2F6786E1D50
:10038000BF344ECB382EFD3259750732E2317784B7
:1003900033E1EDC56E5236279615198D8D88AB4D1C
:1003A000BCF918F5271627818C2FB46E602BF294B8
:1003B0000CE0597B338FA3C9A4BD573245027F029D
:1003C000FB98F723AE1EA53A4D59A9AE849B4291E6
:1003D0007C9B0CB02BB07ACF6DD102B2D381B4CE5E
:1003E00019ACF2C7CB970218F0ABC774470906C423
:1003F000A51374D0C3EEA030BFA2E2922497613D52
:100400004453050FEA0728DAB3EF4FFAF955BE9FB8
:1004100068336F2B21105CE0B23F73D6D7D4141B26
:10042000271A2A122153ECD5423CCF3C918EDBFA9D
:10043000C24B26E35B82C40EC137E5980BFAB43396
:1004400014DE453631320B746EDBB1006A8CFA2C47
:10045000D7210F33A3D342650A27FE1621B24935AF
:10046000918E6BC3C077382E52E92FBC7629E84DA8
:100470004BF781EFCBC354D5EB53EC0D06354398C6
:10048000C3AF5B842694B3787DE235F30C1D4157EE
:1004900015C346E0879BB672EEA37FF5D8C28D9C4C
:1004A00072E920987DD311FBB546EFC1643119790B
:1004B000F45F5A7BFA11EEE9B46EDE8C316C29A33D
:1004C00055493BD31C4DCED293BE94F7EFAD71E4AA
:1004D0000DCC6008DD4EF192BCD01FED3C489092EF
:1004E00091CC65AE193481ADF215A5E2C317C6D023
:1004F000E327D8C175CA53329B721FD8BBB06A4D6F
:100500007DD0FB97047D45F793EAD95601A027E4F7
:10051000C700A53DCBF96F666C8F3F2740A974BE1D
:100520007A70557FEE9A76818550D787F1FF6BB947
:10053000FF11F7CA0B673177F7709F371A14F694DB
:10054000854B1373E68AF46CDBCBF3CCCB5F86CAA6
:10055000717D957CE4C6F4DC36931350A70AE52D33
:1005600055F9A03C8394A95F609C2B2BFCB2F66DDF
:10057000308BE91451DEF0887104D8190EBE466440
:10058000B7E6A13B7B4A9ADBE7C607E378FD51A8B3
:10059000883BBDDA19AE628AB33AA4C2F9EB26B041
:1005A000D2C8EC4D138629FA4D30DEC62E2F6FB619
:1005B0006A2D9083DBF20E8F2DB351279E78D87170
:1005C00040C4BE544BE84E98182D5F465DCEFDC723
:1005D000FB8E4BD7815A66AF0EB7D6AC2FAE1D70CF
:1005E00072DCC4BDC41356DD40B6249D84216580F1
:1005F000B0B157310BBDE01975B6C6A564E415D787
:10060000C1DA9585EDEC632EA287CC26A932A659D6
:10061000E3FD8AEFBB6B093021CFD586B4EB5D7566
:10062000C5F3FBB3DF5EE281E6AFA78FE14EE8C51D
:100630004C73B407DFBE38018E0D8742F8E5B8BEB3
:10064000D8B472B7125439F904E088E62F71AB7B45
:10065000E56083C41EBBC5ACC94DEFC233A7800C97
:100660005BF3C36E48FC674CDDF0320D61DD8847FB
:100670003E0B0B5CC7D109901EF852529FD25EFB15
:10068000C622690E1FD15AFDC28C0A236A926AA93A
:100690009E760565470EF5660647B9A61A17A2E0CD
:1006A000390CEE59DD49569FD660C341F32EEA91CD
:1006B000A4F0F7ECFEEC5305340CAC4F244E2F5D48
:1006C0005A1EB738670DD83E6D9C7F61CA69F26FBC
:1006D00059E95C58D6B05E0BBC0A5AE0598A3EB460
:1006E000A8F5EC1003C54E7161CED22C37C49C9195
:1006F000AEF8EA85A848906552EB46AC7584601E5A
:100700007A4D2F7D137DEE744CC0A183853D153449
:1007100036FFBADF474B449A368A47AC0FA7CA89DF
:10072000F5F9070877F57DC3B61F473C5C5C71930C
:100730005C2B72A376B73EAC418558512D23DB224A
:100740001CE22B93D8A8578FC79ECB24FB3CB757EE
:10075000682AFBDEE1398B23BFE474EC074F0F24DA
:10076000323AB87F8285888C8F9295989B9EA1A4FF
:10077000A7AAADB0B3B6B9BBBEC1C3C6C9CBCED0B4
:10078000D3D5D7D9DCDEE0E2E4E6E8E9EBEDEEF044
:10079000F1F2F4F5F6F7F8F9FAFBFCFCFDFDFEFECC
:1007A000FEFEFEFEFEFEFEFEFDFDFCFCFBFAFAF97F
:1007B000F8F7F6F4F3F2F0EFEDECEAE8E7E5E3E161
:1007C000DFDDDBD8D6D4D1CFCCCAC7C5C2BFBDBA56
:1007D000B7B4B1AFACA9A6A3A09D9A9693908D8A09
:1007E0008784817D7A7774716E6B6864615E5B5813
:1007F00055524F4D4A4744413F3C393734322F2DF3
:100800002A282623211F1D1B1917161412110F0E3B
:100810000C0B0A080706050404030202010100008C
:1008200000000000000000000101020203040506B0
:100830000708090A0C0D0E1011131516181A1C1EA4
:1008400020222527292B2E303335383B3D40434588
:10085000484B4E5154575A5D606366696C6F7276AF
:10086000797C7F0011241FBECFEFD1E2DEBFCDBF68
:1008700000E00CBF84B78093390514BE0FB6F8941E
:10088000A89580916000886180936000109260005C
:100890000FBE14E0A0E0B2E0E8E0FFE000E00BBF34
:1008A00002C007900D92AA3BB107D9F725E0AAEB49
:1008B000B4E001C01D92A933B207E1F70E943107ED
:1008C0000C9482070C940000CF93C62F0E949906C7
:1008D0008FEF80BBC1BBEBE0F1E08081857F80833F
:1008E00085E08A95F1F7000080818A608083CF914E
:1008F00008950E94990610BA11BAEBE0F1E08081E8
:10090000837F808385E08A95F1F700008FB1908125
:100910009C6090830895CF92DF92EF92FF92CF93E5
:10092000C82F80E4C82E82E4D82E8FE0E82EF12C68
:1009300085E00E94790485FD06C081E0C81AD108CF
:10094000E108F108A9F76C2F80E00E94640490E0B0
:1009500080E0CF91FF90EF90DF90CF90089563E813
:1009600083E00E94640463E080E00E94640460E02D
:1009700081E00E94640463E083E00E94640480E0FC
:1009800092E090933605809335058EE692E00C94C4
:100990005607CF9385E00E94790480FF0BC080E06A
:1009A0000E947904C82F0E945C066C2F80E0CF91D2
:1009B0000C946404CF910895CF93C62F0E9499069A
:1009C0008FEF80BBC1BBEBE0F1E080818D7E808347
:1009D00085E08A95F1F700008081806180838081C5
:1009E00082608083CF9108950E94990610BA11BA4F
:1009F000EBE0F1E080818B7E808385E08A95F1F7E2
:100A000000008FB190819461908308950F931F939C
:100A1000CF93DF9380910F02833009F4B3C0A8F421
:100A2000813009F444C0CFE7823009F476C0C0E0D9
:100A300060E08C2F81700E94DC04CF5FCF3FC1F754
:100A4000DF91CF911F910F910895843009F4C8C0B0
:100A50001FE7CFEFD0E00FEF853049F76091C0047A
:100A60008FEF860F8E3F28F080910E028195809344
:100A70000E0280E00E94DC046091C00481E00E94CC
:100A8000DC044091BA045091BB0457FDDFC0809153
:100A9000BE049091BF040196841795070CF0CAC05C
:100AA0009093BF048093BE041150C1F6C9CFCFE725
:100AB000E091C004F0E0ED59F84F649181E00E94AC
:100AC000DC04E091C004F0E0ED59F84F649180E05F
:100AD0000E94DC042091BA043091BB0437FD19C098
:100AE0008091BE049091BF040196821793073CF455
:100AF0009093BF048093BE04C150D1F6A1CF109251
:100B0000BF041092BE048091C0048F5F8093C00424
:100B1000F3CF8091C004821BF9CF8091C00487FF7E
:100B20001DC06FEF80E00E94DC046FEF81E00E9447
:100B3000DC042091BA043091BB0437FD1FC08091C2
:100B4000BE049091BF040196821793076CF49093B2
:100B5000BF048093BE04C15001F772CF60E080E013
:100B60000E94DC0460E0E2CF1092BF041092BE0449
:100B70008091C0048F5F8093C004EDCF8091C0044A
:100B8000821BF9CFCFE76091C00480E00E94DC04B3
:100B90006091C00481E00E94DC042091BA0430918D
:100BA000BB0437FD19C08091BE049091BF0401962B
:100BB000821793073CF49093BF048093BE04C15006
:100BC00011F73ECF1092BF041092BE048091C00472
:100BD0008F5F8093C004F3CF8091C004821BF9CF54
:100BE000CFE7E091BC04F091BD04ED59FC4F649156
:100BF00081E00E94DC04E091BC04F091BD04ED5959
:100C0000FC4F649180E00E94DC048091BC049091D0
:100C1000BD040196811524E0920738F49093BD0439
:100C20008093BC04C150E9F60BCF1092BD04109222
:100C3000BC04F8CF1092BF041092BE048091C0048F
:100C400090910E02890F8093C0042ECF20910E0246
:100C50002403B001259F700D11248091C004FE0172
:100C6000E81BF109E617F7071CF40093C0041CCF3A
:100C7000249F202D11242093C00416CF80E00E94D1
:100C8000F40480FF0C9406050895E091C104E43655
:100C900050F01092C104EFECF4E084E6DF011D9205
:100CA0008A95E9F70895F0E0E253FB4F80818A309E
:100CB00081F38D3071F30895E091C10491E09E0FAE
:100CC0009093C104F0E0E153FB4F8083089582E8E4
:100CD00084BD84E085BD80E487BD82E080936E00A2
:100CE00008951F920F920FB60F9211240BB60F9218
:100CF0002F933F934F935F936F937F938F939F9324
:100D0000AF93BF93EF93FF930E94BE06FF91EF91C5
:100D1000BF91AF919F918F917F916F915F914F9113
:100D20003F912F910F900BBE0F900FBE0F901F9011
:100D300018958093080108958FEF80BB8093070179
:100D400080930A011092080111BAEBE0F1E01082E1
:100D500080818F6180838FE891E00197F1F700C077
:100D6000000080818E7F808308950E943E060E944D
:100D7000C9040E94450690E080E008956091C20495
:100D80007091C3046115710529F41092CE0410927C
:100D9000CD0408958091CD049091CE040196909356
:100DA000CE048093CD042091C6043091C7044091B5
:100DB000CB045091CC048417950720F46217730775
:100DC00021F408956217730761F01092C504109220
:100DD000C4041092CE041092CD047093C7046093A3
:100DE000C6042091C4043091C50445E0429FC0016F
:100DF000439F900D1124680F791F45E050E088EC67
:100E000094E00E944D078091CB049091CC04892BF3
:100E100071F41092C5041092C4046091C2047091E0
:100E2000C30445E050E088EC94E00E944D078091B7
:100E3000C80480930F028091C9049091CA049093D2
:100E4000BB048093BA041092CE041092CD0480911A
:100E5000C4049091C50401969093C5048093C40482
:100E60000895F8940E949C060E94AF040E946706B1
:100E700080E092E09093C3048093C204789488E168
:100E80009EE00FB6F894A895809360000FBE9093F3
:100E90006000A8950E94B506FCCFFB01DC0102C0F2
:100EA00005900D9241505040D8F708950F931F932D
:100EB000CF93DF93E0913505F0913605238110E063
:100EC00000E021FD0EC00FEF1FEFC801DF91CF91B1
:100ED0001F910F9108951995892B11F00FEF1FEFB6
:100EE000CE01EC0189916091350570913605DB01E9
:100EF0001896ED91FC918111EECF8AE01995892B1E
:080F000021F3E1CFF894FFCFCB
:100F080000000002000000008B0400000000010146
:100F1800740280028D0291029902A602AF02B60203
:100F2800C902D702E102EC02F60202030803110328
:100F38001F03C902D702E102EC02F602020308030A
:100F48001103CE03D403DA03DF03E403EA03EE0359
:100F5800F40307041B0435043C04420448044D040C
:100F6800520463046B0477048D049C04AB04494E5B
:100F780049540D00464C4F505059204449534B009A
:100F8800534352455720445249564552004B455900
:100F9800005341555341474500524F5454454E2044
:100FA800464C455348004B4559424F415244005026
:100FB8004953544F4C004E4F5448494E474C4F4E9E
:100FC800454C5920524F414400532F4E204449521A
:100FD8005420524F41440046495245504C414345E4
:100FE800004E2F5720537472656574004F4C44208F
:100FF800484F555345004C4956494E4720524F4F8C
:101008004D00415454494300424153454D454E54C7
:1010180000434F4D505554455220524F4F4D0059A3
:101028006F7520737461726520696E746F2061201A
:10103800766F6964206F66206E6F7468696E676E7C
:101048006573732E20596F7520736565206E6F6FF9
:101058006E652C20796F752068656172206E6F6FE0
:101068006E652C796F75206665656C20736F6D658C
:101078006F6E652E0D0A20596F75206C6F6F6B208F
:1010880061726F756E642C20616E642073656520D3
:101098006E6F7468696E672C2079657420796F7536
:1010A80020617265206E6F206C65737320736361B5
:1010B8007265642E20596F75206861626520776FAC
:1010C8006E2E4C4F4E454C5920524F4144006E6F86
:1010D80072746800736F757468007765737400655F
:1010E8006173740073686F6F74007573650045529F
:1010F800524F5200596F752063616E277420646FD8
:1011080020746861742100596F752063616E2774BB
:1011180020757365207468617421005768617420B4
:1011280061726520796F7520676F696E6720746FCB
:1011380020646F3F00676F696E6720004E4F5254FE
:101148004800534F555448004541535400574553A0
:101158005400594F55204D415920414354204E4F7A
:101168005721006974206469656400697420737587
:101178007276697665640061206265617220626CCE
:101188006F636B73207468652077617900697420D8
:1011980072616E20617761792E2E2E006974207736
:1011A8006F6E277420737461727400796F75206391
:0A11B800616E2774207479706500E1
:00000001FF

Binary file not shown.

BIN
code/textadv/build/game.o Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -41,4 +41,6 @@ void init_uart();
int putchar_16550(char var, FILE *stream);
void routine_uart();
#endif

View file

@ -0,0 +1,28 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _GAME_H
#define _GAME_H
#include <stdint.h>
extern char command_buffer[100];
extern uint8_t command_buffer_pointer;
void routine_game();
void ingest_user_char(char in);
#endif

View file

@ -22,14 +22,21 @@
struct tone_t {
uint8_t waveform;
int16_t frequency_deviation;
uint16_t length;
int16_t frequency_deviation; /* */
uint16_t length; /* The tone length in milliseconds */
};
/* The end marker tells the sound routines where the end of a track is. It
* is required to be present at the end of EVERY track, otherwise the
* routine runs into undefined behaviour */
#define TRACK_END_MARKER {DAC_MODE_SILENT, 0, 0}
extern const struct tone_t computer_room[] PROGMEM;
extern const struct tone_t lonely_road[] PROGMEM;
extern const struct tone_t ** current_track;
extern const struct tone_t * current_track;
void update_sound();
void init_sound();
#endif

View file

@ -17,6 +17,7 @@
#include "avr.h"
#include "16550.h"
#include "structures.h"
#include "game.h"
#include <stdio.h>
static FILE stdout_16550 = FDEV_SETUP_STREAM(putchar_16550, NULL,
@ -77,3 +78,15 @@ int putchar_16550(char var, FILE *stream __attribute__((unused))){
write_to_uart(UART_REG_TXRX,var);
return 0;
}
void routine_uart(){
uint8_t received = read_from_uart(UART_REG_LSR);
if(received & 0x01){
received = read_from_uart(UART_REG_TXRX);
ingest_user_char(received);
write_to_uart(UART_REG_TXRX,received); /* Echo back */
}
return;
}

49
code/textadv/src/game.c Normal file
View file

@ -0,0 +1,49 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "game.h"
#include <string.h>
#include <stdio.h>
char command_buffer[100];
uint8_t command_buffer_pointer = 0x00;
void routine_game(){
if(command_buffer_pointer >= sizeof(command_buffer)){
command_buffer_pointer = 0x00;
memset(command_buffer, 0, sizeof(command_buffer));
return;
}
if(command_buffer[command_buffer_pointer-1] == '\n' ||
command_buffer[command_buffer_pointer-1] == '\r'){
command_buffer_pointer = 0x00;
memset(command_buffer, 0, sizeof(command_buffer));
}
return;
}
void ingest_user_char(char in){
command_buffer[command_buffer_pointer++] = in;
return;
}

View file

@ -20,6 +20,7 @@
#include "dac.h"
#include "interrupt.h"
#include "sound.h"
#include "game.h"
#include <stdio.h>
#include <string.h>
@ -82,7 +83,7 @@ int main(){
reset_modules();
init_uart();
init_interrupts();
current_track = (const struct tone_t (**)) &lonely_road;
current_track = computer_room;
sei();
/* Enable the hardware watchdog. In case the microcontroller fails to
* finish it's task within the specified time, the watchdog will reset
@ -99,12 +100,9 @@ int main(){
}
int routine(){
uint8_t received = read_from_uart(UART_REG_LSR);
if(received & 0x01){
received = read_from_uart(UART_REG_TXRX);
write_to_uart(UART_REG_TXRX,received);
}
routine_dac();
routine_uart();
routine_game();
return 0;
}

View file

@ -22,39 +22,198 @@
#include <avr/pgmspace.h>
#include <stddef.h>
const struct tone_t lonely_road[] PROGMEM =
const struct tone_t computer_room[] PROGMEM =
{
{DAC_MODE_SQUARE, -10,500},
{DAC_MODE_SQUARE, -9,500},
{DAC_MODE_SQUARE, -8,500},
{DAC_MODE_SQUARE, -7,500},
{DAC_MODE_SQUARE, -6,500},
{DAC_MODE_SQUARE, -5,500},
{DAC_MODE_SQUARE, -2,500},
{DAC_MODE_SQUARE, -2,500},
{DAC_MODE_SQUARE, -2,500},
{DAC_MODE_SILENT, 0, 0},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_NOISE, 0,200},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_NOISE, 0,200},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_NOISE, 0,200},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_NOISE, 0,200},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_SQUARE, 10,100},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_NOISE, 0,200},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SINE, 10,50},
{DAC_MODE_SINE, -10,50},
{DAC_MODE_SQUARE, -2,100},
{DAC_MODE_SQUARE, 8,100},
{DAC_MODE_SQUARE, -2,100},
{DAC_MODE_SQUARE, 8,100},
{DAC_MODE_SQUARE, -2,100},
{DAC_MODE_NOISE, 0,200},
{DAC_MODE_SINE, 12,50},
{DAC_MODE_SINE, -8,50},
{DAC_MODE_SINE, 12,50},
{DAC_MODE_SINE, -8,50},
{DAC_MODE_SQUARE, -3,100},
{DAC_MODE_SQUARE, 7,100},
{DAC_MODE_SQUARE, -3,100},
{DAC_MODE_SQUARE, 7,100},
{DAC_MODE_SQUARE, -3,100},
{DAC_MODE_NOISE, 0,200},
{DAC_MODE_SINE, 13,50},
{DAC_MODE_SINE, -7,50},
{DAC_MODE_SINE, 13,50},
{DAC_MODE_SINE, -7,50},
TRACK_END_MARKER
};
const struct tone_t **current_track = NULL;
const struct tone_t lonely_road[] PROGMEM =
{
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,200},
{DAC_MODE_SQUARE, -4,200},
{DAC_MODE_SQUARE, -5,200},
{DAC_MODE_SQUARE, -3,400},
{DAC_MODE_SQUARE, -4,400},
{DAC_MODE_SQUARE, -5,400},
{DAC_MODE_SQUARE, -3,400},
{DAC_MODE_SQUARE, -4,400},
{DAC_MODE_SQUARE, -5,400},
{DAC_MODE_SQUARE, -3,800},
{DAC_MODE_SQUARE, -4,900},
{DAC_MODE_SQUARE, -5,1000},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_NOISE, 0,100},
{DAC_MODE_SAW, 0,200},
{DAC_MODE_SQUARE, 0,100},
{DAC_MODE_NOISE, 0,100},
{DAC_MODE_SINE, 0,200},
{DAC_MODE_SINE, 0,100},
{DAC_MODE_NOISE, 0,100},
{DAC_MODE_SINE, 0,200},
{DAC_MODE_SQUARE, 0,100},
TRACK_END_MARKER
};
const struct tone_t *current_track = NULL;
/* Loops a track indefinitely and changes voices according to predefined tables.
* A new track resets the internal state. A voice with a length of 0ms */
void update_sound(){
static uint16_t audio_time = 0;
static size_t tone_pointer = 0x00;
static struct tone_t current_tone = {DAC_MODE_SILENT, 0,0};
if(current_track == NULL){
/* ABORT */
audio_time = 0x00;
return;
}
audio_time++;
if(!(audio_time >=
pgm_read_word(&(*current_track)[tone_pointer].length))){
static const struct tone_t * old_track = NULL;
if(audio_time >= current_tone.length ||
current_track != old_track){
tone_pointer++;
if(pgm_read_word(&(*current_track)[tone_pointer].length) == 0){
tone_pointer = 0;
if(old_track != current_track){
tone_pointer = 0;
audio_time = 0x00;
old_track = current_track;
}
dac_mode = pgm_read_word(
&(*current_track)[tone_pointer].waveform);
dac_frequency_deviation = pgm_read_word(
&(*current_track)[tone_pointer].frequency_deviation);
memcpy_P(&current_tone,&(current_track[tone_pointer]),
sizeof(current_tone));
if(current_tone.length == 0){
tone_pointer = 0;
memcpy_P(&current_tone,&(current_track[tone_pointer]),
sizeof(current_tone));
}
dac_mode = current_tone.waveform;
dac_frequency_deviation = current_tone.frequency_deviation;
audio_time = 0x00;
tone_pointer++;
}
return;
}

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB