 |
Цитата: |
 |
|
|
|
|
|
|
Абрвалг сплошной. Что 18h? Какой еще заголовок? Бред какой-то.
|
|
 |
|
 |
|
В чём бред то? В каждом исполняемом файле
PSX-EXE имеется заголовок, в котором храниться некоторая полезная информация:
- по адресу 0х1с - размер исполняемого файл.
- по адресу 0х18 - в какую область оперативной памяти его загружать.
Размер заголовка можно вычислить путём вычитания из реального размера файла - размер файла без заголовка, записанный по адресу
0x1c. Как правило это размер получается равным
0х800.
Затем из значения, находящегося по адресу
0х18 вычитаем размер заголовка
0х800 и получаем наше заветное смещение.
Все операции производятся с учётом обратного порядка байт.
На счёт 8-ми байтового поинтера, то когда стандартный 4-х байтовый поинтер разбивается на части, то есть сначала идёт 2 последних байта поинтера, потом пара неизвестных мне байт, а затем 2 первых байта поинтера, впрочем после них опять неизвестная мне пара байт. Такой указатель получается 8-ми байтовым ибо по другому его нельзя классифицировать. В качестве примера можно посмотреть экзешник американской версии игры
Vandal Hearts (
SLUS_004.47). 8-ми байтовый поинтер, например можно найти по адресу
0х396B0 и выглядит он как "
0180023C
EC374224". Жирным выделены две части 4-х байтового поинтера, который в обычном случае выглядел бы как "EC370180".
На счёт нестандартных случаев точно не помню, но вроде как в игре
Twisted Metal, над которой как раз и трудился товарищ
lupus, были какие-то нестыковки со смещением. На сколько я помню к уже имеющему смещению прибавлялось некое второе смещение и уже тогда получался готовый 8-ми байтовый поинтер.
 |
Цитата: |
 |
|
|
|
|
|
|
lupus, Cобственно зачем? Как правило рядом с блоком текста и блок указателей на него. И Хорор уже какую-то утилитку выкладывал причем с сырками.
|
|
 |
|
 |
|
Это правило к какой системе относиться? У которых в качестве носителей выступают картриджи?
Поинтеры могут быть где угодно (даже в другом файле в то время, как искомый текст сидит в экзешнике). Так что основываться на теориях смысла особого нет. Надо по-любому конкретно вычислять место нахождение указателя.