Переводы, переводы, переводы... > Ромхакинг и перевод

Помощь с круптаром

<< < (27/27)

Anton:
Я так понял, никто не знает, как пересчитать размер диалога именно в Круптаре? Или это невозможно?
4 байта пойнтер на диалог, после него в четырёх байтах указан размер этого диалога, потом еще 12 байт интервал, потом следующий пойнтер, размер диалога... и т.д.

Guyver:
Нужна помощь с компиляцей любой последней версии круптара c работающей (!) функцией pnFixed. Если вдруг кто-то сможет мне помочь, то мне нужно изменить в коде:

Function TPointers.Add: PPointer;
begin
New(Result);
If Root = NIL then Root := Result Else Cur^.Next := Result;
Cur := Result;
Inc(Count);
Result^.pnPos := 0;
Result^.pnPtr := 0;
Result^.pnPtrOrig := 0;
Result^.pnParamData := '';
Result^.pnStrings := NIL;
Result^.pnFixed := False;
Result^.Next := NIL;
end;

Всего 1 строчку на это:

Result^.pnFixed := True;

И скомпилировать проект... Help!



Если такой функции в исходниках нет, то поменять


if pnFixed then
begin
TextStrings := StringsToTextStrings(pnTable2, pnStrings,
ptDestCharSize, Project);
на

if not pnFixed then
begin
TextStrings := StringsToTextStrings(pnTable2, pnStrings,
ptDestCharSize, Project);
А нижеследующие 2 строчки с not pnFixed поменять на pnFixed... Я не совсем уверен, но должно сработать. Т.е. выбирать фиксированный поинтер или нет не надо будет, и всё будет работать как мне нужно...

Вячеслав:
Здравствуйте.
Помогите разобраться с Круптаром )
Как правильно добавлять в проект пойнтеры, когда старший и младший байт разнесены, предполагаю что используется ptSplittedPtrs, однако мои пробы не увенчались успехом, а в мануале об этом к сожалению мало сказано.


Пример:


00012A38 | A2D2A004
000123B3 | 
[Дата добавления: 07 Ноябрь 2020, 20:36:15]Здравствуйте.
Помогите разобраться с Круптаром )
Как правильно добавлять в проект пойнтеры, когда старший и младший байт разнесены ? Предполагаю что необходимо использовать ptSplittedPtrs, однако мои пробы не увенчались успехом, а в мануале об этом к сожалению очень мало сказано.


Пример #1


Адрес начало
000123A8|         A2|D2|A0|04
000123B3|         A2|B1|A0|04
000123BC|         A2|F7|A0|04


Пойнтеры D204, B104, F704 (смещение 24010) что за байты А2 и А0 перед старшим и младшим байтом пойнтера, для меня загадка, однако они не изменяются во всем роме, поэтому не сильно заботят.


Пример #2



Адрес начало
00013CC7|        03|3B|50|6B|8A|32|32|32|32|32


Пойнтеры 0332, 3В32, 5032, 6В32, 8A32 (смещение 24010) между старшим и младшим 4 байта

Griever:
Ну во втором примере точно должен сработать ptSplittedPtrs. В ptInterval выставляешь 4 (количество байт между старшим и младшим байтами поинтера) и ptSplittedPtrs в True.ptPointerSize должен быть 2. Не забудь про ptBIG_ENDIAN в False.

Вячеслав:
Спасибо за подсказку.
Разобрался, в первом примере функция тоже работает, только при указании адреса пойнтера необходимо указывать лишь начальный адрес старшего байта и ставить интервал 2  :)

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Перейти к полной версии