| Разработка и ромхакинг > Инструменты |
| [NES/Дэнди/SMD] ROM glitcher - сделай себе хак не зная ромхакинг |
| << < (4/7) > >> |
| Беларус:
Не получилось повторить. У тебя сохранился ром или изменённые адреса? |
| AnyZero:
Инвертер, 176-179 примерно шаги (всегда выбирай баг мешает узнать) это эффект от столкновения. |
| Беларус:
На 179-ом шагу (просто нажал 1 столько раз) получил похожий глюк - некоторые враги превращаются в Люка и управляются игроком, т.е. можно попытаться собрать так группу как у тебя в видео. Если это оно, то Инвертер успешно находит адрес в роме для этого глюка/хака - 132B4. Ты, случайно, не продолжал нажимать 1 до конца? Хотя, в этом случае выскочило бы сообщение, что нужное не найдено... :neznayu: А ещё нашёлся графический баг в программе. Она не рассчитана на то, что какой-то сумасшедший будет нажимать 1 сотни раз непрерывно. И когда нажимаешь 3, отображение количества инструкций резко уменьшается на порядки, и в итоге последние цифры остаются на экране :) Баг мелкий и несуразный, поэтому обновлённый исходник не буду уж выкладывать. Но терпения тебе не занимать, нашёл забавную фишку в игре :thumbup: Сложно в это играть, т.к. среди врагов возникает копия Люка и враги начинают его убивать, игра заканчивается. Добавлено позже: Ха-ха, на 180-ом шаге 1 враги не атакуют игрока, просто бегают туда-сюда. |
| AnyZero:
Жаль что нет времени описывать найденное глитчером. Теперь это моя самая любимая программа по открыванию менюшек в играх. Из последнего это Sonic 3 был. |
| Беларус:
Да уж, очень жаль - там столько забавного вылезает иногда :lol: Ну ты бы мог хотя бы на видео всё это записывать - такие каналы встречал на Ютюбе. В итоге ты пользуешься старой версией Инвертора или последней? И что за менюшки ищешь? Секретные? |
| AnyZero:
--- Цитата: perfect_genius от 17 Июль 2025, 23:19:16 ---И что за менюшки ищешь? Секретные? --- Конец цитаты --- Сейчас пользуюсь последней версией, вроде багов больше не вылезало. Ищу меню и всякое интересное, в ZPF читерские режимы в районе 80 шагов. Из последнего интересного Paprium, в районе 90 шагов секретные персонажи в любом режиме (на скрине), неуязвимость в районе 30 была. Папка сохранёнки от retroarch в комплекте, нажать f4 |
| Беларус:
А сохранение для чего? --- Цитата: AnyZero от 26 Июль 2025, 17:30:25 ---секретные персонажи в любом режиме --- Конец цитаты --- В теме игры пишут, что персонажи только в Оригинале, а в Аркаде нет. |
| AnyZero:
--- Цитата: perfect_genius от 27 Июль 2025, 16:34:35 ---А сохранение для чего? В теме игры пишут, что персонажи только в Оригинале, а в Аркаде нет. --- Конец цитаты --- Оставлю 2 варианта вот таких. 1) paprium aio normal - доступны все пути в Arcade, все уровни сложности, в Arcade доступны 7 персонажей на выбор, аудиопрогрыватель в меню, режим Arena, в режиме Original стандартные игроки Tug, Alex, Dice. 2) paprium aio.secret char - всё тоже самое что выше, но в режиме Original секретные персонажи Baba, L.ektra, Spinal, Rondo. |
| Беларус:
Подумал "ну нифига ты заморочился", а там, чтобы всё это открыть, отвечает лишь пара параметров :lol: Если всё это нормальным способом открывается только отдельно, то эти параметры могли остаться от отладки. Раз ты очень занятой, то за тебя закинул это в CHEATS & MODS и в тему игры. |
| AnyZero:
--- Цитата: perfect_genius от 28 Июль 2025, 19:45:51 ---Подумал "ну нифига ты заморочился", а там, чтобы всё это открыть, отвечает лишь пара параметров :lol: Если всё это нормальным способом открывается только отдельно, то эти параметры могли остаться от отладки. Раз ты очень занятой, то за тебя закинул это в CHEATS & MODS и в тему игры. --- Конец цитаты --- Там на всё флаг вкл/выкл есть. Это я позже нашёл, что можно всё сразу сделать в одном месте, когда искал soundtest. Ещё есть режим Ванпанчмена, вынос с 1 удара, но он с глюком, игра вылетает при подходе к боссу и включение бесконечных continue. |
| Беларус:
--- Цитата: AnyZero от 29 Июль 2025, 11:43:11 ---вылетает при подходе к боссу --- Конец цитаты --- Тут два варианта: искать другую инструкцию Ванпанчмэна, которая не ломает боссов, или же вторую инструкцию, которая устраняет этот баг. В FIFA есть баг с мячом, и его удалось исправить Глитчером :biggrin: Чел, который постоянно играет в неё, других каких-то проблем из-за этого изменения не нашёл. |
| Werton:
В игре Batman Forever есть предположительно баг, там "дизи" анимация врагов после стана от некоторых гаджетов ускоренная. Сможет такое пофиксить, или не тот случай и можно не пытаться? |
| Беларус:
Может быть всё, что угодно - результаты не раз удивляли. Опиши, как быстрее увидеть эту анимацию, или сделай сохранение перед ней и я проверю. |
| Werton:
perfect_genius, попробовал, но на 457 шаге терпение у меня закончилось :) То что хотел добиться не получилось к сожалению. Что хотел. Вот такой прием (и не только он), должен станить врага вводя его в состояние "дизи". Но в мегадрайвовской версии (как я думаю) баг и анимация воспроизводится и закачивается очень быстро. Из-за чего все оржие, которое оказывает такой эффект бесполезно, т.к. оно не наносит урона, а станет врага на такой короткий период времени, что ударить его в этом состоянии невозможно, т.к. игрок попросту не успевает закончить свою анимацию приема. В Snes версии такого нет, и эта "дизи" анимация там играется медленнее и врагов можно успеть ударить. Слева Sega, справа Snes для сравнения (да анимация другая, в снес их просто меньше) Единственное, что мне удалось что-то близкое найти это шаг 136 - ускорение всей анимации у всех, и шаг 295 - бесконечная (хоть и ускоренная) "дизи" анимация. На всякий случай, если захочешь поковырять, то в архиве Ром на 457 шаге, сохранение и [поиск на паузе]. В сохранении прием нужно выполняться самому: вперед, вперед, назад + А |
| Беларус:
Не смог загрузить сохранение, а игру не знаю - фонарик недоступен с начала игры? У Робина нашёл бросок бэтаранга и какой-то бомбочки под ноги, и решил поменять их на фонарик в Переставлятеле. Ну и осмотрелся что есть рядом, может тебе будет интересно: Тут строка 489 - это то, что происходит при нажатии "вниз вперёд С" у Робина. В итоге тоже через Инвертер за 300 шагов не нашёл продления дезориентации. Тогда решил посмотреть анимации и нашёл массив указателей с поведением противников при воздействии на них: К указателю 18 игра обращается при применении фонарика на противнике. Можешь записать сюда 12-ый указатель. А указатель 8 у бомбочки Бэтмэна как раз вызывает похожую анимацию как на SNES-версии. Видимо, этот на этот указатель игра смотрит при комбинации "вниз вперёд С" у обоих персонажей. У Робина получилось так сделать, но не могу найти алгоритм. Сохранение для Переставлятеля: |
| Sharpnull:
--- Цитата: Werton от 13 Август 2025, 11:04:26 ---в мегадрайвовской версии (как я думаю) баг и анимация воспроизводится и закачивается очень быстро --- Конец цитаты --- Время оглушения (в кадрах) задаётся в A62E: move.w #$001E,$0058(A3), в роме изменить A630-A631 (сейчас 00 1E). --- Цитата: perfect_genius от 14 Август 2025, 01:37:14 ---фонарик недоступен с начала игры? --- Конец цитаты --- Для активации всех предметов $FFFBBF = 01 (или выбрать перед уровнем), Sonic Blast на кнопки Вперёд, Вперёд, Назад, A (руководство). UPD: Чтобы замедлить анимацию, можно было бы добавить инструкцию в A62E: move.w #$000x,$0014(A3), где x задаёт задержку в кадрах на один кадр анимации (сейчас 4), но сразу после этого кода выполняется общий для разных анимаций код move.w #$0004,$0014(A3), поэтому установить задержку сложнее. Для одного врага $0014(A3) будет адрес FFE61B. UPD2: В SNES версии оглушение длится 250 кадров во всех версиях, что ровно 5 секунд в (E) и 4.1(6) с в (U) и (J). |
| Werton:
--- Цитата: perfect_genius от 14 Август 2025, 01:37:14 ---К указателю 18 игра обращается при применении фонарика на противнике. Можешь записать сюда 12-ый указатель. А указатель 8 у бомбочки Бэтмэна как раз вызывает похожую анимацию как на SNES-версии. Видимо, этот на этот указатель игра смотрит при комбинации "вниз вперёд С" у обоих персонажей. У Робина получилось так сделать, но не могу найти алгоритм. Сохранение для Переставлятеля: --- Конец цитаты --- Спасибо, да тоже была мысль, что можно поменять воздействие от этого гаджета на оглушение от бомбы :) --- Цитата: Sharpnull от 14 Август 2025, 02:46:58 ---Время оглушения (в кадрах) задаётся в A62E: move.w #$001E,$0058(A3), в роме изменить A630-A631 (сейчас 00 1E).Для активации всех предметов $FFFBBF = 01 (или выбрать перед уровнем), Sonic Blast на кнопки Вперёд, Вперёд, Назад, A (руководство). UPD: Чтобы замедлить анимацию, можно было бы добавить инструкцию в A62E: move.w #$000x,$0014(A3), где x задаёт задержку в кадрах на один кадр анимации (сейчас 4), но сразу после этого кода выполняется общий для разных анимаций код move.w #$0004,$0014(A3), поэтому установить задержку сложнее. Для одного врага $0014(A3) будет адрес FFE61B. UPD2: В SNES версии оглушение длится 250 кадров во всех версиях, что ровно 5 секунд в (E) и 4.1(6) с в (U) и (J). --- Конец цитаты --- Sharpnull, это то что нужно :), спасибо огромное, ты супер хаккер :thumbup: Что приятно, то что это работает и для бэтмена для аналогичного оружия. Сделал 250 кадров как в snes :biggrin: После поста Sharpnull, решил почитать мануал, просто любопытства ради, мне казалось, что я его читал и там ничего особо полезного не было. Сначала прочел про Gas Spray бэтмана: --- Цитата ---Loading Batman's gadgers with gas canisters let's you befog your foes, leaving them helpless for a few brief moments. While they're dazed they can only receive punishment, not dish it out, so get in your licks early. --- Конец цитаты --- И из описание, можно подумать, что оно должно просто станить врага (чего он не делал до фикса). Но вот что написано про Sonic Blast Робина: --- Цитата ---A blast from this ultra sonic device knocks enemies off their feet and into a stupor, making their blows do only half damage. --- Конец цитаты --- Т.е. оно должно уменьшать урон от врага в два раза. Проверил так и есть, но эффект временный. Но почему в Snes версии это еще дает доп. стан, а в sega нет, это странно, возможно разрабы решили, что этот прием получается через чур имбовым :neznayu: Так как приемы похожи, то подумал, может и Gas Spray бэтмана дебафает врага. Проверил и так и оказалось, т.е. даже мануал от игры врёт! Что примечательно snes мануале для описание другое и это упоминается зачем его изменили для sega хз: --- Цитата ---Loading Batman's gadgets with gas canisters let's you temporarily destroy a foe's muscle tone, making their blows do only half damage. --- Конец цитаты --- Другие спец. приемы типа Smoke Pellet, которые в сеговской версии тоже казались бесполезными, судя из мануала тоже дебафают врага, отключая у него спешалы на время. Диванный аналитика геймдизайна: Сама по себе задумка для спешала в битемапе очень спорная. Для файтинга, еще быть может, куда ни шло, т.к. в теории можно ожидать что будешь получать по щам от соперника, но тоже не очень. Дебаф врага, это вообще больше про какие то jrpg. А в битемапе спешалом уменьшать урон от рядового врага, это глупо, игрок вообще не планируем получать по щам от обычного врага ни в полную силу, ни в половину, а планирует разделаться с ним с перфектом :biggrin: |
| pav13:
Эмулятор Genesis Plus GX с встроеннымROM Glitcher: Instruction InverterИнструмент для казуального поиска глитчей Репозиторий на GitHub Идея Глитчера: perfect_genius. Реализация в эмуляторе: pav13 ROM Glitcher: II — встроенный в эмулятор Sega Genesis/Mega Drive инструмент, позволяющий находить и активировать скрытые возможности игр, менять логику их поведение и открывать "секретный" контент. Вместо ручного перебора кода на ассемблере, Glitcher делает это автоматически: ищет потенциальные "точки интереса", проверяет их корректность и даёт игроку возможность переключать эффекты прямо во время игры. Пригодится :thumbup:: * ROM-хакерам и исследователям игр. * Любителям "фанового" геймплея. * Тем, кто хочет обойтись без ассемблера, HEX-редакторов и сложных отладчиков, но при этом находить чит-эффекты и секреты. * Интеграция в RetroArch: Работает как ядро, не нужно переключаться между программами. * Безопасность: ROM-файл не изменяется на диске. Все правки применяются в памяти эмулятора. * Автоматизация: Система записи и воспроизведения рутинных действий для проверки глитчей. * Поиск инструкций: Ищет не только BEQ/BNE, но и остальные пары инструкции ветвлений, арифметических инструкций (ADD/SUB), установки байтов (Scc) и циклов (DBcc). * Управление найденными читами: Буфер на 256 глитчей с возможностью включения/отключения. Автосохранение в файл %имя_ROM%_RG.cht. * Локализация интерфейса: русский, English, español, português brasileiro, Deutsch, italiano. Настройка кнопок для Глитчера: * Вызов меню Глитчера: * Перейдите в Настройки ядра -> Input -> ROM Glitcher (Menu button) * Выберите кнопку или комбинацию кнопок * По умолчанию: SELECT * Навигация в меню: * Используйте Вверх/Вниз для перемещения по пунктам * Кнопки A/B для подтверждения выбора и возврата * Клавиатура также работает - нажимайте соответствующие этим кнопкам клавиши * Настройка замены кнопок: * Перейдите в Настройки ядра -> Input -> ROM Glitcher (Swap buttons) * Решает проблему, когда RetroArch путает A-B/X-Y на геймпаде * Эта настройка работает только для меню Глитчера и не влияет на глобальную замену кнопок Пошаговый процесс поиска глитчей: * Подготовка: * Загрузите ROM игры * В меню 'Фильтр инструкций' выберите необходимые инструкции * По умолчанию: BNE/BEQ * Начало поиска: * Дойдите почти до нужного места в игре * Откройте меню Глитчера * Выберите Запуск Glitcher * Запись действий: * Начнётся запись нажатий кнопок * Выполните нужные действия в игре * Вызов меню Глитчера завершает запись * Анализ результатов: * Начнётся воспроизведение записанных нажатий кнопок * В зависимости от происходящего на экране выберите один из вариантов: Кнопка Действие Описание AНайден Нужный эффект проявился BБагИгра сломалась или зависла XНе найден Ничего не изменилось YШаг назад Вернуться на предыдущий шаг * Не обязательно ждать конца воспроизведения * Завершение: * После успешного нахождения глитч добавиться в меню и сохранится в cht-файле * Глитч автоматически активируется и применяется к ROM * Происходит возврат к шагу до обнаружения последнего глитча * Можно продолжить поиск другого глитча * Эмулятор перезагружать не требуется В процессе сбора информации .... если есть чем поделиться - пишите. --- Цитата: AnyZero от 23 Сентябрь 2025, 10:12:35 ---Вообще чтоб покрыть 95% хватает BEQ/BNE и SUB/ADD, минут за 10 можно найти вообще всё нужное, а порой и смешное, остальное слишком специфичное. Но побаловаться можно. --- Конец цитаты --- 1: Условные переходы (B-команды) КомандаПрименение в играхBHI / BLS?BCC / BCSСтолкновения (коллизии), проход сквозь стены, лимиты предметов.BNE / BEQБессмертие, открытие дверей, уровней, проход сквозь стены, секретные меню.BVC / BVSФизика, анимации, графические баги, фризы.BPL / BMIДвижение (направление), таймеры, статусы в игре (в RPG: отравление, лёд, пламя).BGE / BLT?BGT / BLE? 2: Условные операции установки байтов (S-команды) КомандаПрименение в играхSHI / SLS?SCC / SCS?SNE / SEQ?SVC / SVS?SPL / SMI?SGE / SLT?SGT / SLE? 3: Условные циклы (DBcc-команды) КомандаПрименение в играхDBHI / DBLS?DBCC / DBCS?DBNE / DBEQ?DBVC / DBVS?DBPL / DBMI?DBGE / DBLT?DBGT / DBLE? 4: Арифметические операции КомандаПрименение в играхADD / SUBУрон, физика, двойные прыжки, экономика.ADDX / SUBX? (Обычно для арифметики с расширенной точностью)ADDA / SUBA? (Используется для адресной арифметики, например, расчетов позиции)ADDI / SUBIБонусы, урон, лечение.ADDQ / SUBQЖизни, патроны, очки, время, счётчики.DIVU / MULU? (беззнаковое деление)DIVS / MULS? (деление со знаком) SoR1 - Неуклюжий боец - 003EAE:66 или 003EBA:66 Contra HC - Брауни, бесконечные прыжки - 00E8EA:53 * 0.3.5 - Добавлен поиск арифметических инструкций (DIV/MUL) * 0.3.1 - Добавлен поиск арифметических инструкций (ADD/SUB), инструкций установки байтов (Scc) и циклов (DBcc) * 0.3.0 - Многоязычный интерфейс (русский, английский и др.) + загрузка читов из файла * 0.2.3 - Настройка замены кнопок A-B/X-Y для меню Глитчера * 0.2.2 - Добавлен поиск всех инструкции условных переходов Bcc * 0.2.0 - Применение таблицы валидности при поиске инструкций * 0.1.7 - Система записи и воспроизведения действий (Input Replay) * 0.1.0 - Новый алгоритм поиска + управление кнопками ABXY во время поиска * 0.0.7 - Автосохранение найденных глитчей в файл * 0.0.5 - Список найденных глитчей с включением/отключением * 0.0.1 - Автоматическая корректировка контрольной суммы ROM * 0.0.0 - Первый рабочий прототип Скачать исходный код (клонировать репозиторий) --- Код: ---git clone --branch rom-glitcher https://github.com/pav1388/Genesis-Plus-GX-PUNCHiUM.git Genesis-Plus-GX-ROM-Glitcher --- Конец кода --- Из корневой папки проекта выполнить --- Код: ---make -f Makefile.libretro platform=win ARCH=x86_64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ --- Конец кода --- Использую Win10 x64 + WSL Ubuntu 24. Предварительно установить MinGW, Git, Make, Ccache (для ускорения повторной сборки). --- Код: ---wsl make -f Makefile.libretro platform=win ARCH=x86_64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ --- Конец кода --- Очистка --- Код: ---wsl make -f Makefile.libretro platform=win clean --- Конец кода --- 0.3.5 (5.10.2025) + опциональный поиск пар арифметических '*/' инструкций: DIV(U,S)/MUL(U,S). по умолчанию отключены 0.3.4 * исправление множества багов 0.3.3 * исправления/оптимизация * корректировка таблицы валидности опкодов + в релиз добавлена 32-битная версия ядра для RetroArch-Win32 (пробная сборка) 0.3.2 * корректировка таблицы валидности опкодов * динамическая корректировка размера диапазона изменяемых кандидатов 0.3.1 - Rex + опциональный поиск пар арифметических '+-' инструкций: ADD(A,X,Q,I)/SUB(A,X,Q,I). по умолчанию отключены + опциональный поиск пар инструкций установки байтов Scc: SHI/LS, SCC/CS, SNE/EQ, SVC/VS, SPL/MI, SGE/LT, SGT/LE. по умолчанию отключены + опциональный поиск пар инструкций циклов DBcc: DBHI/LS, DBCC/CS, DBNE/EQ, DBVC/VS, DBPL/MI, DBGE/LT, DBGT/LE. по умолчанию отключены + тематическая шкала прогресса * время записи нажатий кнопок увеличено до 2 минут 0.3.0 + локализация интерфейса: русский, английский, испанский, бразильский португальский, немецкий и итальянский языки + экспериментальный алгоритм обнаружения/удаления багов при поиске (в разработке) + парсинг чит-файла с сохранёнными адресами (максимум 256 читов) * остального по мелочи * количество шагов Назад уменьшено до 1 0.2.3 + свап кнопок управления (настройки ядра>Input>ROM Glitcher Swap buttons) 0.2.2 + опциональный поиск всех пар инструкций условных переходов Bcc. по умолчанию только BNE/BEQ 0.2.1 + удаление уже найденных глитчей из последующих операций отсеивания * исправлено применение уже найденных глитчей к ROM * мелкие исправления/улучшения 0.2.0 * применение таблицы валидности опкодов при начальном поиске кандидатов * оптимизация начального поиска кандидатов * глитчи автоматически применяются к ROM после нахождения * переработка действий по завершению поиска (вместо начала нового поиска происходит возврат к шагу до момента обнаружения глитча) * при необходимости изменить записанную последовательность нажатий кнопок геймпада можно воспользоваться пунктом Save state в меню Options 0.1.8 * исправления интерфейса * оптимизация системы хранения "шагов назад". количество шагов увеличено до 99 * замена максимального размера начального диапазона на 3% от найденных кандидатов (снова) 0.1.7 + Повтор ввода (Input Replay): запись и воспроизведение рутинных действий при проверке наличия нужного глитча * вызов меню Глитчера теперь может состоять из комбинаций 2-3 кнопок, а не только из одной 0.1.4b * замена максимального размера начального диапазона с 3% от найденных кандидатов на фиксированные 128 кандидатов (чтобы игра меньше баговала при большом количестве найденных кандидатов) 0.1.3 * исправления/оптимизация 0.1.2 * исправление начального поиска кандидатов - общая очистка кода 0.1.1 + новый пункт в настройках, позволяющий выбрать эффект при паузе (тест) - удаление остатков старого неэффективного алгоритма * перенос преобразования последнего игрового кадра из libretro.c в rom_glitcher.c * оптимизация первоначального поиска кандидатов 0.1.0 + алгоритм поиска глитчей заменён на алгоритм из оригинального Глитчера + новое управление во время поиска глитчей с помощью кнопок действия на геймпаде: ABXY * доработка начального поиска кандидатов (меньше ложных инструкций) * упрощение меню * усилил затемнение последнего кадра игры при вызове меню 0.0.8 * незначительные исправления 0.0.7 + сохранение найденных глитчей в текстовом файле рядом с ROM: '%romName%_RGI.cht' 0.0.5 + список найденных глитчей (макс 7, пока так). + активация/деактивация для каждого найденного глитча в отдельности. + очистка выделенной памяти при закрытии эмулятора. + добавление источника энтропии для псевдо-случайного генератора. * Различные улучшения интерфейса. 0.0.3 + штраф к общему проценту изменяемых кандидатов если часто выбирается шаг "Bug". + затемнение игры при вызове меню, чтобы текст был более читаемым. + циклический буфер на 9 слотов для "шаг назад" (в принципе число слотов может быть любым). * доработка алгоритма отсеивания и перемешивания кандидатов. 0.0.1 + корректировка контрольной суммы в заголовке при запуске эмулятора, чтобы можно было загружать глитченые ROM без спец.утилит (игры от EA не проверял) 0.0.0 (14.08.2025) + первый рабочий прототип + корректировка контрольной суммы в заголовке после перемешивания инструкций ни к чему не обязывающий список: - нормальное меню (кастомный OSD интерфейс) - доработка алгоритма отсеивания багов - оптимизация menu_item_toggle_found_instruction(). сделать отложенное сохранение в файл - парсинг файла с читами - локализация интерфейса - в настройках (там где кнопка для меню) новый пункт Button Swap A-B/X-Y - автоматизация действий при поиске глитча - ... расшаренная папка (отладочные версии тут) https://drive.google.com/drive/folders/1_Fmh8JqG3wCPS2Zdmbrcj-fD-0kq67ZG?usp=drive_link --- Цитата: ... всё тот же великий человек ---«Я не учитель. Я просто помогаю тебе изучать глитчи.» --- Конец цитаты --- |
| AnyZero:
Под винду оно как бы не очень надо. А вот на андроид эмуле пригодилось бы. |
| pav13:
AnyZero, возможно мимокрокодил с настроенной средой под андроид и соберёт :neznayu: |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |