Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - Беларус учит русский

Страницы: [1]
1

Есть встроенный отладчик, "можно следить за палитрами, переменными, координатами и состоянием игры в реальном времени"

Готовитса к выходу в Стиме: store.steampowered.com/app/3706620/MD_Engine

2
Общий / [ALL] Большая коллекция багов в играх
« : 26 Сентябрь 2025, 15:51:39 »
Не могу найти нигде коллекцию багов в играх - неужели такого нет? Есть фансайты по той или иной игре, есть Son of a Glitch и ему подобные на Ютюбе, TASVideos, но нет именно систематизированного сборника в одном месте. Если нет, то давайте соберём тут.
Можете описать текстом как повторить баг, вставить видео или дать ссылку на описание багов - я выпишу их сюда.















3
Надо определить, являются ли некие два байта инструкцией m68k или нет без присоединения дизассэмблера к коду.
По комментам ниже была сделана таблица битов валидности всех 65 536 вариантов двух байт. В нём дополнительно отмечены невалидными условные инструкции, указывающие на нечётные адреса и на себя (кроме прямого прыжка BRA на себя, он встречается в играх).
Можно так же поступить с бессмысленными инструкциями типа OR 0, но нейросеть пишет, что их могут использовать для изменения состояния флагов.

Есть ли ещё какие-то инструкции, которые можно уверенно признать невалидными?

Задача вторая, не очень важная: эта таблица битов занимает 8192 байт. Немного, влезает в кэши первого уровня. Но может можно сжать таблицу в битовые маски типа такого, чтобы занимало ещё меньше места в кэше и в коде:
0000 0000 0.11 11..
0000 0000 11.. ....
0000 0000 0000 1...

0000 ...1 ..11 11** (кроме 00)

0100 1110 0111 1...
0100 1110 0111 0100

1010 .... .... ....

0111 ...1 .... ....

1111 .... .... ....


В коде, генерирующем оригинальную таблицу, есть что-то такое с битами. Есть идеи алгоритма составления таких масок по изменённой таблице?

4
Ром (игра) изменяетса особым образом и пользователь проверяет в эмулятре, есть ли нужное ему изменение. Если нет, то ром восстанавливаетса и изменяетса в другом месте. Если есть, то начинаетса удаление лишних изменений.
Результат не гарантирован, но зато проверка не требует знаний и особых усилий.

Два инструмента для разных задач:

ИНВЕРТР логики
Мой вариант ищет только логику типа "есть/нет", "включилось/выключилось", "случилось/не случилось", "равно/не равно" (инструкцыы BEQ и BNE) и инвертирует её. Т.е. не ищет скорость, цвет, параметры, координаты и т.д.
Примеры тово, што можно сделать таким способом (в скобках примерное количество требуемых шагов/нажатий):

Што не удалось:

Как видно, поиск простых вещей типа хака меню требует не так много времени - около 300 шагов, каждая занимает секунд 5 или меньше. С большым шансом можно получать неуязвимость, разблокировывать што-то в меню, включать встроенные читы. Большая выгода по времени, если искать по пути сразу несколько вещей.

pav13 сделал свои версии для Сеги и NES, избавляющих от лишних действий (надо лиш нажымать одну из двух кнопок/клавиш) и это сильно ускоряет поиск. Также у ево вариантов есть выбор из нескольких групп инструкцый, если хочетса поэкспериментировать.
Мой вариант потребует ручного переключения между эмулятром и програмой и дополнительных действий в самой игре, но есть и преимущества: автообновление, свобода выбора эмулятра и сохранение изменений в роме (SMD).

У версии для игр NES от AnyZero тоже есть выбор из нескольких групп инструкцый.




ПЕРЕСТАВЛЯТЕЛЬ ресурсов [только SMD]
Ищет массивы указателей, которые могут указывать на што угодно: изображения, звуки, состояния анимацый, уровни, порядок обйектов, код поведения и т.д.
В отличии от предыдущево инструмента, при поиске надо искать не конечный желаемый результат, а изменение нужново элемента.
Например, в Cannon Fodder надо, штобы при выстреле вылетали не пули, а ракеты. При поиске можно увидеть, как вместо пуль начали вылетать вертолёты, значит нужный элемент (пули) затронут и найдены указатели на пулю и вертолёты. Скорее всево, рядом с ними в массиве есть и указатели на другие обйекты, среди которых могут быть ракеты. Далее Переставлятель начинает подставлять все эти соседние указатели вместо указателя пули, штобы вы могли видеть што происходит в игре при вылете пули и дать этому название. В таком массиве именованных указателей будет легко ориентироватса и переставлять обйекты местами.

Примеры тово, што я нашёл не выискивая што-то конкретное, просто по пути:



   Уточнение выбора
1   гличи     мешают увидеть, што нужное изменение есть/отсутствует
2   гличи не мешают увидеть, што нужное изменение отсутствует
3   гличи не мешают увидеть, што нужное изменение есть. Далее начинаетса удаление гличей

   Как пользоватса моим Гличером
—в настройках эмулятра [SMD] включите исправление контрольной суммы на всякий случай
—закиньте ром в програму и в эмулятр
—сохранитесь в нужном месте игры. В моём случае с меню UMK3 и опцыями SoR я сохранился на предыдущем экране, штобы далее игра рисовала нужный мне экран с будущими секретными пунктами. Если сохранитса прямо на нужном экране, то каждый раз будет загружатса экран в таком же виде, без нужных дополнительных пунктов. Ведь код игры, рисующий их, не был задействован
Если же нужное вам может появлятса в игре в любой момент при определённом условии, тогда можно и сохранятса в любой момент
—смотрите результат и выбирайте подходящий пункт в програме
При закрытии програмы поиск сохраняетса. Отличие у Переставлятеля - ром не восстанавливаетса при закрытии програмы во время поиска, для этово надо или остановить поиск перед закрытием, или перезапустить програму. Связано это с тем, што Винда даёт 5 секунд для действий после закрытия, чего не хватает для восстановления при многочисленных изменениях рома (самые нижние массивы) даже на SSD
-в конце поиска програма предложыт исправить контрольную сумму [SMD]. Это надо, штобы игра не зависала на приставке или эмулятрах без опцыы исправления

   Как можно ускорить поиск

Цитата: Один великий человек
Я не боюсь тово, кто выучился сотне приёмов хакинга. Я боюсь тово, кто выучился сотне нажатий в Гличере


В Win10/Win11 некоторые исполнительные файлы, скачанные из интрнэта, удаляютса антивирусом, поэтому перед скачиванием придётса ево выключить - он включитса сам и пакостить передумает

Инвертр (исходник) или Инвертр (исходник)

5
securitylab.ru/news/540409.php

-удвоение (с 16 до 32) числа регистров общего назначения
-добавление трёхоперандного формата большинству существующих целочисленных инструкций
-добавление дополнительных условных инструкций для облегчения предсказания переходов
-новая 64-битная инструкция безусловного перехода

Типа, программы достаточно перекомпилировать новыми компиляторами, чтобы получить ускорение.

Сколько десятилетий уже хоронят x86, а оно вон всё брыкается и хочет активно жить и развиваться :lol:
Костыль на костыле, но работает же. Обратная совместимость, как обычно, решает.
Если это взлетит, то на этот раз уже очередь AMD реализовывать у себя идею конкурента.

Народ только-только поголовно перешёл на 64 бита, а теперь вот снова будет переходить на новое железо из-за софта, несовместимого с текущим железом. Сейчас у программ часто есть бессмысленный выбор между 32-х и 64-х битными версиями, но выбор между x86-64 и APX уже реально будет иметь смысл, т.к. будет разница в производительности.

Цитата
Согласно объяснению Intel, код, скомпилированный с помощью Intel APX, на 10% меньше нагружает ядра и на 20% компактнее, чем код, адаптированный под Intel 64. Это означает, что APX-код не только выполняется быстрее, но и имеет меньшее потребление

+ещё Intel предложила x86S — исконно 64-битный вариант архитектуры x86 для будущих CPU

6
6 поколение / [PS2] Способы запуска игр
« : 18 Июнь 2023, 17:47:00 »
Ощущение, что из всех консолей только этой, самой популярной PS2 очень не повезло - нет ни нормального или удобного способа запуска дампов игр, ни качественного эмулятора. Оказывается, и удобной среды создания программ так и не появилось.

7
Разное / Проблемы с Си
« : 31 Март 2021, 18:00:52 »
Спрашиваю тут, т.к. не могу найти ответ в Гугле, даже не знаю как точно сформулировать вопрос.
На специализированных сайтах по программированию регистрироваться не охота, раз на родном Эмуленде есть оффтоп-тема.

1 Как выделить память под определённый тип элемента по ситуации?

Допустим, в одном случае программа выяснит, что потребуется выделить массив типа int, а в следующий раз char. Потом с этим массивом работать.
if'ы на каждый тип считаю дикостью. Вижу только вариант выделить char и "менять" указатель на нужный тип, прыгать по элементам массива через указатель-переменную. Но проблемой будет доставать что-то крупнее char, например для int придётся вытаскивать 4 байта, каждый раз сдвигая его в переменной и прибавляя:
char массив[4];
int a = (((((массив +3) << 8) +массив +2) << 8) +массив +1 << 8) +массив;

да и другие сложности ожидаются, наверно.
Или можно как-то менять указатель или тип массива?

2 Как присвоить динамичный массив в статичный?
Нужен статичный массив, каждый элемент которого - указатель на динамичный массив.

Так не работает:
int массив[100];
массив[0] = new int[10];

Так тоже:
int массив[100];
int* test[10];
массив[0] = &test;


До этого нормально работал с двумерными динамичными массивами и проблем не знал. Опыта с указателями пока нет.

8
Ромхакинг / Заказ хака за оплату
« : 10 Январь 2021, 00:11:19 »
Пишете название игры, платформу и версию (лучше по GoodXXXX), описываете что требуется изменить/изучить/написать (распаковщик-упаковщик, редактор...), и назначаете оплату (сколько не жалко). Не спрашывайте "Сколько это будет стоить?"

Если исполнитель предлагает цену выше и вы не согласны, то необязательно ему что-то отвечать, или переходите в личку.
Если сами поднимаете оплату, то выложте заказ снова, удалив старый коментарий.

После выполнения заказа отметьте это в старом коментарии.

Прошу не писать коментарии типа "Зачем? Игра и так лёгкая/так задумана", "Никто за такую суму не сделает" и т.д. Кому надо - сделает или предложыт свою суму, остальным не сложно будет пройти мимо.

9
Показали Nintendo 3DS. Создавать новую тему или тут продолжим? :lol:
Наверно, просто добавят поддержку в Десмуме.

10
Я сам очумел от первых трёх, а жду больше дъявола-плаксу и безбашенные гонки.

11
Ромхакинг / Вопросы новичков
« : 25 Январь 2009, 16:58:16 »
Тема для вопросов по ромхакингу, для которых создание отдельной темы кажетса излишним.
Самые частые вопросы новичков:

Какой програмой взламываютса игры (ромы)?
Общее, что есть внутри игр - это текст на английском языке. Если он не сжат, то находитса поиском в хекс-редактре.
Несжатую графику в ромах можно найти редактром тайлов, но для этово уже надо будет правильно указать платформу и проходить по внутренностям вручную, искать на глаз. На некоторых платформах с этим легче, там графика лежыт в известном месте (NES).
Некоторые игры могут использовать популярные алгоритмы сжатия с заголовком, и тогда достаточно найти в роме только эти заголовки архивов и распаковать.

Нет одной универсальной програмы для всех игр, т.к. внутреннее устройство каждой отличаетса и поэтому для каждой нужно искать свои инструменты. Бывает, что внутренности похожы у игр одной серии или одново разработчика, и тогда один инструмент может поддержывать сразу их все.
Если инструментов нет, то для их создания изучаетса код игры с помощью отладчиков в эмулятрах и дизасэмблеров типа MESEN, Ghidra и IDA.

При запуске игры для Сеги на приставке или эмулятре показываетса только красный/зелёный/синий/чёрный экран
С большой вероятностью это действие защиты игры от изменений: игра видит, что изменена, и отказываетса запускатса. Если это не хак/перевод игры, то ром может быть просто повреждённым.
В настройках эмулятров можно включить обход этой защиты ("исправление контрольной суммы", "fix checksum"), а для приставки понадобитса исправить ром спецыальными програмами - ищутса по "sega fix checksum".

Страницы: [1]