| Разработка и ромхакинг > Ромхакинг и программирование |
| Алгоритмы сжатия информации |
| (1/3) > >> |
| sergi:
Занимаюсь написанием своих программ под приставочное железо, но столкнулся с проблемой имеется пространство в 1 мегабайт, а нужно уместить данных на 2 мегабайта но данные имеют свойство повторяться или быть очень похожими вот пример: 00003236223642465246223762371247 52471246424713477247723672370347 00005246334652471347334772472348 00000000000000000000000000000000 00003346524742473347134723480000 00000000000000000000000000000000 00003346134633471347234723486348 00000000000000000000000000000000 00000347134633462347134733472348 72476348535813580000000000000000 00002347334633472348035863483348 53584358135800000000000000000000 00003346234772465246334762474247 03472348634873470358435853570000 00005246134603464246424703472347 33477347000000000000000000000000 да видно что 0 повторяются, но избавление от них в общей массе дает процентов 20% сжатия, нужно 50% может кто знает и посоветует метод и алгоритм его реализации? желательно для M68K ну в сеге там разные бывают алгоритмы сжатия графики - вот ченить из этой серии бы мне :? |
| Йобан Матич:
Можно скомбинировать пару методов: нули пожать с помощью RLE, остальное хаффманом или LZx. |
| sergi:
А ченить типа примера как это реализовать нет? :? Вот еще такие данные 04000401040204030404040504060407 04080409040A040B040C040D040E040F 04100411041204130414041504160417 04180419041A041B041C041D041E041F 04200421042204230424042504260427 04280429042A042B042C042D042E042F 04300431043204330434043504360437 04380439043A043B043C043D043E043F 04400441044204430444044504460447 04480449044A044B044C044D044E044F 04500451045204530454045504560457 04580459045A045B045C045D045E045F 04600461046204630464046504660467 04680469046A046B046C046D046E046F 04700471047204730474047504760477 04780479047A047B047C047D047E047F 04800481048204830484048504860487 04880489048A048B048C048D048E048F 04900491049204930494049504960497 04980499049A049B049C049D049E049F 04A004A104A204A304A404A504A604A7 04A804A904AA04AB04AC04AD04AE04AF 04B004B104B204B304B404B504B604B7 04B804B904BA04BB04BC04BD04BE04BF 04C004C104C204C304C404C504C604C7 04C804C904CA04CB04CC04CD04CE04CF 04D004D104D204D304D404D504D604D7 04D804D904DA04DB04DC04DD04DE04DF 04E004E104E204E304E404E504E604E7 04E804E904EA04EB04EC04ED04EE04EF 04F004F104F204F304F404F504F604F7 04F804F904FA04FB00 |
| lupus:
http://shedevr.org.ru/forum/viewtopic.php?t=3590 - хорошая дока по алгоритмам |
| Йобан Матич:
http://ru.wikipedia.org/wiki/Код_Хаффмана http://ru.wikipedia.org/wiki/LZW =) sergi, тебе в ROM или в RAM надо затолкать 2Мб ? |
| sergi:
Ну это из ром брать и в рам засовывать нужно кусками по 8 килобайт т.е. в реале каждые 8 килобайт пожать до 4-х просто в роме места на метр, а данных нужно метра на 2 засунуть незапакованных, но есть несколько тысяч свободных тактов процессора, поэтому ищу распаковщик ибо запихать без запаковки очень сложно и много места потребует |
| Йобан Матич:
sergi, Почему именно метр, хак делаешь? Если SEGA, то может поковыряешь "Street Fighter" пятиметровый, может получится побольше места раздобыть =) |
| sergi:
Это не для сеги и не хак делаю, свой код пишу просто с 0, ну подспутно изучаю как там что пишу в асме цифрами в хексе, поэтому конечно бы всего этого исходник иметь в асме ну в общем я почитаю конечно, но может кто уже реально с этим сталкивался и есть типа опытных образцов? в стрит файтере маппер стоит, перелопатьте ром в обычных но без маппера и без некоторых бойцов и все будет работать ;) хотя игра чистый отстой SF2 Turbo на SNES лучше :-\ |
| HoRRoR:
Используй LZ + Huffman сверху. Для случаев, когда мало повторяющихся цепочек - просто хаффман. --- Цитата ---пишу в асме цифрами в хексе --- Конец цитаты --- Сам себе компилятор, что ли? о_О |
| sergi:
Так мне проще понимать суть вещей я пытался конечно с компиляторами возиться, но получалось так что то что я хотел он не всегда видел а самому проще, я еще и дизасемблер заодно просто код перекидываю из цифр в буквы мнемоники даже свои сделал, ну точнее они немного полнее описывают что куда и откуда ложиться есть еще сводные таблицы опкодов для M68K и Z80 собственно я думал уже над тем что врядли в приставках и играх используют все комманды процессора, с учетом того что основное это взять чтото и положить тудато ну прибавить, отнять - вот основные коды и помогают, остальные просто не нужны, по крайней мере мне в общем нужно попробовать конечно мне сделать эти типы сжатия одно только еще интересно что zip жмет как раз гдето в 2 раза это дело, поэтому есть к чему стремиться ^_^ |
| HoRRoR:
Чувак, это путь в могилу. Разберись уж лучше с копмиляторами. И не надо придумывать своих мнемоник - те, что есть, не зря такие, они были очень хорошо продуманы. |
| Smoke:
sergi, RNC не пробовал? |
| GManiac:
Хотел сказать RNC, пока читал тему, но полдня не мог зайти на форум :( sergi, посмотри RNC, в инете есть паковщик под PC и процедуры распаковки для разных процев, т.ч. для 68-ки - в играх он и используется. Т.к. есть и паковщик и процедуры распаковки, тебе в общем-то не надо будет копать алгоритм. Я разбирал процедуру распаковки и выяснил, что RNC - это LZ + Хаффман для кодирования ДЛИН указателей. Он достаточно быстрый. Если им не сможешь запихнуть свои 2 метра в 1, то с более сильными алгоритмами 68K вряд ли справится. |
| sergi:
В общем принцип любого сжатия информации заключается в том, чтобы повторяющиеся данные, заменить меньшим числом данных, а также данные встречающиеся по определенному закону тоже заменить на некоторое количество данных описывающих этот закон проблема в том что если буквально это будут разнобойные тупо разные байты идущие в разных порядках и не будут повторятся, то сжатия не будет никакого - некуда просто |
| HoRRoR:
--- Цитата: sergi от 29 Апрель 2009, 18:46:20 ---проблема в том что если буквально это будут разнобойные тупо разные байты идущие в разных порядках и не будут повторятся, то сжатия не будет никакого - некуда просто --- Конец цитаты --- Не все данные имеет смысл сжимать. |
| sergi:
Ну эти смысл конечно есть и нужно в общем такой вариант есть и крутится в голове у меня не более 512 разновидноестей 2-х байтовых цепочек на 8 килобайт поэтому обозначу каждую не 16 битами как они есть а всего лишь 9-ю 0x0000 обозначу как 000000000b и тогда буду восстанавливать данные так если 000000000b значит это начало, далее все как обычно но в соответствии с таблицей соответствия и последние нули учитывать не буду, т.к. они по умолчанию в памяти будут, а новые 9 нулей обозначат новую линию данных - там в общем по 16 2-х байтовых цепочек на линию таким образом получится что освобождение от нулей даст процентов 20% сжатия а 9 бит вместо 16 дадут соответственно гдето около 44% сжатия, получится в лучшем случае даже 64% на выходе, в худшем 44% так будет в среднем 50% от исходного кода не знаю как это будет называться. но чегото типа RLE+LZ77 :? В принципе в начале каждой такой сборки по 8 килобайт, можно еще писать цифру допустим 9 значит 9 бит на сцепку по 2 байта ну и так от 0 до 16 т.е. 16 это и так понятно - оно и есть, можно не корячится зато если допустим там только 0 и несколько значений всего, допустим 4 или 5, то соответственно можно и 2-3 бита на сцепку по 2 байта взять и указать в начале байтом т.е. соответственно 02 или 03 если всего 256 оригинальных значений по 2 байта, то вообще 1 байтом менять, получится сжатие в 2 раза сместа в общем я думаю если кому нужно то соответственно понятно расписано, хотя все это и так знают В начале этих 8 килобайт должна быть такая инфа: 1 байт - сколько бит на сцепку по 2 байта 2 байта - сколько вообще оригинальных сцепок сами сцепки по порядку начиная с 0000 обозначенная 000000000b и далее сколько их там будет по возрастанию( это будет в максимуме 512 по 2 байта = 1 килобайт) а далее уже ужатая инфа по 9 бит, размер собственно четко обозначен |
| GManiac:
Ну у тебя есть 9 бит вместо 16, а нужно 8, т.е. ужимать нужно не очень сильно. Отсюда и надо плясать. Подойдёт нечто Хаффманоподобное и таблица 512*2 байта. |
| sergi:
Ну сложнее алгоритм пока мне не нужно, а то т.к. в асме для M68K пишу, сложнее мне сложно будет придумать и сделать, тут вроде можно просто через память и регистры перекинуть, ну по сдвигать придется конечно если брать по 72 байта чтоли получится брать нужно будет, ну там посмотрим на результат и на скорость выполнения его сложнее и компактнее наверняка можно, но нужно ли еще вопрос :-\ |
| GManiac:
Но ужимать всё равно придётся, т.к.9 бит больше 8. Короче, давай пример 8-кбайтового куска и таблицу 512*2, посмотрим. |
| sergi:
Ну больше, так больше 9 бит может быть кратным 8 при числе 72 т.е. берем 9 байт и там будет 8 наших уникальных идетнификаторов сцепок т.е. брать нужно по 9 байт из этих 8 килобайт последовательно и вытягивать потихоньку Вот сами 8 килобайт, ну там немножко меньше даже выборки уникальных пока нет - позже сделаю 00002237623752471347424733477237 73486348034804595358234800000000 00000348234833471347634873480000 00000000000000000000000000000000 00003347134723487348000000000000 00000000000000000000000000000000 00003347234863487348535843590000 00000000000000000000000000000000 00002348634833487348535843590000 00000000000000000000000000000000 00002348634873485358435904590000 00000000000000000000000000000000 00003347234843586348535843590000 00000000000000000000000000000000 00002347334633472348634843585357 53580000000000000000000000000000 00001346334652462347334773475357 43580000000000000000000000000000 00005246134633464246234733470000 00000000000000000000000000000000 00005246134633462347634700000000 00000000000000000000000000000000 00004246524613462347000000000000 00000000000000000000000000000000 00004246134633462347000000000000 00000000000000000000000000000000 00000246424652461346334623470000 00000000000000000000000000000000 00004246524613463346234700000000 00000000000000000000000000000000 00004246524672461346334623470000 00000000000000000000000000000000 00005246724662473346234733470000 00000000000000000000000000000000 00007246334623473347135753570000 00000000000000000000000000000000 0000734903484249345A22382127156B 01366137502510244025602532367136 00003347234863487348334863492349 00000000000000000000000000000000 00007348634943595359535800000000 00000000000000000000000000000000 00006349045943595359000000000000 00000000000000000000000000000000 00004359535973590000000000000000 00000000000000000000000000000000 00004359535973593459245A00000000 00000000000000000000000000000000 0000435973595359635A000000000000 00000000000000000000000000000000 000043595358535973596359635A436A 00000000000000000000000000000000 00005358435863484359635973590000 00000000000000000000000000000000 00003347234713467347634753574358 53584359635900000000000000000000 00006347034723477347535743586348 23480000000000000000000000000000 00002347034733477347535743582348 00000000000000000000000000000000 00002347334773476348000000000000 00000000000000000000000000000000 00002347334773476348435800000000 00000000000000000000000000000000 00002347334763480000000000000000 00000000000000000000000000000000 00002347334723487347634800000000 00000000000000000000000000000000 00003347734723486348000000000000 00000000000000000000000000000000 00007347634843582348035853587348 00000000000000000000000000000000 0000312432366349535A546B60145135 03470348634832375248512322384248 000053597348535A1347323622365246 72485247223702364136424723473347 00006349045A23482237413661253124 21254135234771240236634713465135 00005359146A546A446B256B646B345A 356B645A046B33484248134803594359 00007359635A735A245A345A146A046A 046B446B646B546A245B535900000000 0000245A156A746A356A756A146A546A 557A457B067B267B446B256B767B568B 0000345A356A156A746A557A756A256A 067B457B546A667B467B167A178B767B 0000635A245A046A146A546A00000000 00000000000000000000000000000000 0000635A245A046A146A000000000000 00000000000000000000000000000000 0000735963594359635A3459245A046A 14695369436A00000000000000000000 00004359035843586359045953587359 34592459245A1469046A436A5369635A 00006348435873475358145804594359 24593459635973587359245A046A635A 00004358634823485358435963592459 34590000000000000000000000000000 00006348435954691469446A746A356A 646A057B646B157A346A447B246B2459 000023486359646A356A746A446A646B 346A146A046A436A23590359635A5369 00002348535813583459245904594359 256A446A54691469646A63597359046A 00004358634853584359000000000000 00000000000000000000000000000000 00004358535800000000000000000000 00000000000000000000000000000000 00004024123503471457545843481236 6349056A4248056B345A056C557C345B 00007236323571245247134853471459 756B167C645B3349635B735A535A446B 00007246223602353336634763482449 045A61265247745B546A156C457C756B 00007236134773485136513553573459 546A446B156A245A056B745A356A7459 000003584359245A046B424722364135 62352224023461240346634724585468 0000546A667A188A699C6AAC589C6AAD 5BBC589B535852477236513573477458 0000799B478B557A6AAD245973475346 545726694236155873485247067C778C 0000256A046A167A277B535954586459 25596359435903592349145873483348 0000046A63593348724722373569356A 457B557B656B156A256B056B645B056A 0000046A046953583347124771361135 31245246323505691457356A157B046B 00004247735814691135312412341235 42450457546A53591569546B656B635B 00003459035923480247256A446B157B 557B657C057B256C057C457C735A345A 0000735953586248346A024741366136 013631257469446914685469256B057B 00006359746A536A436A046A346A146A 635A245A546974596348334823486248 0000046A635903584358234833475357 23471357634753585246134603474247 00006359035823474246223632356246 52457235223523460346134662350235 00005358735933470247446A51352236 61363235623572355246623622350235 00005358724773473346134663475246 23474246623672350346034742473235 00002349245A3237524742482348435A 22370247424713473347034872370347 0000535A446B256C5359334873593459 72482349435953587348234863490348 0000067D256C245B245A5359635A2349 0359435A435973593459634973485358 0000546B146A345A546A536A046A635A 436A245A735953593459745A4359645A 000034592348223741363124156A6236 03470458167B567C356B345A468C146A 0000256C377B078D689E399C7AAC5BBC 2AAE1BBD1CBB5CBA089B49AB2BAB099B 0000777B177A788B59AC6AAD3A9D199D 199C0BBE1CBC7CBB5CBA6DBB1DBA4DBB 00005AAB699B788A677A567A457B646A 0BBC478B1CBB5AAA457A499A5CBA7BAA 0000156A546A146A356A746A046A0000 00000000000000000000000000000000 0000546A73595369436A746B157B046A 146A746A245A34594359535853592348 0000057B057C546A635A435923486248 43583347724703581347546923470347 0000635A446A63597248334853582459 23484359035833474358424713472237 0000746A245A53583347723633467235 14576235723452343235023522351234 00003347424642456235223532347234 22340234423412345234423502355235 00001346234752466236000000000000 00000000000000000000000000000000 00001346034642465245723562352235 02356236233600000000000000000000 00007234723513465246234753573347 62364246323552451234323402355235 00003346524542351457745862343223 22236123512271223222023412334122 00003236723652464247034713472236 62375135023671251235623652470000 00000348034703461235012430133012 00121011001151343011101070112000 00007348712413460013101120013001 00122000300072351123011212236000 000053581459345A7347134662362347 03473347123542460235723563477124 0000245A046A446A646A356A746A546A 645A3459535943590459145900000000 0000367A178A299B2AAC5BBB4CBB288A 4AAB656A7679646A76697779398A245A 00001DBA3CAA1CBB3B9A098A599A5AAB 47797669077A477A677A287A088A5779 00005CBA3B9A0A9A398A777A666A6BAB 5889656A467B256A446A54695779056A 0000256A056A446A046A546A146A356A 756A245A746A646B7359635A00000000 0000245A045863473348623762366235 02342459012371365135724723462223 00003346734772356236123462351345 41340234222452346124712342343223 00005357134622361345223502344123 51233223222472235233711231121223 00000346623502340235123452344234 42357234222432237123123352337223 00005234723503461346334652454246 22246124322371235123123402346224 00000346723562356236223552354235 52340235123432242224023442343223 00006236223541340234123342345233 52344235623522246224322302351234 00007234523412340234423562354234 22246224333432232335000000000000 00001345723452332223322251224122 12331222023372334233112152344234 00002237034713473347734723480236 22367236623652464246123532354247 00004247023501236012101000102000 63473124623630004246001200111011 00002000600040110112311261132112 41234012211351233000122332230223 00004124033553467347535813454458 53597459546A02357236524642470236 000043595359145934590459245A546A 446A645A6349046A0000000000000000 00007459645A446A056A256A756A3459 54690459245943596359535814580000 0000366A167A656A756A266A067A056A 645A446A745934592459045914586459 0000167A056A34595358734742476236 41356125123402354346712413450346 0000546A345973587247524661361134 63482235734763470235723514576458 00007358135762466235023422234135 21240224233614561457045774583459 00003223523433351346734714584359 63597359345904595458245914596459 00000234222321122335734604582459 14590459435923366236645973596359 00001222722371235234211224473335 25586346044674583557745724461445 00004234712361234123222351226112 21121222022341227112733463354345 00002224423562350223412371122223 51223112611333346335523423354345 00000235423422235122612341237123 53452335434613455233233433345344 00003223523423353335434653466347 03462446344654564457545764582447 00004235034513455245222402343223 12337123622422230223434652337223 00004135623662357123512270122001 30001012300220020001300120001000 00000234412360120011200130002000 10110111211111107000600040111000 00002000600030002112222303344345 61136335534523352113033573352224 00004235423613461347334763487347 04472447534603470234222461247123 000033480459446A1347535713465245 13457235623522350346524602353346 00004359134733472348634873474358 23475358145813463346045803475246 00001458245904593459535863487348 33474358034773470000000000000000 00000458134622366347645904592459 14593459635973595359435933472348 00001346734704587458645914583458 24593459635973594359535804594358 00003459245963597358435953584358 63485357734700000000000000000000 00003459735963592459435953581458 43585357734700000000000000000000 00002459635943595358435800000000 00000000000000000000000000000000 00003458344753460569745954691569 23483347723662360236123522364246 00006336233524473558023414580347 62360235234733465246424632352235 00004234412342352336334604571457 03474135234751347124734661240124 00000346523463471235712404587458 24586458546834576124513471235123 00006236034714581569034822351234 02346235222452347234233562244234 00001457134672351234023432237234 52344234334771242224534533343224 00002000600070000000000000000000 00000000000000000000000000000000 00006000700050104011000000000000 00000000000000000000000000000000 00006000111141237223423452343000 52331334233563357334022320007112 00004124123472351346244753454458 32253112401221135011211241230123 00004236134614573558145813472225 61254125712402353224512462354235 00000347045862360569445943480235 12346124222571246125623541240124 00002559145853476236612571246124 02352225623512345346134633464246 00000347634814575357623612350235 32352236424603461346334623476347 00007347634804584358634714575357 03471346723623472236023662365246 00007347535714576347045823470347 13466236223602367236524600000000 00006347734743470347534613460346 23360000000000000000000000000000 00002347424662363235223502355245 41355134312403467235234603471346 00000346023562351235222512347124 61256124523563474347233672356236 00005134723513463346234752464246 62365245623542457123513312336123 00000234023541241123512301240346 73461345424613463346434652453235 00000346623512344134712361244235 72340234023512335133322442343223 00002224423502357234623533357235 23350346434613454123612312335233 00004234712323351345534503456235 33356124512322244123012332236123 00002000600070003000501000000000 00000000000000000000000000000000 00006000700050101110011140110000 00000000000000000000000000000000 00005010700011100000000000000000 00000000000000000000000000000000 00004011211222235234333562360346 13464347233613450123200121136000 00005346434763471346623623360346 00000000000000000000000000000000 00001346634773470347723603464246 62360000000000000000000000000000 00006347034773471346723662364246 72350346000000000000000000000000 00006347734673470347134643470000 00000000000000000000000000000000 00002347634773470000000000000000 00000000000000000000000000000000 00006347034713463346034673460000 00000000000000000000000000000000 00000346623623361346000000000000 00000000000000000000000000000000 00005245723503464246623613466235 22351345123442453234000000000000 00005245023541346124222402347123 61231233513332232223523342346234 00001234523472346235723542350235 33351345233532242224612471235123 00005234123442356235723562360000 00000000000000000000000000000000 00001234623542352235424552453335 72351345034623460235623623364246 00005234123352451346045714576458 74580458535724587347334712355135 00005234612452337235534604570568 04580569245833475246723641356125 00005010700001114011211100000000 00000000000000000000000000000000 00007000401101115010111060011111 31117111611270010000000000000000 00005010401101117000000000000000 00000000000000000000000000000000 00005010501171123223423412236224 41233112600011113111211230001010 00001345134652347123134731122446 14585457244760023447045873485235 00001346734714587348333712360236 12355235023512342235623572357124 00000346145703477458145854586237 23371347734742363225023612356347 00000346134662363336233653466347 24473447434772363346034773462347 00001346234763473346034642466236 72355346734600000000000000000000 00005346134633460346424662367235 52452235623513450000000000000000 00001346034642466236723552351345 02356235423533350000000000000000 00007235723443462224412321124012 01236012501110117012001200111012 00006235222403464123211200111010 40110010200050105011700030006000 00003223512260127001200130001010 50102000700060004010111021115121 00004234233562362113300171230235 01112001101121126000300020001010 00007235723401231011012232230011 20013000300100122000700060005010 00000246623561242113712302344012 22245011311221125122322342342223 00007235123411237012123371225011 70114011211131114122512150101121 00006001211231115122200171123000 31125000200070005010501111114122 00002112111150114011600101117111 31116112711270010112000000000000 00000111401160011111311171114122 61120222000000000000000000000000 00006001401060003111512271234234 52345345233524463223333501234346 00006112022322241334023533357346 73470123145853587348045943594358 00007123712412350347435853576348 23360346045853587347145714580459 00004358634833475358000000000000 00000000000000000000000000000000 00001346034733477347234753574247 72364358524663485358000000000000 00006347734653461346623672353235 03463346123502354246734753573347 00003346134673466347734753571357 00000000000000000000000000000000 00003346134673465346634703477347 53574358000000000000000000000000 00000346723451225011600071233000 61110347722204444345633324470457 00006000200001111221711114430333 61110444633353432333733313326222 00006000122114430333011121112000 63336111044471117333722211107000 00006000700020005010000000000000 00000000000000000000000000000000 00006000200070006001000000000000 00000000000000000000000000000000 00004122222342340334523472343234 62354235723533356224222411115011 00004234412321120333522260010444 43440111633474455344545514442434 00002000300061125122711201123112 11113111401271112112501141227001 00000112401160015122412302231222 70017112311221121111111261134012 00002112401170006001011112220223 31117112611211115122501141220112 00002111401261243335734641236112 01235234023542347234711233340223 00003347535813461235323562360347 23475135524642463346634772350346 00005358435963484358734753573347 23476347034700000000000000000000 00005358145804584358634873470000 00000000000000000000000000000000 00006348435853577347535800000000 00000000000000000000000000000000 00007347535743580000000000000000 00000000000000000000000000000000 00007347634763485357000000000000 00000000000000000000000000000000 00007347435853576347234713460347 33467346000000000000000000000000 00002447534542342112401130006235 60002223022232220111111050104010 00007000600011100111000000000000 00000000000000000000000000000000 00007000111021116000611101110000 00000000000000000000000000000000 00005010700011107111512121110111 61116000401131110000000000000000 00006000200050107000111001112111 71116111022251212222401141226001 00002001322372343335134631123346 23466346711200125012001130015011 00002224412323341444232302220333 62237222611241227111233503455222 00002000300040113111611211115011 60012112700001127001100020010000 00006112501170014012611360010223 60024123122320013223722301127112 00000223311261120112111121123111 40115011700160012001401271125122 00004011611232233334333534456346 03464346534673451345734672352336 00003335723503465346334613466235 42466236423552450235134543460000 00001346034763473346734603460000 00000000000000000000000000000000 00007347334763472347000000000000 00000000000000000000000000000000 00005357734763470000000000000000 00000000000000000000000000000000 00004358734753576347234743571457 00000000000000000000000000000000 00007347344743470347634713467236 62360346723532350235334612345134 00005357034703461234112310110345 12330011222310105233712232230233 00005346034541236112011102341011 60000011300020001010001040100110 00000111600020005121300032221222 02225222722261126223222341220223 00003000600031112000022262232223 03334344333363344455744413334233 00002111711101115010611151211110 02222222000000000000000000000000 00007000600050101110000000000000 00000000000000000000000000000000 00001110111151225233300060002001 23343334534403342335523442341233 00005233512271115222722233342335 71235234733311100444700061110111 |
| Навигация |
| Главная страница сообщений |
| Следующая страница |