@mikecios, post #422
@nogorg, post #429
@nogorg, post #431
@nogorg, post #432
@nogorg, post #433
/*mod.obbfuscated.c #obbe A @ @ = < */char *msg = /* 2 */"This C source " /* */"code file is a " /* 8 */"Protracker " /* @ */"module.\n" /* ( B @ @*/"This Protracker "/* */"module is a " /*1 1*/"C source code " /* , */"file which " /* */"implements a\n" /* ( */"pattern data " /* ( */"scrambler."; /* ( Cheers to everyone at GERP 2015 đ @ đ M.K. ´› Ş/ Ş+ ż Ö[:0ÉS] Ĺ» ‘ ţ-Q â^Ó 6 đ^Ă Ö Ö]A¦@ ÖŕG x› Ŕ xť5 ţ+}˝X x› Ŕ xť xťI Ŕ x X Í0 ÖĐG Ö+T Ŕ¬]@ ¬}E É Ö ÖT â-9ST Ö+@T Gü] D üÍT G@Ŕ : Ö]'¬@ ÖĐG ŞÍ 4 ŹŔ ÖĐ7 ®Â.^ W G Ç ¬ Ö]D¬p ÖpG ÖÍa ţđ7 Ö+ ŹŚ xť Ö+@]B GüT x› S Ö^ÂM0 Öŕ7 ŞÍ$ ţŕ7 " É ţÍ0 ţđ7 Ö+ ÖT S]P xťB 8 ¬ÍU ÖpG Ö+ ÖT S] Ö+ ţT ¬]T Ö+ ţ] ¬T ĹË ÇÍC:ľĂ}km âf ÖÍX ÖĐ' E ţ X' 9 ´«@T üT É ţ+ }) Ö+ ÖT S]T ţ+ S¶ }@ âp6 SÍE 8 ÖŔ €» ţT c¬T Ö+ ÖT S]E¬ ¬T hM1 Öŕ7 ţ/ Ö[SMa âĐGĹ â[hMb âpG . Ö+ ‡-c Ę ţż ÖT Đ;.] Ş/ Ş+ ż Ö[ :0ÉS]@ŕ@/łŕ@G xťS Ö+T ¬]" 3 5 ¬< ¦M\ % 8 @ ŹŔ ÖĐG ÖÍ Öđ7 É 4 b Ö+ Ö]W ST ŹÍ Öŕ7 Y x› Ö, xť2 ¬Í& G ţŔ Y ÖĐ ÖŕG x› 4 x› É xť` Ö¬TrM` Öp7 ţ+ Ş}H Ö+ ţ^Ä É¬]Gŕ» V xťR Öđ7 ¬Í G ţŔ âT :@Ç}]E@ ţT ¬M2 ÖpY¬ x› Ç xť SýR @ @VüM7 ţ Ě X ľÍ âđ8 ÖT \; h]P Ö]0:@ÉST SÝ Y Ęš$ ţí P¬@ Ö+ â]1 }T €ü]@@ ÖĐY Ö+SĆ\0Ě ÖÍ2 @ý Ö+ Ö]5 ST Ö ÖMX x› Ŕ xť% Ö Ö]'h@ Öp7¬S3XMS x› Ş+ đ^Äü0Ě xť R ¬S=8 Ź@ P .Ńü; @M$ ţ ľ» :@G ţ-®ÂT % xťb âĐG xťa âpG x› xťc ¬Ë ÉÍB: Ö]:@ÉST Í0 ÖpY SÍ 8 ÖŔ ÖÍQ ÖĐ' xť 8 8 ŹÍ . đT :0™S] Č SË É ÖÍ3 x› Ŕ xť@ ţ+ G@ ÖĐ7 ĘÍ ĘđG xť( âp8 ţí9 xťa SË É ÖÍF —ś0 @ ¬» Ö]B¬0ŔST C : âT :@Ç}]E Y @ ţ] ¬T % G ÖÍ2 âđ8 Ź®Á.^ @ ´« đ^Äü0Ě xť€ ţ]( ¬T R Ě ¬kh˝9.f ţf Ě ! SÍB 8 ÖŔ Ö» ÖT ST : ´]4¬@ Öp7 Ş@ }Ë Ç âÍF Ź» Ö]:@ÉST 6 ) Ö ÖTsí ÖŕG xť0 É x SË É ÖÍ7 x› xťF : âT :0Ç}]5 SÍ G ÖŔ x› É 7 T G xťG ¦» X › Ö íI ţ- ŹÍ1 Öp7» âT’:@L - ţ/ Ö[SMa âđG â â[hMb âŕG c ţż ÖT Đ;.] É b@ ţ]#@@ ÖđY ţ+ 8 @ ĘpG Ö+ ţT ¬] Ö+ ţ]Q ¬T Ö+ T ¬]! đś 0 C ÖŔ ţĐ7€» ţT 2¬T R € ţ] G¬T ţ+ F@ ÖĐ7 x› ( x SË É ÖÍE ŹÍY ÖpX Ö+T ¬](¦®Ä ¦0ŔS˝) ÖÍG âŕ8 ţ Dü0Ŕ â ´« ţT P¬T Ş+ đ^Äü0Ě xť ÖÍ@ ÖđY Ö+ ţT ¬]U Öý ÖT ¬M Öŕ7¬]2 Ź@ SP H ¬ Ö]Q¬@ Öp7 SË É ÖÍF ¬Í1 G ţŔ S\ ¦M¬\ â0@T‘:MD€ ţT G¬] ¬VüMT ţ x› Ö, xť1}hm".f ţf Í ĘpG Ö/ 5 Ö/ ÖT ¬M# Öđ7 ´Í( Öđ7 ţ ÖTsüM5 ţŕ7 ´ÍQ ÖĐ7 ¦M' Ö+T ¬] ŹÍ@ ÖĐ7 ´« đ^Äü0Ě xť' xť1 Ŕ x . đT :0™S]H @ýa ´« T R¬T W ! Ö+ ÖT S]# }Ë Ç âÍD Ę« ÖT $ST ü» €0Ě Ö]S}@ ţ Ę« ţT ¬T xťb âđG xťa âŕG ˛ c ţ+ S@ ţĐ7 Ö Ö4 ST :M Ö ÖT â-TST xťS Ęś3 U Sý ŹÍ ÖđY É R ţ» %ü0Ŕ ľ®Ä ¬M" , Ö+ â] }T Ö+@]8 GüT ¬Í G ţŔ C xť" Č & ÖÍ ÖpG Ö^ ÖÍ ÖĐ7 : â]@@ âp6 :@É 8» âT :0Ç}] :@Ç P@ Ö]GS@ ÖŕG Y:®Ä €0Ŕ@˝X: %€0Ě » Ö]):0ÉST ¬3SÝSS.» 8\0Ŕ ֮Ĭ» Ö]& ŔST ţ Ö]9¬@ ţp7 Ö+ V ţí2 G ŹŔ ÖĐ' ţ+ SM Ş®Á ` Ź» Ö]5:@ÉST Ö ÖT S] ÖË ! R ´«T 5¬T ¬» ÖT 0ST Öý9 Ę« ţT S¬T Öý( @®ÂT xť ţ `ü0Ŕ â ¬L H Ç A 0 â[:0Ç}] ´« ÖT 2ST P ¬» ÖT 8ST 3 ´« ÖT S]WĹ Ö]a ţ. âĐGĹ â]b ţ. âpG¬ ÖT’¦@8S]A ĘÍS ĘĐG Í ĘŕG Í ÖĐX SË É ÖÍ Ź ÖT SM ţ š9 D ´« ÖT ST .ÍY É ÖŔ ´«@T AüT É H É H x› L Öp7 F üÍB G@Ŕ ¬ Ö]P ŔST ţ+ @ ÖŕG xť3 âT :@Ç}]%:» `:0Ě : âT :@Ç}]» âT :0Ç}] }Ë Ç âÍ ţ+ "Ĺ@ âĐ8ü ¬T ¬M8 ţŕ7¬» ţ] Ŕ¬T Öý( ŹÍ` Öŕ7 ţ+ Ş} SË É ÖÍC Ęś 0 ‡« â] }T P @ c xť Ö» ÖT ST :@É É A ´Ŕ Öđ7 .Í9 É ÖŔ Ö Ö] ŔST ¬ Ö]¬p ÖđG xť` Ŕ x Ö+ â]9 }T ţíQ Ö+ T Ĺ]# ‡š @» ţT F¬T SÍ$ G ÖŔ xť@ Ŕ x C D : :0Ě 5 ‡Ŕ ĘđG ÖýW €» ţT ¬T 6 É xťI :@É Ö+ ]" ¬T x› b âĐG x› a âpG . Ö+ ‡-c Ę ÖÝ! Ö+ T ¬]@ Ź @@ âp8 ʮà ţ[ü0Ě.]H }Ë Ç âÍ) ŞŔ ÖđG T ”M ĘpG Ź â]6@ âp6 Sýb ÖđG Ë Y Ö :M @» ţT 6¬T ¬Ë Ç ţÍ x› X ](}@ âŕ8 G ţ+ B¬@ Öp7 š9 M ¬k hf\˝b ţf Ö Ö]Eŕ ÖĐG Y Y ŹÍ Öđ7 x› 4 . V\0ŔS Q ŞÍ& ÖĐG › âT :@Ç}]V x› Ŕ xť Sý4 Ĺ®Ä :0Ŕ˝ Ě ) xť É H Ç 0 ÖýQ ÖpG H x› @MV , Ö Ö]Uh@ Öŕ7 FX@G x› Ŕ xť ‡š4 7 Öý ÖĐG üÍ6 G@Ŕ Ö]:@ÉST É X ´«@T Ŕü]S¬ Ö]bX@ ÖđG ţ+ ' Şp ÖĐG x› Ŕ xť D ´Ŕ ÖĐ7 Ö» ÖT :QST x› Ŕ xťW SË É ÖÍ:®Ä €0Ŕ@˝ F Ö+T Ŕ¬]B x› Ö]b ţ. âŕGĹ â]a ţ. âŕG x› xťc 7 x› ( —š ÖÝb ÖŕG Ę« ÖT bST ţ+ đ]S”@ ĘŕG¬¬]h@ Öŕ7 â+ :0Ŕ ţ+ }7 Ö+@T Gü]( Ö+ ]@ ¬T @üVüMG ţ A G ¬ Ö[¦@ČS] Ö+ T §@]Y Ě ś9 P É 5 SÝc ÖĐG@ ţ]( ¬T Ź» âT :@Ç}]E ´« ţT ¬]@ ]”@ ĘŕG Ö+] ĹT €+::@É H ‘ ‘@ ţ]R€0Ŕ¬T Ö» ÖT UST ¬ Ö]Y¬@ Öp7 # Ç xť2 Ŕ x Ź]5@ âđ8¬ Ö]G¬@ ÖĐ7 9 Ç ¬Ë Ç ţÍ Ö+¬Í4¦0Ě ţĆ ] @ ÖĐX x› É xť A}@ âĐ8@ ţT ¬]1 x› Ŕ xť3 Ö¬]D@ Öp7 Ö ÖTs¬M' Öŕ7 G 5 ÖÝD Ö Ö]ŕ ÖĐG ´« 4¦0Ě ¬» ÖT’ xť2STs:¬]S@ ÖpG Ç b , ´« \0Ě ¬Í G ţŔ ĘŔ ĘđG x› Ŕ xť :@É xť 8 » Ö]!:0ÉST x› Ö]b ţ. âđGĹ â]a ţ. âđG c - ţ.Ó Ź» Ö]D:@ÉST x› É xť@ ţ+ ¬@ ÖĐGŕľĂ}k@m& đf x› Ŕ xťB P Č ľ¬ â^Ó đ^Ă ´« ÖT ST ÖŔ ÖĐX€» ţT Q¬T Ö Ö]¦@8ST xť" É x x› G x› É ¬M4 : Ö]}@ ţ ÖÍC Öp7¬ ÖT 8S]) Ö í ´]'¬@ Öđ7 ¬^ ÖÍ3 ÖĐG@ ]@@ ÖŕX ´« ¦0Ě Ö :M ¬Í G ţŔ xť3 É x› # € ţ] ¬T SSSݬS xť" Öp7 # G A xť Ö^ ÖÍ$ ÖŕG x› 0 Ç ´«@T Ŕü]' x› C ¬Í4 G ţŔ W Ę« T ¬T :@Ç R âT :@Ç}]" x› T Ç €» ţT U¬T ) É Ö :M2 ` Ö+ ÖT ¦@8S]B S $ ś( ! x› xť6 › x ü .Ń:@Ç ţ- ŞMV x› xťA É x x› L P ţ+ bü@ ţp7¬´‘hk.o ţm& ˛ c ¦®Ä ¦0ŔS˝ ľ â]C}@ ţ x› Ŕ xťY ź° @ @» ţT 8¬T @ ţT ¬]' Sý8 ÖĐG üÍ G@Ŕ ¬» Ö]7:0ĚST @ý9 ´« 4\0Ě 8 4}» -` x› G ţÍ! ţĐ7 Ęś ¬ ÖT 8S] â^Ó đ^Ă Ö ÖM% xť É SÍ 8 ÖŔ C ¬\ ÖÝP ţí& xť) âĐ8 ţ+ ¬@ Öp7 xť( ś8 P ÖÍ7 ÖĐ7 Ö¬^Âí% ÖŕG Ö+T Ĺ]% Ö+@T Ŕü]¬» Ö]7¬0ŔST x› H @ý6 ' É ţÍ ţĐ7 xťT É x› xť Ö» Ö]I ŔST Ęš I ¦ľĂSk mU âf: Ö[:0ÉS]9 Ö¬]@ ÖĐ7 ţ+ S@ ÖĐ7 ' I ţí Ö :M x› E Ö+SĆ\0Ě ÖÍE É H¬» ÖT’¦@8S] $ Ç b Ç Ö ÖTsíV ÖđG Ö Ö] ŔST € ţ]H€@G¬T x› ` ¬ ÖT’¦@8S]I Ö+ E ®Ă ţ^Ä ¬]! ¬M9 $ s Ö ÖM% ÖST í1¬T ¬khf.fü˝ Ö+ ÖT ¦@8S]! ţ- ÖT \;h]# A Ö+ ÖT S]9Ĺ .Ń ţ-4 ţ+ r Ş}c ÖĐG ţ+ }G ŹÍ ĘđG B xťR Ö+ â]C }T É (¬ ţ]H Ŕ¬T a ®Â ¬}[¬}3ĹP \ a ţ@ ÖđY ŞM' x› @ G ` ŞÍ ÖĐG Öý ÖĐG X }Ë Ç âÍ ÍD ÖĐY ÖÝ Ź®ĂP D ţ+ Şp ÖŕG ÖÝ 8 xť" Ŕ x SÍ 8 ÖŔ € ţ]I€@G¬T A @ ľŔ ÖĐ' ´«T Ŕ¬]U @Ý6 Ę« T ¬T ]}@ âŕ8 ţ ¬TrSM ţp7 SÍ 8 ÖŔ đś T V ¬¬T SM3 ÖĐG Ź W:@É x› Ŕ xť Ź» Ö]a:@ÉST Ź]7¬@ ÖĐ'@ ] @@ ĘĐG :@Y 9 E É 0 2 X Í ÖĐG # Ö í$ Ö+ ţT ¬] E ţ/ Ş} ÖŕG€» ţ]V ¬T ÖÍ7 ÖĐX¬¬]h@ Öp7. x› ú@G xť ŞÍ ÖĐG xťP É ¬ÍS 8Ŕ ]a¬@ Öŕ' " ¬ Ç xť¬» ÖT IST Ö íR Ö íY x› xť! Ç @ ]@@ ĘđG ¬Í G ţŔ x› xť ®Â[ Ĺ]€ ţT €@G¬] Ęš9 F ÖÝ xť" Ŕ x ÖÍ ÖĐ7 É X ŹŔ Öp7 ®Â[ Ĺ] ´«T Ŕ¬]B Ş@ É x› xť 0 Č 4 Ş+ ţ]"ü0Ě.T ¬¬T ¬} ÖĐG xť @®Â ţT x› U « Ś đš( R ţ+ Ş}4 ¬ Ç xť` Ö]:@ÉST 7 Öđ7 C Ç @ @ý Ö+ ÖT S]Y ¬ÍA G ţŔ Q ţ-U Ö+¬Í¦0Ě ţĆ ţíF 3 É B x› Ç xť€» ţT (¬T @¬VXM` ţ Ö ÖTsí ÖđG ´« ÖT !ST ¬Í G ţŔ ţ+ 0X@GXdr ¦MQ ÖÍU ÖĐX & SÝP ÖĐG ´« ţT 6¬T Ç xť1 ®Ă ţ^Ä ¬]# ÖýS ţ+ ţ]VĹ@ âp6 ÖÍF ÖĐ7 x› xť` Ç ÍW ÖĐX€ ţ]F G¬T }Ë Ç âÍ$+ 8€0Ŕ@ Y Ç Ě 1:» Q:0Ě ´« ţT ¬]8¬» đT :0™S]W Ö+ ÖT ¦@8S]c Ö]):@ÉST Ę«@T AüT ¬Í G ţŔ ţ+ }7 Ź ]G}@ ÖĐ' xś xťD Ŕ x Ö+ ÖT S] ţ+ SM ¬ ţ]& Ŕ¬T x› 3 ÖÝP ¬Í9 G ţŔ ¬]WĹ@ }P Ö^ÂM8 ÖŕG SÍG 8 ÖŔ 6 T $ ¬» ÖT RST 1 B ´Ŕ ÖĐ7+ €0Ŕ@ Ö Ö]Y¦@8ST Č ţ+ #¬@ ÖĐ7 x› xť2 x› Ö, xť ÍA âđ6 3: Ö[:0ÉS]¬» Ö]1 ŔST $ ‡Ŕ ÖpX ľÍQ Öp7 ŹÍV Öŕ7 ‡Í0 Öŕ' ¬^Ń ŞÍH ţp7 Ö Ö]7ŕ ÖŕG Ö» Ö]2 ŔST : T€0Ě x› F Ö+ ÖT S] Ö í% ţ+ đ]X¬@ ÖpX X Ç xťA¬ S¬} S x› Ŕ xťG x› X ÖÍ) ÖĐ7 Í6 ÖŕY¬Ĺ=1¬p }P Öý6 ÖĐG ĹË ÇÍC ÖÍG ÖĐ7 ţ» Tü0Ŕ ľ®Ä EX@G I G xťW 8 .» &\0Ŕ Ö®Ä Ö+ ţ^Ä É¬]3 ^Ă M ÖĐX # I É Ö+@T Ŕü]6 ţ+ )¬@ Öp7 :@Ç % 0 G Ö Ö]Fh@ ÖĐ7 ! @» ţT Y¬T V ľŔ ÖĐ' ^Ă MV ĘđG x› XM , É xťW Ę« @T 6üT S+ ţÍ8¦0ŔS €» ţT I¬T G }Ë Ç âÍ$ ´« ÖT S] X Y É A š4 C ü=Iü@ ţ ţ+ C@ ÖĐ' Ęš Ö+ ÖT ¦@8S]3 Ęś # ţ+ @ ÖĐX ÖÝ3 Ö» ÖT :8ST @» ţ]&€0Ŕ¬T xťV Ź» âT :@Ç}]1 & ` P @ c MH Ě U @ ţ]€0Ŕ¬T š9 S S+ ţÍI¦0ŔS @Ý5 Ö+ ÖT ¦@8S] x› Ŕ xť@» ţ]9€0Ŕ¬T ´Í( ÖĐ7 V X„E ¬^Ń ŹÍ# Öp7 É S Ö¬]B@ Öđ7@ü3 XM1@S W¬ Ö]0 ŔST Ç x› Ŕ xťU @ÝT ţ+S='S@ P x› Ŕ xť`€ ţ]¬@ ÖŕY SýP ÖĐG xť" Ŕ x C ÖĐ ÖĐG x› V x ÍR ÖĐG ţ ¬])S@ ţđ7ü» €0Ě (ľĂ”k@mT f: âT :0Ç}] Ö» ÖT ST ¬ S¬}8 S $}@ âĐ6 xťF Ŕ x x› Ŕ xť% @ý T ‡« â] }T Ö ÖTs¬M` Öŕ7 Ö+T ¬]V Ö+] ĹT Y Ě F G Ş+ ţ]Tü0Ě.T É Ö+T §@]9 ţ+]BS@ SP H đš $ 6SŔ ÖĐG R X¬L ¬ Ö]I¬0ŔST Öý( P Ö+ ÖT ¦@8S]1 É U ¬^ ÖÝ2 ÖĐG 7 T Ĺ]9 SÍ` 8 ÖŔ ]¬@ Öp' V SÝW Ź hMG Öđ7 xť@ Z & Ö¬]¬@ ÖŕG T Ĺ]" Í$ ÖđY@ ü] ţ@ ÖŕY ţ+ r:M# ÖĐG SÍD G ÖŔ € ţT €@G¬]c@¬S XMXüS ´ś ŹŔ Öŕ' x› a ś x› Ç xť @ @®Á ^ xť7 ¬» Ö]@:0ĚST ţ+ Ş}% ¬ÍE 8Ŕ Ö^ ÖÍ# Öŕ7 SÝH ÖpG Ö Ö]h@ ÖĐ7 ľÍ4 ţp7 ţ+ }@ ÖŕY ţ+ â]T}@ âŕ6 xť x› Ç xťU Ź]¬@ Öŕ' ‡Í$ ÖŕX¬ Ö]! ST }Ë Ç âÍ) ¬ x› Ç xť & ´Ŕ ÖĐ7 Ź]D@ âĐ8 ÖÝ SË É ÖÍ% xť3 âŔ Öp7 Öý$ ] @ ĘŕG(» ţ+ T:@ ÖĐG¬¬T hM Öŕ7 T ¬MA ÖŕX @Ý& ]@@ ÖĐX @Ý ľŔ ÖđY @ ]¬@ ÖpX€» ţ]c ¬T đś ŹÍQ ÖđG â» 0 & Ö¬4 í2ST 0 â[:0Ç}]E Ę« ÖT QST SË É ÖÍG¬ Ö] ¬0ŔST Ę« ÖT 2ST . '\0ŔS :@É ¬ Ö]:0ĚST 0 c Ç É &@ ¬}! Ö ÖM5 T ¬M ÖđG ţ+ 7@ Öŕ7 ´Í ÖĐ7 —ś0 ! Sý5 }Ë Ç âÍI @Í5 ČŔ x› Ö, xť@ ľ]'Ĺ@ âĐ8 ÖÝU ¬ Ö]1X@ ÖpG xťI Öý Ö ¬^¦M ÖŕG É Y x› Ö ÖTs¬M) ÖŕG Ö¬]!@ ÖĐ7 € ţT G¬] ţ+ ţ@ ÖpY¬ Ö]Y¬@ Öp7 Ö+ ÖT S] Ç W ľÍ# âĐ8 É ÖÍ ÖĐ7 ÖÍ ÖŕG x› Ŕ xť'Ĺ®Ä :0Ŕ˝0 đś) 1 ¬Ë ÉÍB B c ţí% ÖÍ Öŕ7 ¬ Ö]F ST ţ+ 4@ ÖĐ' Q ÖÍ3 ÖĐ7€» ţT a¬T ¬» ÖT’ xťSSTs x› xť# › x :» S ¬]'@ ÖpG x› Ŕ xťC G ÖÍ ÖĐY ‡Í) Öp' Ö^ÂM ÖĐ7 ţ+ ¬:@Y:˝: Ö]Q:@ÉST â+ ):0Ŕ É R xť }Ë Ç âÍ " É R ‡ÍW ĘĐG ľÍ7 âĐ6 xťW¬ Ö]:0ĚST 3 D ¬» đT :0™S]a }@ âĐ8 SX@G ü Ö]5ü@ ţp7 ÖýD x› Ŕ xť4 ¬@ x› É xť0 Ź]}@ Öp' xť5 @ÝA x› ÖÍ ÖĐG¬S XMESS "@ Ö ¬TrM ÖĐ7 đš) C x› P ţ+h]@ Öp7 É U ¬^Ń ŹÍ6 Öp7 â^Ó đ^Ă SÝ! ÖpG Ö ÖT S] & ¬» ţ]I Ŕ¬T x› Ŕ xť Ö ¬](ŕ ÖŕG x› 6 ţ+ ľ\@M âp8 2 x› xťU É x Sý( ÖđG % Ź }@ : :0Ě ţ+ €˝) xť É Ę®Ă ţ[ü0Ě.]0 SÍ G ÖŔ ˙ŢĐňęŰâßÝÜÚŘÖÔÓŃĐÎËÉÇĹÂż˝»şşşşşşşş»Ľ˝˝˝żŔÂĂĹÇÉËÎĐŃĐÁ´ąľĂđ)1,6GIHPNQMOUSVY\_bcefhijkkjhYB;)íÇşŮŘÎÚŐŃÓŇŇń&**&říĺčí ĄöĐÎçęęŢ4YUEÄ—Gđ˙_hý$* űőčĺÝŰŃĐŔ„߀ŻŔ€€° €¦ßć›Çßß»ŰßĂ í0ýŘ/,:÷|?mŕg`7hH+@DçP ýÚúáÝŔ˛·Í¨««˛›˘ŚŚ•š„€·Ś€ËŔ€€˙đ€Ď ˘“öµě˛Ë˙(Ŕ×`đ#C÷?V SUh-{PHK8xmPmHw~0oD ?+ĺ((čŐůÍň°˛˛ Łž€§€€§€€‡ €€Ô€€ €űę€7°€Ŕ °čč3ż’˙Ľß ž÷P Ő+Ě$;7\ ?x@U(7}Pmh1ăW `.H_gD ,(˙Üüąň źĐ€µ€Ňް€˝Đ€ż ŻŰ€€ÓČŠčłóĚ€ąü ď Ď ¬÷Ôś˙X°çÜ+ çGJE+h?`_ed`=@ýděJ5D;V Čo ˙açÓ(8Ř7nÔ˙&ŕ˙í; ä÷ đ˛ĚĺşŘ€&€żÖ€źä€€¶„€č€§®€ź€żŕ€óü÷Đ/(70P>k+}lS_H{|~U`/Ov0×~*4$˙0ŰŘ@čź- Źđďŕ€ď €É€´Żč€× €đ€‡Ě•€€·Ř™ËÄŹ €łâ¨ź ŘĐ» ż(§3аďkŕ3ç] ˙"tŘKHGD*(<+?oÉxÍPíč ?Đß,ďçŘŻ €ôČŕ€?Ŕ€ä߸—ا˝ŔčĆÝś‡ ŹËĐÉäćčŻěű ´Ő ŕ@€OĐď÷»@¦GÚ˙ ˙ů2ç-ń#Ň/ ß[Đ ßP‹4üĘ? Ű)ß űýBš˙HŔ ĎMŕĂ÷Pě÷čüŰýůŕŇç.°ďôŮüŘ×÷Ř ĹÍĎ=ë÷ű(ęň ˙4Ç Ŕý§Ç üĺđ˙ŰďNë?ä÷T2ďo<űcp ?H'!MßW÷ ßęřŮĺř×ëż÷ŻŇä‘ňđ·ŔúŇŻŕ·Ĺě©ŕÜÖ˙Őüź÷ĐďÄ$¶ę ű ç(×ëBŇWč7@ďU+@/?8$k˙H((C?$ Pč ˙ čýň·ę÷¨÷ĐßŮĄńĄÇČŘąŔżÂ°ÇĐĂÚÜĎŐÎ÷áČříđ˙2â/ç˙; M'8˙J?2b'@2O : /ě˙đŕîŕčŰô×ŕĎĚÚ˛×ŘŔ߰ߤßôśŰĐďÔÝľýđ Ńţă÷ŕ˙ íď3č( ˙óDßń ÷Ůú,Ěáě÷!č˙<Ý řř űü÷ÔěÝíěôíÝĂú Őŕěććóčńëőćóí ë ř˙ä ä2˙˙ćÓřůú ń ĺ+čý ďÚ ď˙ęđ˙˙úý ˙ţô$ű!ů 2 ů'ů"÷˙ů ôěűěĺüňâűŕîŢüâŰůćâăí÷ŮîđçäűŢČÚüŕçôí Ýńřďřđ č&űčýćă í î˙ôîäßýőů ú ř ˙ ˙˙üóýő˙ü÷úüĺóĺěńüýĺ˙óđőöőü˙ ő íúčřőţő˙üńôüôůúö˙ßëěűţôýî ü öű ˙ ţú öřôůôçâůčňđăđűęăóŕďđíňâńúá÷řű ý öů" ü ţřüţý í őű đćýöí ÷ýőňűĺúňřóüűřřőőí řě ů öřňţ ű ýű˙ţ ˙ ˙÷úńěýńčűýůňúőřđ÷óűč˙óđî čűí÷űřěňţőüúűđ Čľ¸˝Î»kUjVĘŃ; ȸλkUž¸˝VĘŃ j-[D[JSH`OXY\w@+<öőĐžąČÄÚ 0))"'!-%)*,9ű űčĎÜăâí SdPMcUC^i-<{|``||t|jYrfHmo*QX ßŰćßԶެˇ—’‘‘“„‰„€“ś´‰•±ń΀ĽŻ˘čŘ×ç $*06;AFKPUY]beiloruwy{|}~~~~}|{ywurolieb]YUPKFA;60*$ úôíçáŰŐĎÉÄľą´ŻŞ¦˘ťš–“ŤŠ†„‚€‚„†ŠŤ“–šť˘¦ŞŻ´ąľÄÉĎŐŰáçíôú «<Jţ{™ęÇ}ŃóňŚç%śÎţüm!7(˛”3łä EËź¨ŕź)´ďW\_†łŤ9‚‰}q©ÜgĐ"F«ńéž0o¶îůu.Ą”Yi€Mč…žY@X×űŽ<š EąF_ÎâĆ8ÂŤ$µVK=ÍŹY„ŚźĚ$<,kÎ-öŞÚdĂ7ý©·ŽäÓŠ›ů1~Î-Mřďž±îÚĐ2°Ăs š$fáŢŽ],G•E_üw7ćf{F}Öˇűm8@]m˝xÓ ev' ˇgq˛çŁŔ»9šŽ•Sć둊Z¶Ů×R?Ň´Ç] žOÜL…S謥6˘D„$€J5C?xŘ“–űŮyĽÓ Ţĺ\ŹÇ‘Ô,Rŕ·op›Řť`ţD]ďGÖ&q˙šj}âlq*RëĘ5.ĂýY÷*ÚDĘGۧgz‚“±Ľ`íUŰŤf'y±x§¶Źű DnĄ^&®(V čfíîDw’`Ř{`´iak»»Ě˘DŮţ‘tF:~YŚ!ńÇčđFó¶{ôŃ›í›-t=Ď‹o§ŔQŹMínˇ~ÄßGÚ NŮŻ‚űpv|\ŕăĽřś‡/‘ZÔŕzÖ•é|Á_Ó7\o{ÝKt“ł¸ÄŤ úZ š Ż•Ű%Yt|olěĘ,1Ćľ›\Íş9qŽśs8ÇÄxđMűŇwYSÁ9<÷ď‰ęs+Ň!)îŮVČ$šaŽşŕč=ë§‹ŢK1Ô9ęÝ#ýľk˛˝ŇÔŽ5ˡ)BwÍ2ĄÓ«z4ľśf˛äîż ĹýT©ÖPě°ß,׹ǻJô’D†ć”ČŻěKIŔ®–—O—“°µ›·:š˛Üđşş+qtT±‹Ý‹•Ę:…ş$”ÜDűo{L€8éz¶¨DÎűŻĆZ]lů}Äćmţ—በ»¨™"ľěŘîŰy%~™>gĐń„şë€ĹÖ)ć?‚8%¦81Žđ§Kul)HÖÝčŰá&d´lŁLyŢöţň\šÖĘ-x5vÔ„Ş1Ö˘UЉ@ŢŤ7<íUQ©ůĆUFcP<ÖÜUÁşĆS')^B3=ęGüw€'t^p]ď/4Ën0¦w©ÔâŢ”ůů\Z©ÎÇH„]ĺó9˘bĎbmâÖ”‰ď‘^%®a=« ËĘ×ęĽ #-™A^ß6BX‚øG›‹5Ł?ŘXŮč@†2páĄ%Ś,ˇôź)¸ÔĹ,4˙ÇV1ďËŚČ`Í.vśbd_1xň–şg™tŔÂuĽ^űL—~¦5@±†śţ!Ą4rl°~C_đŪϱ™ŞkJÍO ¸rÇ–ô©ÄÄ:ĺ:mGřź÷IyňăŇ{qźF[Ę…kifÜËxđNΓš-@n‹g••®ăđľ¶‚÷0ŞŁd‚¸p»÷?S°‰$4lă¸Ă( pjGTb/ůĆ뜑ԂfôůTşŞwµ6Î:pt‹ĽčĽ{Ó-Xl#.ű‘slm±t‰%"Ľ—‡âżN>Ú–,xn÷lLa‡jOgĹvŚ3{–Ľ˝27€¶ Ođ L'‘É'Oç GCî6#žÄß©j§b}öÖň‘çĎ=»Ś9˘ b_X˘ąĎ=s#*:6ľt%Ae7}ÉÚŁ´aßzSĎSr1~˘(·ëîŰŹG 1g݉N vĚmÓÎ.>UĚÁ=®ŚkÜDőTÜ'3÷vwęŃFÚ3Ňu“˘?i'†%1\›>ŹgE†>ॽŕdwňzZćĺ‚ű*‰µgŘ8ŕÂŕ «ÜqÇE)׏&nݬí«Mbű×'Řp'ĄkŰĺ5ké_çs[»u!6Ç(ŐĹýŽ ¤ßŲF»ŔĹÄrĚÔȶ˘aÓÓ šw-¸&eýŽůßMŁĐ:Mo˝D8?j·š%L *²]Ú_±ě ÍÔQü€}d^)uů7ĚN¶ä“îŔăwŐŞwŤńJTăDÖ( „ťGhë)BŽęî ™+eŇ“UŮ#śM¬Â)ŤaňśOĐW$ç1vöÄ2©ăˇ¤ČóI;AŢĂ@äűÔFŐ…öŤ=Yj¤5§€&"{EDîUĐ@ĽNŞşľ ýF#…ĘvČfI·gůąŠW˘#¨{nß)ÄţXţâ;›˝żJ¶;OľőFU6áÉy‹Yf«’Ϣ ˝WsPk•·ÔŽBwŢÚo1;w!ś™Ý°ý}ő,Ú"•‡ČŤd•*ܧŮz Ďö ˘35WѴ܉(Ť]@&LY·žv®˘Žęp{ČŰ đB˛jęĐĎŤňÍĽÇMĹG×ÔěHPL˛És[éÂđ+2,–ɦ 4rwč¸ĺGµx Ĺ+s(Ľó·ś×~óŚ DŚŮ“íIîî÷ÂÁ»†ý <ŰNfĎ/p–,΀Ňň•˛eđ8M^`ĘM÷äşÉBuƲީ‚űĘ=h±/YíŘ«]âć´úŻ,ł»F+wvzż5]eäŃEbŇ˙rsŻnűAŰŁz˘Ô”w–•ü[¦~öęĹŐĄDyŹmbýäçꉲâ˛tń”c“MmwĐŘmľ˛Óö0-?‰ţ!´Ý>Š%,ëȱK[6$lž X¬\Fťëµ¸z|=UByTÔˇl8×ĐóŤU[»ń菩&Ř$MKÔÖcA‰O…"ľϫfÄ‹zŕ°“×Ď}ꯨ@âĎ}%jB--mM©ëŐv))‹öďÁ0Ń—kpB¶y6/č’|SS:fŤůG'?űVŔ‘#ŕ*f©Ô*mµ2qdZ‰e5Ťöí%«Î'[hŕ\J—‹s„!ăE¤k«×Ŕě‚z}“§z-řm,ţřüx@đÇd_ lҡ|»šâpa hţSĄ„żü´¨Sć]–-´ĄuĘ1Y4»řÜ–Đ ý‡âHńCSÚd!ĆäćEhT<|V7FĹ{S+5sHśéđܲKt©¬_ZUęŐV|-&>&*Üý* ÂW/ßB—šşÚR\ýMą×H˝˙SPÉÔŐ‡đꊡÔË‚ň;6zMy07 fŻEXjôa´:xű<: cJΰ*wŕ˝běÝJ€„a٢'c¤ç"2áÜÎdÉŔ÷ť'I¶j/JžgK`}˘]@Ül;·ůîőÂz/dm–‹?Ý—$ŻęâŚlĐoĘđ9¶¨ĺÁeÇŻő…JX*Ňěş)Î+°8˛·Ă|˝˘éÁ‘Űuă5xřvé Qư™ŽŘÎF`ţń˝ßBZftF’mÜĆ{@d źé:?ú•,hJFÝ=€öÉújËÍcŇ}L’‘ňŇEĽĹŹŮůż\˘ă©<>ô›ČXl_ a¶,RsŃx3‚lXÖă“ë5śçd5ÓU ;±ř!!ű˙ĆX÷™© 2Úcx“lŽŃ î fä_>‰ć~ůŚę-@ČRđ-‚śöa WŇűK@íu¬¤BµBßÓ˙¨ţL#X÷+´ő^ĽÖJ«!2>umMźÇyĄ›µ‘˰ÖŘ‹eo'K§Ę}őÖą_ž˘żôxOFňŞ|¦úéŇ@őp/7äÓ3ŠVt‘¶öx¬C›Ç”Á]đDˇÍ§ßŻSíŁS2ŢN±JżELX€ĂćËŃ7#Mőa%ˇ\nçY¸ˇsĚG§Öáą%RÁtöXxţ7AÂ%1ţʬů\ŇíÜ7Işg\ŐőbÝ} ĺĐoŚŘ(l4eú4›„‘ŽóŁçîüŇ´•ă$‰vĽ–9S÷xŽÖ){^ďzĽü$e,z˝iĚxBvíË˝ř˛6yPŞţ‡hžŠ6{{ŹVÓŕ3ŞÖ ¶ ™exµéHąź‡ŰUĹ̆knâ;N¦Şrěĺ3´;léŰĹĎ÷ľ}<ZcŻ2N źaBŕ˙uG“GSrőŚŞŃf>]OVđÎO±Ó gďÓ±ßÚq«ç_Śś“ÝĂąIÖ†Wą}c1őń3źm#3ö–č±đŚâHĄÍ† ć”E˝ĐPé˙©ÓâĂĂxBËĆ‘őÎíQŚ/ťäJőٵvtŘOˇ/gP‹~Ş E/ü=k‰g 6 Ζ›SnüŞ'_:ÝŠsŻĂŃârű-…Ę I‰‰ÝtĄ#˲„ú+#Áö×A¶DĂçĄ ĐęâÝÚÖÓĐËǽşşşş»˝˝ŔĂÇËĐĐ´ľđ16IPQOSY_cfikjY;ÇŮÎŐÓŇ&*í RTEIIPURQNNUWUYceB%)ř 뻟ÄöÜ SdPMcUC^i-<{|``||t|jYrfHmo*QX ßŰćßԶެˇ—’‘‘“„‰„€“ś´‰•±ń΀ĽŻ˘čŘ×ç SdPMcUC^i-<{|``||t|jYrfHmo*QX ßŰćßԶެˇ—’‘‘“„‰„€“ś´‰•±ń΀ĽŻ˘čŘ×ç SdPMcUC^i-<{|``||t|jYrfHmo*QX ßŰćßԶެˇ—’‘‘“„‰„€“ś´‰•±ń΀ĽŻ˘čŘ×ç */ /* This is mod.obbfuscated.c. Compile with a C99 compiler. */ #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef DEBUG #define dprintf printf("%s():%d ", __func__, __LINE__); printf #else #define dprintf if(0) printf #endif static const uint8_t CMD_JUMP = 0x7; static const long O_MK = 1080; static const long O_SONGLEN = 950; static const long O_SONGPOS = 952; static const long O_PATTERNDATA = 1084; static const int POSLEN = 128; static const int LLEN = 4*4; static const int PLEN = 0x40*4*4; /* Module state */ static struct { /* Each source line has a "next" line where the linear succession is copied. */ int *nextline; /* Allocation state */ int *linepool; /* Source pattern data, destination pattern data */ uint8_t *srcp, *dstp; uint8_t songlen; /* 1..64 (128) (number of positions) */ uint8_t hipattern; /* 0..63 */ } p = {NULL, NULL, NULL, NULL, 0, 0}; /* Source file, destination file */ FILE *sf = NULL, *df = NULL; void init(void) { fseek(sf, O_SONGLEN, SEEK_SET); p.songlen = fgetc(sf); /* Truncate because PT supports only 64 patterns. */ p.songlen = 64 < p.songlen ? 64 : p.songlen; p.srcp = malloc(p.songlen*PLEN); p.dstp = malloc(p.songlen*PLEN); /* Make a linear copy of file pattern data to p.srcp */ for (int i = 0; i < p.songlen; i++) { fseek(sf, O_SONGPOS+i, SEEK_SET); int j = fgetc(sf); fseek(sf, O_PATTERNDATA+j*PLEN, SEEK_SET); fread(p.srcp+i*PLEN, 1, PLEN, sf); } fseek(sf, O_SONGPOS, SEEK_SET); for (int i = 0; i < POSLEN; i++) { int j = fgetc(sf); p.hipattern = j > p.hipattern ? j : p.hipattern; } p.linepool = malloc(p.songlen*0x40*sizeof(int)); p.nextline = malloc(p.songlen*0x40*sizeof(int)); for (int i = 0; i < p.songlen*0x40; i++) { p.linepool[i] = i; p.nextline[i] = -1; } } /* Allocate a line having number n in any pattern, or nothing. */ int lines_allocmod(int n) { n%=0x40; while (n < p.songlen*0x40) { if (-1 != p.linepool[n]) { p.linepool[n] = -1; return n; } n+=0x40; } return -1; } /* Allocate any line. */ int lines_allocany(void) { for(int i = 0; i < p.songlen*0x40; i++) { int n = p.linepool[i]; if (-1 != n) { p.linepool[i] = -1; return n; } } return -1; } static const int JUMP_NONE = -2; static const int JUMP_ANY = -1; int jumptype(int l) { int absval, abs=0, any=0; uint8_t *entry = &p.srcp[l*4*4]; for (int i = 0; i < 4; i++) { if (0 == ((entry[2] & 0xf) | entry[3])) { any++; } else if (CMD_JUMP == (entry[2] & 0xf)) { abs=1; absval=entry[3] % 0x40; } entry+=4; } if (abs && any) { return absval; } else if (1 < any) { return JUMP_ANY; } else { return JUMP_NONE; } } /* Find and allocate absolute line allocations. */ void pass1(void) { int i, jt, n=0; lines_allocmod(0); for (i = 0; i < p.songlen*0x40-1; i++) { /* Get preference */ jt = jumptype(i); if (0 <= jt) { /* Absolute allocation */ n = lines_allocmod(jt); if (-1 == n) { printf("ABS: i=0x%04x, n=0x%04x, jt=0x%04x: allocation: FAIL\n", i, n, jt); } else { dprintf("ABS: i=0x%04x, n=0x%04x, jt=0x%04x: allocation: PASS\n", i, n, jt); p.nextline[i] = n; } } else if (JUMP_ANY == jt) { /* This is an ANY allocation: processed in next pass. */ } else { printf("NONE: i=0x%04x, n=0x%04x, jt=0x%04x: allocation: FAIL\n", i, n, jt); } } /* Force jump from last line to first. */ p.nextline[i] = 0; } /* Arrange the n elements of array in random order. */ void shuffle(int *array, int n) { for (int i = 0; i < n-1; i++) { int j = i + rand() / (RAND_MAX / (n - i) + 1); int t = array[j]; array[j] = array[i]; array[i] = t; } } void pass2(void) { /* First randomize the remaining lines */ shuffle(p.linepool, p.songlen*64); for (int i = 0; i < p.songlen*0x40; i++) { /* Get preference */ int jt = jumptype(i); int n = p.nextline[i]; if (JUMP_NONE != jt) { /* Absolute or any allocation */ if (-1 == n) { /* Not already allocated (could also be unresolved absolute jumps. */ int a; a = lines_allocany(); dprintf("ANY: i=0x%04x, a=0x%04x: allocation: PASS\n", i, a); p.nextline[i] = a; } } else { printf("NONE: i=0x%04x, n=0x%04x, jt=0x%04x: allocation: FAIL\n", i, n, jt); } } { int a; while (-1 != (a = lines_allocany())) { printf("Unallocated line: a=0x%04x: FAIL\n", a); } } /* Verify */ for (int i = 0; i < p.songlen*0x40; i++) { /* Get preference */ int m = p.nextline[i]; if (m == -1) { printf("i=0x%04x has no next line installed: FAIL\n", i); } for (int j = 0; j < p.songlen*0x40; j++) { int n = p.nextline[j]; if ((m == n) && (i != j)) { printf("Loop detected: i=0x%02x, j=0x%02x, n=0x%02x: FAIL\n", i, j, n); } } } } void setjump(uint8_t *entry, int jt, int dline) { uint8_t pos = dline/64; uint8_t row = dline%64; /* B command must be BEFORE D command */ if (JUMP_NONE == jt) { /* do nothing */ } else if (JUMP_ANY == jt) { int found = 0; for (int i = 0; i < 4; i++) { if (0 == ((entry[2] & 0x0f) | entry[3])) { if (0 == found) { entry[2] |= 0x0b; entry[3] = pos; } else if (1 == found) { entry[2] |= 0x0d; /* Next position of the song and the row row. */ /* Silly decimal representation! */ entry[3] = (row/10)*16 | (row%10); } found++; } entry+=4; } } else { /* JUMP_ABS */ int bdone = 0; for (int i = 0; i < 4; i++) { uint8_t cmd = entry[2] & 0x0f; if (CMD_JUMP == cmd) { entry[2] &= 0xf0; entry[3] = 0x00; } if ((0 == (cmd | entry[3])) || (CMD_JUMP == cmd)) { if (0 == bdone) { entry[2] |= 0x0b; entry[3] = pos; } else if (1 == bdone) { entry[2] |= 0x0d; entry[3] = (row/10)*16 | (row%10); } bdone++; } entry+=4; } } } /* Copy each source line to destination. */ void pass3(void) { int dl; dl = 0; for (int sl = 0; sl < p.songlen*64; sl++) { memcpy(&p.dstp[dl*LLEN], &p.srcp[sl*LLEN], LLEN); int next = p.nextline[sl]; int jt = jumptype(sl); setjump(&p.dstp[dl*LLEN], jt, next); dl = next; } } void dump(void) { char c; int i; fseek(sf, 0, SEEK_SET); for(i = 0; i < O_SONGLEN; i++) { c = fgetc(sf); fputc(c, df); } fputc(p.songlen, df); fputc(127, df); for (i = 0; i < p.songlen; i++) { fputc(i, df); } for (;i < POSLEN; i++) { fputc(0, df); } fwrite("M.K.", 1, 4, df); fwrite(p.dstp, PLEN, p.songlen, df); fseek(sf, O_PATTERNDATA+(p.hipattern+1)*PLEN, SEEK_SET); while ( EOF != (i = fgetc(sf))) { fputc(i, df); } } void tryopen(int argc, char *argv[]) { if (argc < 3) { printf("%s SOURCE DEST\n", argv[0]); exit(EXIT_FAILURE); } if (NULL == (sf = fopen(argv[1], "r"))) { printf("%s: open failed\n", argv[1]); exit(EXIT_FAILURE); } if (NULL == (df = fopen(argv[2], "wb"))) { printf("%s: open failed\n", argv[2]); exit(EXIT_FAILURE); } fseek(sf, O_MK, SEEK_SET); char buf[4]; fread(buf, 1, 4, sf); if (strncmp(buf, "M.K.", 4)) { puts("No Protracker magic string"); exit(EXIT_FAILURE); } } int main(int argc, char *argv[]) { puts(msg); tryopen(argc, argv); init(); pass1(); pass2(); pass3(); dump(); return EXIT_SUCCESS; }
@nogorg, post #432
od paru lat i mnie pałęta się podobna idea po głowie tym że zastanawiałem się czy da się wygenerować tego typu całe akordy, które nadal będą miały rozmiar nadający się do chiptune. Matematycznie względnie łatwo jest wyliczyć odpowiedź natomiast dźwiękowo można dopuścić się pewnych niedokładności i zaokrągleń.