Chief-NET

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Chief-NET » Программирование » Pointer Searcher by Horror


Pointer Searcher by Horror

Сообщений 1 страница 15 из 15

1

Приложил программку с исходниками.
Марат, можешь доработать пару вещей:
1) Починить возможность загружать конфиги
2) Добавить ещё одно поле "Opcode", дающее возможность добавлять хекс значения инструкций, идущих перед указателем.
Я ещё в нём глюки выявлял, типо зависающего статус-бара, но хочу протестировать после апдейта по полной программе.

Отредактировано Mefistotel (2014-11-29 16:22:57)

2

Всё, поправил загрузку конфигов.
Добавил поле Prefix и PrefixUse.
Prefix - это код который стоит перед поинтером.
Максимальный размер префикса 4 байта, т.е. максиму в поле нужно писать 41F941F9.
Конфиги для Фронт Мишн приложил. Тестируйте. Может, какие баги вылезут или недоработки.

http://savepic.ru/6382562.png

Отредактировано Марат (2014-12-07 22:07:35)

3

Начнём с тяжёлой артиллерии.
Марат, в архиве содержится конфиг к Langrisser 2. Программа находит 1441 указателя, а это в районе 50% от общего числа указателей. Для удобство создал файл Exel с двумя вкладками (найденные и не найденные). К примеру, прога не находит указатель на строку по адресу h1388D8 и так далее.
И ещё, когда к примеру ставишь в этом конфиге  значение PtrBlockSize $FFFFFFFF, то прога выдаёт ошибку I/O error 998. А если $FFFFFF, то Read beyond end of file. В архиве есть скрины. Можно эти ошибки заменить на служебное сообщение типа "Неверно указано значение PtrBlockSize или в этом духе.
Тестирование проводится на win 7 64 bita.
P. S. Да, и добавь в хелп инфо о себе (модификация), плюс chief-net.ru 2014. Доработанная прога будет на сайте (chief-net edition).

Отредактировано Mefistotel (2014-12-08 15:25:02)

4

Начнём с тяжёлой артиллерии.
Марат, в архиве содержится конфиг к Langrisser 2. Программа находит 1441 указателя, а это в районе 50% от общего числа указателей. Для удобство создал файл Exel с двумя вкладками (найденные и не найденные). К примеру, прога не находит указатель на строку по адресу h1388D8 и так далее.

А ты шаг пробовал менять?
Не все поинтеры находятся по адресу кратному четырём. Есть и такие, которые находятся по адресу кратному двум. И твой пример как раз таки попадает под второй вариант.
Вот мой результат.
http://savepic.ru/6395648.png

И ещё, когда к примеру ставишь в этом конфиге  значение PtrBlockSize $FFFFFFFF, то прога выдаёт ошибку I/O error 998. А если $FFFFFF, то Read beyond end of file. В архиве есть скрины. Можно эти ошибки заменить на служебное сообщение типа "Неверно указано значение PtrBlockSize или в этом духе.
Тестирование проводится на win 7 64 bita.
P. S. Да, и добавь в хелп инфо о себе (модификация), плюс chief-net.ru 2014. Доработанная прога будет на сайте (chief-net edition).

Это поправлю.

5

Кратность адреса строк с текстом задаётся значением TextMultiply.
В хелпе про этот PtrStep  написано:

Шаг сканирования (по умолчанию - размер поинтера)

Может вообще удалишь это значение, сделав по умолчанию поиск по адресам указателей любой кратности?
Мне кажется, это совершенно лишний показатель, который дезориентирует. Я ставил его значение равным 0 и прога всё равно нашла 1441 указатель, как при значении 4.

6

Ну так 0 он быть не может. Приращение должно быть хотя бы на 1. Если поставить ноль, тогда он равен размеру поинтера. Убирать, думаю, не стоит. Потому что это дает больше гибкости. В сеге, например, поинтеры находятся по четным адресам, а снес как по чётным, так и по нечётным.

7

Ну так чтобы искать адресам, то нужно ставить 1? Думаю, допишу в хелпе.

8

Кратность адреса строк с текстом задаётся значением TextMultiply.

TextMultiply - кратность адреса строк, т.е. все строки начинаются с адреса кратному TextMultiply. К настройкам поинтеров это никак не относится.
В Лангриссере из-за того, что перед текстом стоит 4 байтовый управляющий адрес, который считывается командой move.l, строки могут начинаться только с чётных адресов.

Ну так чтобы искать адресам, то нужно ставить 1?

Для nes, snes и т.п., да. Для Сеги должно быть кратно 2. Потому что поинтеры на сеге двух-байтные либо четырёх-байтные и считываются командами move.w, move.l. А так как считывать данные word'ами в сеге можно только по чётным адресам, то соответственно, поинтеры могут находиться только по чётным адресам.

9

Думаю, это всё нужно указать в хелпе.
Марат, глянь, что не так. Зависает статус-бар на 96 %.
Конфиг ниже.

File=C:\РОМХАКИНГ\PROJECT OLD\Tiny Toon Adventures 2 - Trouble in Wackyland (U) [!]\BACKUP\Tiny Toon Adventures 2 - Trouble in Wackyland (U) [!].nes
TextBlockOffset=$5431
TextBlockSize=$524
TextMultiply=1
StopData=FF
PtrBlockOffset=$53D0
PtrBlockSize=$FFFF
PtrSize=2
PtrReference=$FFFFC010
PtrStep=1
PtrInterval=0
PtrPrefixUse=False
PtrPrefix=41F9
Motorola=False

10

У тебя неправильно указан TextBlockSize. Его размер $525 байт.
Текст с блоком должен оканчиваться на знак StopData.

Отредактировано Марат (2014-12-10 18:37:40)

11

Готово!
1. Добавил проверку на введённые данные. Теперь, если данные указаны неверно, то выводится стандартное сообщение с ошибкой.

2. Добавил фильтр на вводимые символы. В поля PtrStep, PtrSize, TextMultiply, PtrInterval можно вводить только десятичные значения. В поля StopData, PtrPrefix только шестнадцатиричные значения. В остальные поля - знак $, десятичные и шестнадцатиричные значения.

12

Добавил на сайт в раздел Программы, но не публиковал.

13

Марат, знаешь, что ещё бы хотелось, чтобы была возможность задавать 2 или 3 стопбайта. Зачастую в одном блоке используются разные стопбайты. Возможно, в этой же строчке сделать через запятую или ещё как? Либо сделать: StopData1, StopData2...

14

Зачем. Не вижу особой надобности. Можно менять стоп байты и прогонять повторно.
Думаю, это лишний головняк.

15

Зачем. Не вижу особой надобности. Можно менять стоп байты и прогонять повторно.
Думаю, это лишний головняк.

Это сделало бы программу ультимативной ищейкой, не имеющей аналогов. Два раза и прогоняешь, потом в один список и строки не по порядку. Потом сортируешь и так далее. Если заморочки большие, то оставим до лучших времен.


Вы здесь » Chief-NET » Программирование » Pointer Searcher by Horror