Всем привет. Начал прикручивать проект к крптару. Всё вроде бы ничего, но столкнулся с тем, что 7-я версия несколько отличается по интерфейсу от 6-й. Ну да ладно, скачал к6 и делал всё по мануалу.
Есть лангпак из игры.
Поинтеры двухбайтовые, интервал между ними 2 байта 00. С этим проблем нет.
Проект составил и текст вынул.
Символ окончания строки - 00
Символ разрыва строки - 03
В к7 их можно указать отдельно, здесь я этого не нашёл. Если вместо разрыва строки я поставил ~и тут проблем нет, то стопбайт 00 в вынутом скрипте у меня выводится как [#00] что не есть удобно.
Подскажите плиз, как бы мне это покрасивей оформить или как составить аналогичный проект для к7.
Когда код окончания 00, можно использовать плагин NULL.KPL, тогда /00 в конце строки вообще не будет видно.
Методом проб и ошибок прикрутил проект к к7. Вроде всё нормально вынимается и вставляется, но почему-то текста после пересчёта меньше становится... хз прямо
Цитата: lupus от 19 июня 2011, 14:37:15Всё вроди бы ничего
Цитата: lupus от 19 июня 2011, 15:49:32Вроди всё нормально
http://gramota.ru/slovari/dic/?word=%E2%F0%EE%E4%E5&all=x
спасибо, учту %)
Джинни, все хочу спросить, а почему ты в новых версиях Круптара убрал нумерацию строк?
В v7.0.0.85 она есть, и это просто фантастически удобно.
Особенно когда в блоке текста куча спец-кодов, и блок этот длинный, то без нумерации можно такого напереводить...
А так я знаю, что у меня, скажем, строки 0-3 - это одно поле для текста в конкретном диалоге, 4-7 - следующее, 8-11 - следующее, и т.п.
Удобней, когда наглядно все.
Был другой компонент вывода текста.
так все равно - с номерками ж удобнее.
Удобнее, но в текущем их нет. Есть нумерация строк внизу где X и Y. Но там длинные строки нумеруются по количеству их частей.
Парни, где можно найти доку по "Круптару"? Скачал седьмую версию, в текстовике прилагавшемся к Круптару, указан адрес на доку - http://www.magicteam.net/krupdoc.htm (http://www.magicteam.net/krupdoc.htm) Ссылка мертва.
Мне можно и не подробно, хоть вкратце)) Я остановился на первом же шаге, - Укажите таблицу. В каком формате должна быть таблица?
И может ли Круптар, работать с файлами, в которых не просто поинтеры, а поинтеры указывающие на поинтеры, которые указывают на текст? :)
Upd
Доку нашел. Вопрос с форматом таблицы открыт.
До этого дня пользовался таблицей такого вида:
4100-61 'A
4200-62 'B
4300-63 'C
4400-64 'D
Ранее с круптаром не сталкивался, понимаю, что программа очень мощная и полезная, но для меня, он отложился в памяти, как - запутанная и непонятная программа.Просто как-то давненько, с помощью него я попытался распаковать текст, ничего у меня не вышло)) с тех пор, я обхожу его стороной.
В круптаре используются почти такие же таблицы, как в hex-редакторах. Все слова и буквы записываются через знак "=": "код=буква/слово". Таблица может выглядеть примерно так:
12=A
3456=B
78=Word1
9ABC=Word2
03
0405
ends
00
0102
Если до строки ends записан просто код (в примере это 03 и 0405), Круптар воспринимает его как разрыв строки (возврат каретки). После строки ends записываются коды концов строк (стоп-байты), они записываются аналогично разрывам - просто коды.
Цитата: Game_Hacker от 06 декабря 2011, 22:14:25И может ли Круптар, работать с файлами, в которых не просто поинтеры, а поинтеры указывающие на поинтеры, которые указывают на текст? :)
Что мешает использовать поинтеры, которые непосредственно ссылаются на текст?
Через двое поинтеров Круптар выдирать текст не умеет, но если очень надо, можешь сам написать плагин для этого. Дока по написанию плагинов есть на нашем сайте.
Цитата: Game_Hacker от 07 декабря 2011, 06:14:25где можно найти доку по "Круптару"? Скачал седьмую версию, в текстовике прилагавшемся к Круптару, указан адрес на доку - http://www.magicteam.net/krupdoc.htm
В разделе "Документация" на сайте.
Спасибо!
Буду осваивать шайтана...ой, Круптара! :)
Как вычислить, какая именно строка не нравится круптару?
[Предупреждение] ........ tbl_eng.tbl(0): Неверная строка таблицы.
Цитата: Anton от 24 марта 2012, 19:43:20
Как вычислить, какая именно строка не нравится круптару?
[Предупреждение] ........ tbl_eng.tbl(0): Неверная строка таблицы.
Наверно, нулевая :)
если первую строку считать нулевой, то там написано:
cp1251
(cp - латиницей).
что ему не нравится?
Цитата: Anton от 24 марта 2012, 21:03:00что ему не нравится?
Эта строка и не нравится. В таблице должны быть только символы/слова и коды им соответствующие, ну, и строчка ends. Никаких cp1251 быть не должно.
Ну, например, в таблице к Phantom Hourglass тоже была эта строка, вроде не ругался...
code page 1251, че...
Из-за этой строчки могут быть какие-то проблемы вообще или нет?
(таблицу делал не я, если что).
Цитата: TrickZter от 24 марта 2012, 22:16:11code page 1251, че...
Круптар работает с юникодом (UTF-16), таблицы, соответственно, тоже лучше в UTF-16 делать. Никаких code page, есессно, указывать не нужно.
Цитата: Anton от 24 марта 2012, 21:56:57Из-за этой строчки могут быть какие-то проблемы вообще или нет?
Что тебе мешает её убрать? Хуже не будет.
да ничего не мешает... )
Цитата: TrickZter от 24 марта 2012, 22:16:11Никаких code page, есессно, указывать не нужно.
Нужно, нужно, если не UTF-16 или UTF-8. В какой-то версии такая же ошибка выскакивала. Тут может быть такое, что у текстового файла кодировка юникодовая, а приписано в начале "cp1251", из-за такого ошибка и может вылезти.
Вот фрагмент таблицы (начало).
Коды символов юникодовские.
Кодировка двубайтовая.
cp1251
0020=
0021=!
0022="
0023=#
0024=$
0025=%
0026=&
0027='
0028=(
0029=)
002A=*
002B=+
002C=,
002D=-
002E=.
002F=</>
00A9=©
0030=0
0031=1
0032=2
0033=3
0034=4
0035=5
0036=6
0037=7
0038=8
0039=9
003A=:
003B=;
003C=<
003D==
003E=>
003F=?
0040=@
0041=A
.....
00E0=ь
0178=ы
00FD=ъ
00EA=э
0397=ю
00E4=я
000E0000000300020000={Tag 1}
000E0000000300020001={Tag 2}
000E0000000300020002={Tag 3}
000E0000000300020003={Tag 4}
.....
000E00570065006C0063={Tag 484}
000E0057006800610074={Tag 485}
000E005900650073002C={Tag 486}
000E0059006F00750020={Tag 487}
.....
000A
ends
0000
Цитата: Oraculum от 24 марта 2012, 23:02:43Нужно, нужно, если не UTF-16 или UTF-8.
Дык, я про Юникод и говорил :)
Цитата: TrickZter от 24 марта 2012, 23:20:17Дык, я про Юникод и говорил :)
Так ты в отдельное предложение выделил, непонятна же мысль потом. :)
так убирать эту хрень (cp1251)?
Цитата: Anton от 25 марта 2012, 00:01:44так убирать эту хрень (cp1251)?
Так-то да, но можешь ещё таблицу прикрепить, что ясно всё было.
Убрал... перестал ругаться. Надо же.
(в аттаче все прикреплено (только таблица с cp1251, архив просто уже был со всем барахлом, лень перепаковывать было), но у меня там другие проблемы есть)... некоторые строки текста не отображает.
Хотя визуально все выглядит правильно.
TrickZter, можно тебя попросить очередной раз о помощи?
(Ну или кто-нить еще может добрый поможет? :) )
Игра: Skyward Sword (Wii).
Имеем: проекты к части текстовых файлов, таблицы, плагин (в нем коды, где участвует стоп-байт), - которые мне сделал dnd1, но который очередной раз пропал.
Цель: доделать проекты к остальным файлам (если плагин сделан правильно, и если я пойму принцип)...
Текстовые файлы в формате *.msbt.
Пойнтеры начинаются в блоке TXT2, заканчиваются сразу перед текстом.
После заголовка "TXT2" идут 12 байт, нам не сильно нужные, потом идет 4 байта, указывающих, сколько всего текстовых блоков ("диалогов") в файле (в примере, который в аттаче: 00 00 00 98 (это якобы 152 диалога, так оно и в проекте), Дальше пошел первый пойнтер: 00 00 02 64. Последний: 00 00 0F F0 (?).
Текст в диапазоне 0000FF4-0004CAF.
Смещение, получается, FF4-264=D90.
Судя по тому, что в сделанных проектах, которые даже частично работают, параметры такие:
пойнтеры 4 байтные, интервал=0, shiftLeft=0, Multiply=2, Align=1, Motorola=True, SeekSame=True.
Теперь проблема: открыв проект, видим, например, строку 35 (слово "Saved"). (в строках 38 и 41 похожая проблема, тоже).
После нее идет строка {Tag 426} (это один из управляющих, или как их там, кодов: 00 0E 00 02 00 02 00 04 00 00), в таблице/плагине записан.
Сразу после этого кода идет стоп-байт "00 00", потом перенос "00 0A" (но в круптаре его не показывает - идет сразу следующий блок с текстом: "Are you sure you want to quit?".
Но в оригинальном файле между "Saved" и "Are you sure you want to quit?" есть еще коды, и надписи на кнопках: Save/Save and quit/Cancel ("quit" выделено красным цветом: 000E0000000300020001 quit 000E000000030002FFFF).
А круптар их не показывает...
Пробовал данный файл в игре, практически все нормально работает, но с этими Save/Save and quit/Cancel - косяк.
(Вместо трех кнопок с этими надписями показывает тоже три кнопки, но одна пустая, а на двух других надписи "Yes" и "No" почему-то. (Это даже и не переводя - это просто если пересчитать пойнтеры и вставить в игру).
Мне, собсно, интересно, где ошибка?
В проекте, таблице или плагине?
В остальных проектах тоже нашел ошибки (судя по тому, что показывает игра), но то потом...
Цитата: Anton от 25 марта 2012, 00:44:05Сразу после этого кода идет стоп-байт "00 00", потом перенос "00 0A" (но в круптаре его не показывает - идет сразу следующий блок с текстом: "Are you sure you want to quit?".
На стоп-байте чтение обычно прерывается.
Цитата: Джинни от 25 марта 2012, 06:30:14На стоп-байте чтение обычно прерывается.
Я это знаю, но стоп-байт присутствует же в других кодах.
Пусть продолжает считывать то, что СРАЗУ за этим стоп-байтом - 00 0A. Но не хочет. Дальше-то диалоги читает, но почему-то пропускает эти вот save/save and quit/cancel.
Пробовал в таблицу записывать и его, сразу за 00 0E 00 02 00 02 00 04 00 00, и последующий 000A, все равно спотыкается.
Т.е. делал и такую строку: 00 0E 00 02 00 02 00 04 00 00
00 00, и такую 00 0E 00 02 00 02 00 04 00 00
00 00 00 0A - не показывает save/save and quit/cancel...
Зато если поставить тупо неправильное смещение, начинает эти строки видеть, но остальное все, естественно, разлазится.
Присутствует, не присутствует. Если плагин не определяет, что 0000 является частью другого контрольного кода, то считывание останавливается.
Ты не мог бы посмотреть приаттаченный выше проект и сказать, где ошибки?
Если в плагине, тогда облом. Но может и не в нем...
В том архиве нет исходников плагина.
У меня их тоже нет. Нельзя просто посмотреть, правильно ли составлен проект/таблица, хотя бы?
Если все правильно - значит ошибка в плагине.
Если нет - укажи ошибки в проекте/таблице.
Если не хочешь смотреть - так и скажи.
В таблице встречаются коды с большим количеством нулей. Какие-то из них плагин не учитывает и заканчивает чтение на 0000.
В данном файле - спотыкается именно на коде 00 0E 00 02 00 02 00 04 00 00 - {Tag 426}.
Дальше-то он читает текст: "Are you sure you want to quit?".
Но перед этим пропускается блок текста с "Save/Save and quit..." ?
(и дальше по файлу, после {Tag 426} - тоже спотыкается).
Это точно ошибка в плагине? Не в таблицах?
Просто в проектах к Wind Waker и Phantom Hourglass, которые тоже делал dnd1, ошибок в плагинах не было, поэтому я и в смущении...
Сам проект правильно составлен? Пойнтеры именно такие, и с такими параметрами, как в проекте?
Цитата: Anton от 25 марта 2012, 21:35:21Это точно ошибка в плагине? Не в таблицах?
Точно в плагине.
Цитата: Джинни от 26 марта 2012, 07:51:00Точно в плагине.
Понятно, спасибо.
Тогда облом пока...
Цитата: Джинни от 26 марта 2012, 07:51:00Multiply=2, Align=1,
Кстати, для двухбайтной кодировки нужно ставить Align = 2 (в новой версии этот пункт называется ptCharSize, а Multiply - ptAlignment).
Цитата: Джинни от 26 марта 2012, 11:31:28Кстати, для двухбайтной кодировки нужно ставить Align = 2
Где-то я об этом тут уже читал... Но оно одинаково показывает, что с 1, что с 2.
Поставлю 2, как скажешь.
В общем, залез я в дебри...
Поставил дельфи, скачал исходники плагинов.
Открыл null.dpr.
Куда и как вписывать нужные мне комбинации кодов... ? (вот эти все дела интересные: 000E000300010000 и т.д.)
Или не все так просто?
Ну там нет такого. чтобы надо было что-то куда-то вписывать. Нужно переписать код чтения строки. Функция GetStrings.
Массив ROM содержит весь загруженный ROM-файл в памяти. Переменная X - адрес откуда считывать.
ROM[X] ссылается на первый байт считываемой строки.
function GetStrings(X, Sz: Integer): PTextStrings; stdcall;
var
PW: PWord; PC: PAnsiChar absolute PW;
begin
New(Result, Init);
with Result.Add^ do
begin
PW := Addr(ROM[X]);
while PW^ <> 0 do
begin
if PW^ = $0E00 then // Если контрольный код, то считать 8 байтов данных в строку
begin
Str := Str + PC^ + PC^;
Inc(PW);
Str := Str + PC^ + PC^;
Inc(PW);
Str := Str + PC^ + PC^;
Inc(PW);
Str := Str + PC^ + PC^;
Inc(PW);
end; // Считать 2 байта в строку
Str := Str + PC^ + PC^;
Inc(PW);
end;
end;
end;
Цитата: Джинни от 26 марта 2012, 12:50:19Переменная X - адрес откуда считывать.
А если там много файлов, и адреса все разные, а плагин нужен общий?
Что-то туго мне с этим всем...
Плагин одновременно только с одним файлом работает. Но можно сделать так, что в массиве ROM будет храниться список файлов. Этот список загружать плагином. Вместо пойнтеров передавать номера файлов. Каждый файл загружать и сохранять внутри плагина самостоятельно.
Не для меня эта кухня, короче...
Смотрю готовый плагин (тот, который есть) в хексе - там куча этих кодов есть: 000Е. Т.е. все, которые прописаны в таблице, есть и в файле плагина. Разделены байтами 000А (перевод каретки), (в игре такой же код).
Ты говоришь, их вписывать не надо...
Названий файлов с текстом, для которых он делалася - не вижу.
Ничего не понимаю. Не моя это кухня, не моя. И до автора не могу достучаться, пропал...
Код для простого плагина, который будет всё это загружать, парой постов выше. Просто замени функцию и скомпилируй.
Только проект NULL.dpr переименуй во что-нибудь другое и внутри файла, где написано null измени название.
Для функции GetData вот такой код:
function GetData(TextStrings: PTextStrings): AnsiString; stdcall;
var
R: PTextString;
I: Integer;
begin
Result := '';
If TextStrings = NIL then Exit;
With TextStrings^ do
begin
R := Root;
While R <> NIL do
begin
Result := Result + R^.Str + #0 + #0;
R := R^.Next;
end;
end;
end;
Попробовал. Заменил, скомпилил, подгрузил в проект, обновил список пойнтеров.
Вместо текста одни нолики показывает...
Выложи файл проекта, файл с оригинальным текстом и исходники плагина, который ты сделал.
В аттаче.
Только я не "сделал" исходники. Поменял просто на тот код, который ты мне дал ).
Да знаю я, как вы меняете.
[Дата добавления: 26 марта 2012, 17:37:09]
Окей. Моя ошибочка.
function GetStrings(X, Sz: Integer): PTextStrings; stdcall;
type
TWordRec = packed record
A: Char;
B: Char;
end;
var
PW: PWord; PC: ^TWordRec absolute PW;
begin
New(Result, Init);
with Result.Add^ do
begin
PW := Addr(ROM[X]);
while PW^ <> 0 do
begin
if PW^ = $0E00 then
begin
Str := Str + PC.A + PC.B;
Inc(PW);
Str := Str + PC.A + PC.B;
Inc(PW);
Str := Str + PC.A + PC.B;
Inc(PW);
Str := Str + PC.A + PC.B;
Inc(PW);
end;
Str := Str + PC.A + PC.B;
Inc(PW);
end;
end;
end;
Вот на это поменяй, всё будет работать.
Текст показало. Но - точно так же, как и было - после Saved (строка 35 в проекте) опять пишет код {Tag 426}, и опять выкинуло тексты:
{Tag 15}Save{Tag 18}Save and {Tag 2}quit{Tag 14}{Tag 19}Cancel
В строках 38 и 41 такая же ситуация - вместо {Tag 15}Save{Tag 18}Save and {Tag 2}quit{Tag 14}{Tag 19}Cancel - код {Tag 426}.
Почему оно их упорно выкидывает?..
И нолики (/00/00) в конце диалогов пропали (при kpflags h01). (при h00 появляются только байты переноса, а стопов нет).
Хотя нолики, это, наверное, не очень смертельно, да? )
И коды вот эти, которые с 000E начинаются, могут быть вроде не только 10-байтные, а еще и 12, и, по-моему, даже 14-байтными (в других файлах с текстом наблюдал).
И один код 8-байтный: 000E000200000000={Link} (имя игрока).
Ноликов и не должно быть. Так плагин написан.
Проблемы-то какие? Вынимает он как положено. Если там есть ещё какие-то коды, которые начинаются не с 000У, то их тоже надо учесть.
Ну фиг с ними с ноликами.
Почему кусок текста выкидывает?
Коды вроде все с 000Е начинаются.
PS. такой небольшой вопрос: при вводе адреса последнего пойнтера в проекте, писать его ПЕРВЫЙ или ПОСЛЕДНИЙ байт?
Кусок текста не выкидывается. Считывание останавливается при встрече 00 00
Контрольные коды занимают 10 байт каждый.
000E0002000200040000={Tag 426}
После этого контрольного кода идёт ещё один 0000, поэтому происходит останов.
Если дальше после этого 0000 идёт ещё 000A, то это не значит, что оно является частью этой строки.
Но может быть, конечно, что некоторые коды занимают больше 10 байт. В этом тебе надо самому разобраться и добавить дополнительные условия в код плагина.
[Дата добавления: 26 марта 2012, 18:36:42]
ЦитироватьPS. такой небольшой вопрос: при вводе адреса последнего пойнтера в проекте, писать его ПЕРВЫЙ или ПОСЛЕДНИЙ байт?
Какой угодно.
Цитата: Джинни от 26 марта 2012, 18:33:50В этом тебе надо самому разобраться и добавить дополнительные условия в код плагина.
Есть, по-идее, 12 байтные. (и 8-байтные).
Вот, например, явно 12 байт. Это в другом текстовом файле игры:
000E00020002000400000000
000E000100040002001E002D
000E000100050004002D0000
000E000100050004003C0000
000E00010009000400000001
000E00010009000400000002
000E00010009000400000003
000E00010009000400000004
000E00010009000400000005
000E00010009000400000006
000E00010009000400000007
000E00010009000400000008
000E00010009000400000012
000E00010009000400000057
000E00010009000400000400
000E00010009000400000404
000E00010009000400000609
000E00010009000400000700
000E00010009000400000B05
000E00010009000400000C00
000E00010009000400000C01
000E00010009000400000C02
000E00010009000400000C03
000E00010009000400000C04
000E00010009000400000C05
000E00010009000400000C06
000E00010009000400000C16
000E00010009000400000D00
000E00010009000400000E12
000E00010009000400001100
000E00010009000400001200
000E000100090004000C0C00
000E000100090004000F1300
000E00010012000400000003
000E0001001200040000000Dвот 8:
000E000300010000
000E000200000000
Как добавлять условия, я не знаю.
Но кнопку "скомпилить" нажимать научился )
Ну вот надо проанализировать каждый код и понять по какому принципу они различаются. Например, я вижу, что во всех 12-байтных кодах после 000E идёт 0001, кроме одного, в котором 0002. Но это, возможно, ошибка ваша.
Или контрольные коды делятся на большее количество частей.
Там есть такие, в которых после 000E идут простые буквы.
Значит 000E - самостоятельный код.
А после него могут идти другие, которые начинаются с 0001, 0002 и т.д.
Цитата: Джинни от 26 марта 2012, 18:50:35Например, я вижу, что во всех 12-байтных кодах после 000E идёт 0001, кроме одного, в котором 0002. Но это, возможно, ошибка ваша.
Цитата: Джинни от 26 марта 2012, 18:33:50000E0002000200040000={Tag 426} После этого контрольного кода идёт ещё один 0000, поэтому происходит останов.
Вот этот один с 0002 - это {Tag 426}, но с добавленными мной 2 байтами: 00 00.
Может, я неправ, может это и стоп-байт, эти нули. Но потом идет 000A, и сразу новый код: 000E000100000002FFFF (отображение кнопки (на которой пишется save), вроде) - {Tag 15}.
Цитата: Джинни от 26 марта 2012, 18:50:35Значит 000E - самостоятельный код.
Почему-то мне кажется, что нет.
Тяжело это все... Эх. :)
Цитата: Anton от 26 марта 2012, 21:03:04Почему-то мне кажется, что нет.
Надо разбираться, а не гадать.
Цитата: TrickZter от 26 марта 2012, 23:00:01Надо разбираться, а не гадать.
Нет там отдельного кода 000E. Не может быть...
После него всегда нули, букв нет, не знаю, где Джин увидел буквы).
Есть 8 байтные коды, 10, и 12.
Есть стоп (0000), есть перенос (000A).Ой, и правда. :-|
Что-то такое есть... В табличке, в районе Tag 471 и дальше.
Попробовал добавить еще две строки в плагин:
Str := Str + PC.A + PC.B;
Inc(PW);
Str := Str + PC.A + PC.B;
Inc(PW);
Стало показывать надписи Save/Save and quit/ и другие.
Но кастрировало (в том файле, что в аттаче) надпись Cancel везде. (перед ней код 000E0001000200020000 {Tag 19}, его считало как 000E000100020002 и поставило стоп байт и не считало Cancel.
В других файлах показало пропущенные ранее куски диалогов. И там явно видно, что осталось просто поискать остальные коды и добавить в таблицу...
Бля... :'(
Хотя интересно...
Где ж этот dnd1 исчез, вечно на полгода как пропадет...
К Spirit Tracks вон плагин/проект/таблицы сделал, (таблица в аттаче, если интересно посмотреть - в конце файла коды прикольные).
Цитата: Anton от 27 марта 2012, 00:17:20Попробовал добавить еще две строки в плагин:
Не нужно пробовать просто так что-то добавлять. Разбери просто каждый отдельный код на части и посмотри от чего зависит количество байт.
Цитата: Джинни от 27 марта 2012, 07:30:50Разбери просто каждый отдельный код на части и посмотри от чего зависит количество байт.
Сдается мне, что не осилю я такие разборы... (
Если не попытаешься, то не осилишь конечно.
Как пытаться-то )
Ну смотрю я на код, вижу циферьки.
А дальше что с этим делать...
Сравнивать.
Ничего не получается...
Смотрел другой файл, вроде все нормально (с новым нашим плагином), но опять спотыкается круптар (или я) на вот такой фигне: есть код 000E000200000000 - это имя игрока = {Link}.
В основном он встречается отдельно, но иногда перед ним идет код 000E000300010000 (назовем его, скажем, {Tag 01}.
И все. Начинаются спотыкания.
Выводится: {Tag 01}/00/0E/00/02- и все. (Нули выкинуло 4 штуки нафиг, следующий за ними текст проигнорировало).
(Дальше должен идти еще кусок диалога, но его не показывает, а идет следующий блок текста).
Ну и с файлами, примеры которых есть выше (Save/Save and quit/...) ничего не изменилось. Не показывает.
И что-то слишком много кодов... Разве может быть их такое количество?
Вот только немного нашел, "на основе" кода {Tag 87} (он был в изначальной таблице, от dnd1):
И то это явно не все комбинации...
000E0001000900040000={Tag 87}
000E00010009000400000001={Tag 8701}
000E00010009000400000002={Tag 8702}
000E00010009000400000003={Tag 8703}
000E00010009000400000004={Tag 8704}
000E00010009000400000005={Tag 8705}
000E00010009000400000006={Tag 8706}
000E00010009000400000007={Tag 8707}
000E00010009000400000008={Tag 8708}
000E00010009000400000012={Tag 8709}
000E00010009000400000057={Tag 8710}
000E00010009000400000400={Tag 8711}
000E00010009000400000404={Tag 8712}
000E00010009000400000609={Tag 8713}
000E00010009000400000700={Tag 8714}
000E00010009000400001100={Tag 8715}
000E00010009000400001200={Tag 8716}
000E00010009000400000B05={Tag 8717}
000E00010009000400000C00={Tag 8718}
000E00010009000400000C01={Tag 8719}
000E00010009000400000C05={Tag 8720}
000E00010009000400000C06={Tag 8721}
000E00010009000400000C16={Tag 8722}
000E00010009000400000D00={Tag 8723}
000E00010009000400000E12={Tag 8724}
Ц. Ну естественно он спотыкается. Плагин не завершён. Чтобы его завершить, нужно понять, что отвечает за размер кода.
Цитата: Anton от 27 марта 2012, 17:56:47000E0001000900040000={Tag 87}
000E00010009000400000001={Tag 8701}
000E00010009000400000002={Tag 8702}
000E00010009000400000003={Tag 8703}
000E00010009000400000004={Tag 8704}
000E00010009000400000005={Tag 8705}
000E00010009000400000006={Tag 8706}
000E00010009000400000007={Tag 8707}
000E00010009000400000008={Tag 8708}
000E00010009000400000012={Tag 8709}
000E00010009000400000057={Tag 8710}
000E00010009000400000400={Tag 8711}
000E00010009000400000404={Tag 8712}
000E00010009000400000609={Tag 8713}
000E00010009000400000700={Tag 8714}
000E00010009000400001100={Tag 8715}
000E00010009000400001200={Tag 8716}
000E00010009000400000B05={Tag 8717}
000E00010009000400000C00={Tag 8718}
000E00010009000400000C01={Tag 8719}
000E00010009000400000C05={Tag 8720}
000E00010009000400000C06={Tag 8721}
000E00010009000400000C16={Tag 8722}
000E00010009000400000D00={Tag 8723}
000E00010009000400000E12={Tag 8724}
Это уже что-то.
Цитата: Джинни от 27 марта 2012, 19:25:18Чтобы его завершить, нужно понять, что отвечает за размер кода
Вот это я точно не осилю.
Я могу понять, за что овечает код (ну, там, пауза в диалоге это, или цвет, или код иконки кнопки и т.п...)
Цитата: Джинни от 27 марта 2012, 19:25:18Это уже что-то.
С такими пирогами там будет несколько тысяч таких кодов...
Цитата: Anton от 27 марта 2012, 20:58:41Я могу понять, за что овечает код (ну, там, пауза в диалоге это, или цвет, или код иконки кнопки и т.п...)
Вот пойми и напиши различия здесь. Их не будет несколько тысяч, если понять принцип.
Мы с dnd1, я так понимаю, пользовались плагином, который написал Гривер. Только его нужно еще модифицировать под большее число элементов в массиве, и я не знаю, как он с двухбайтовой кодировкой работает. Может, Джинни что-то подскажет.
library New_Plug;
uses
ShareMem,SysUtils,
Needs in 'K:\Translations\zeldaTP\Kruptar_PlugSrc\Needs.pas';
{$E .kpl}
resourcestring
SKPLDescription = 'The Legend of Zelda: Twilight Princess';
Var
ROM: PBytes = NIL;
RomSize: Integer = 0;
EndsRoot: PTableItem = NIL;
MaxCodes: Integer = 0;
Align: Integer = 1;
Function Description: String; stdcall;
begin
Result := SKPLDescription;
end;
Function NeedEnd: Boolean; stdcall;
begin
Result := True;
end;
Function GetMethod: TMethod; stdcall;
begin
Result := tmNone;
end;
Procedure SetVariables(X: PBytes; Sz: Integer; ER: PTableItem; MC, AL: Integer); stdcall;
begin
ROM := X;
RomSize := Sz;
EndsRoot := ER;
MaxCodes := MC;
Align := AL;
end;
Function GetData(TextStrings: PTextStrings): String; stdcall;
Var R: PTextString;
begin
Result := '';
If TextStrings = NIL then Exit;
With TextStrings^ do
begin
R := Root;
While R <> NIL do
begin
Result := Result + R^.Str;
R := R^.Next;
end;
end;
end;
Function GetStrings(X, Sz: Integer): PTextStrings; stdcall;
Const
ArrayNumber = 172;// Количество массивов
MatchingArray: array[0..ArrayNumber-1, 0..9] of byte = ((6,$1A, $06, $FF, $00, $00, $00,0,0,0),
(6, $1A, $06, $FF, $00, $00, $01,0,0,0),
(6, $1A, $06, $FF, $00, $00, $02,0,0,0),
(6, $1A, $06, $FF, $00, $00, $03,0,0,0),
(6, $1A, $06, $FF, $00, $00, $04,0,0,0),
(6, $1A, $06, $FF, $00, $00, $05,0,0,0),
(6, $1A, $06, $FF, $00, $00, $06,0,0,0),
(6, $1A, $06, $FF, $00, $00, $07,0,0,0),
(6, $1A, $06, $FF, $00, $00, $08,0,0,0),
(5, $1A, $05, $00, $00, $00,0,0,0,0),
(5, $1A, $05, $00, $00, $01,0,0,0,0),
(5, $1A, $05, $00, $00, $02,0,0,0,0),
(5, $1A, $05, $00, $00, $0A,0,0,0,0),
(5, $1A, $05, $00, $00, $0B,0,0,0,0),
(5, $1A, $05, $00, $00, $0C,0,0,0,0),
(5, $1A, $05, $00, $00, $0D,0,0,0,0),
(5, $1A, $05, $00, $00, $0E,0,0,0,0),
(5, $1A, $05, $00, $00, $0F,0,0,0,0),
(5, $1A, $05, $00, $00, $10,0,0,0,0),
(5, $1A, $05, $00, $00, $11,0,0,0,0),
(5, $1A, $05, $00, $00, $12,0,0,0,0),
(5, $1A, $05, $00, $00, $13,0,0,0,0),
(5, $1A, $05, $00, $00, $14,0,0,0,0),
(5, $1A, $05, $00, $00, $15,0,0,0,0),
(5, $1A, $05, $00, $00, $16,0,0,0,0),
(5, $1A, $05, $00, $00, $17,0,0,0,0),
(5, $1A, $05, $00, $00, $18,0,0,0,0),
(5, $1A, $05, $00, $00, $1A,0,0,0,0),
(5, $1A, $05, $00, $00, $1B,0,0,0,0),
(5, $1A, $05, $00, $00, $1C,0,0,0,0),
(5, $1A, $05, $00, $00, $1D,0,0,0,0),
(5, $1A, $05, $00, $00, $20,0,0,0,0),
(5, $1A, $05, $00, $00, $21,0,0,0,0),
(5, $1A, $05, $00, $00, $23,0,0,0,0),
(5, $1A, $05, $00, $00, $29,0,0,0,0),
(5, $1A, $05, $00, $00, $2B,0,0,0,0),
(5, $1A, $05, $00, $00, $2C,0,0,0,0),
(5, $1A, $05, $00, $00, $2D,0,0,0,0),
(5, $1A, $05, $00, $00, $2E,0,0,0,0),
(5, $1A, $05, $00, $00, $31,0,0,0,0),
(5, $1A, $05, $00, $00, $32,0,0,0,0),
(5, $1A, $05, $00, $00, $35,0,0,0,0),
(5, $1A, $05, $00, $00, $38,0,0,0,0),
(5, $1A, $05, $00, $00, $39,0,0,0,0),
(5, $1A, $05, $00, $00, $3B,0,0,0,0),
(5, $1A, $05, $00, $00, $19,0,0,0,0),
(5, $1A, $05, $01, $00, $00,0,0,0,0),
(5, $1A, $05, $01, $00, $0A,0,0,0,0),
(5, $1A, $05, $01, $00, $14,0,0,0,0),
(5, $1A, $05, $03, $00, $01,0,0,0,0),
(5, $1A, $05, $03, $00, $02,0,0,0,0),
(5, $1A, $05, $03, $00, $04,0,0,0,0),
(5, $1A, $05, $03, $00, $05,0,0,0,0),
(5, $1A, $05, $03, $00, $06,0,0,0,0),
(5, $1A, $05, $03, $00, $07,0,0,0,0),
(5, $1A, $05, $03, $00, $08,0,0,0,0),
(5, $1A, $05, $03, $00, $09,0,0,0,0),
(5, $1A, $05, $03, $00, $0A,0,0,0,0),
(5, $1A, $05, $03, $00, $0B,0,0,0,0),
(5, $1A, $05, $03, $00, $0C,0,0,0,0),
(5, $1A, $05, $03, $00, $0E,0,0,0,0),
(5, $1A, $05, $03, $00, $0F,0,0,0,0),
(5, $1A, $05, $03, $00, $10,0,0,0,0),
(5, $1A, $05, $03, $00, $11,0,0,0,0),
(5, $1A, $05, $03, $00, $13,0,0,0,0),
(5, $1A, $05, $03, $00, $14,0,0,0,0),
(5, $1A, $05, $00, $00, $22,0,0,0,0),
(5, $1A, $05, $00, $00, $24,0,0,0,0),
(5, $1A, $05, $00, $00, $3C,0,0,0,0),
(5, $1A, $05, $00, $00, $3E,0,0,0,0),
(5, $1A, $05, $00, $00, $3F,0,0,0,0),
(5, $1A, $05, $05, $00, $07,0,0,0,0),
(5, $1A, $05, $05, $00, $08,0,0,0,0),
(5, $1A, $05, $05, $00, $0A,0,0,0,0),
(5, $1A, $05, $05, $00, $0B,0,0,0,0),
(5, $1A, $05, $05, $00, $0D,0,0,0,0),
(5, $1A, $05, $05, $00, $0E,0,0,0,0),
(5, $1A, $05, $06, $00, $02,0,0,0,0),
(5, $1A, $05, $06, $00, $03,0,0,0,0),
(5, $1A, $05, $06, $00, $04,0,0,0,0),
(5, $1A, $05, $06, $00, $05,0,0,0,0),
(5, $1A, $05, $06, $00, $06,0,0,0,0),
(5, $1A, $05, $06, $00, $0A,0,0,0,0),
(5, $1A, $05, $06, $00, $0B,0,0,0,0),
(6, $1A, $06, $00, $00, $08, $00,0,0,0),
(6, $1A, $06, $00, $00, $08, $01,0,0,0),
(6, $1A, $06, $00, $00, $08, $02,0,0,0),
(6, $1A, $06, $00, $00, $08, $03,0,0,0),
(6, $1A, $06, $00, $00, $08, $04,0,0,0),
(5, $1A, $06, $00, $00, $09,0,0,0,0),
(6, $1A, $06, $00, $00, $1E, $01,0,0,0),
(6, $1A, $06, $00, $00, $1F, $00,0,0,0),
(6, $1A, $06, $00, $00, $30, $00,0,0,0),
(6, $1A, $06, $00, $00, $30, $01,0,0,0),
(6, $1A, $06, $00, $00, $30, $02,0,0,0),
(6, $1A, $06, $00, $00, $30, $03,0,0,0),
(6, $1A, $06, $00, $00, $33, $01,0,0,0),
(6, $1A, $06, $00, $00, $33, $02,0,0,0),
(6, $1A, $06, $00, $00, $34, $00,0,0,0),
(6, $1A, $06, $00, $00, $37, $00,0,0,0),
(6, $1A, $06, $00, $00, $37, $01,0,0,0),
(6, $1A, $06, $00, $00, $37, $02,0,0,0),
(6, $1A, $06, $05, $00, $00, $00,0,0,0),
(6, $1A, $06, $05, $00, $00, $01,0,0,0),
(6, $1A, $06, $05, $00, $03, $00,0,0,0),
(6, $1A, $06, $05, $00, $03, $01,0,0,0),
(6, $1A, $06, $05, $00, $0C, $00,0,0,0),
(6, $1A, $06, $05, $00, $0C, $01,0,0,0),
(7, $1A, $07, $00, $00, $36, $00, $14,0,0),
(7, $1A, $07, $00, $00, $36, $00, $8A,0,0),
(7, $1A, $07, $00, $00, $36, $00, $1E,0,0),
(7, $1A, $07, $00, $00, $36, $00, $2D,0,0),
(7, $1A, $07, $00, $00, $36, $00, $3C,0,0),
(7, $1A, $07, $00, $00, $04, $00, $1E,0,0),
(7, $1A, $07, $00, $00, $04, $00, $4B,0,0),
(7, $1A, $07, $00, $00, $04, $06, $EA,0,0),
(7, $1A, $07, $00, $00, $04, $00, $2B,0,0),
(7, $1A, $07, $00, $00, $04, $00, $6D,0,0),
(7, $1A, $07, $00, $00, $04, $00, $41,0,0),
(7, $1A, $07, $00, $00, $04, $00, $21,0,0),
(7, $1A, $07, $00, $00, $04, $00, $25,0,0),
(7,$1A, $07, $00, $00, $07, $00, $00,0,0),
(7,$1A, $07, $00, $00, $07, $00, $01,0,0),
(7,$1A, $07, $00, $00, $07, $00, $02,0,0),
(7,$1A, $07, $00, $00, $07, $00, $03,0,0),
(7,$1A, $07, $00, $00, $07, $00, $04,0,0),
(7,$1A, $07, $00, $00, $07, $00, $05,0,0),
(7,$1A, $07, $00, $00, $07, $00, $06,0,0),
(7,$1A, $07, $00, $00, $07, $00, $07,0,0),
(7,$1A, $07, $00, $00, $07, $00, $08,0,0),
(7,$1A, $07, $00, $00, $07, $00, $09,0,0),
(7,$1A, $07, $00, $00, $07, $00, $0A,0,0),
(7,$1A, $07, $00, $00, $07, $00, $0B,0,0),
(7,$1A, $07, $00, $00, $07, $00, $0C,0,0),
(7,$1A, $07, $00, $00, $07, $00, $0D,0,0),
(7,$1A, $07, $00, $00, $07, $00, $0E,0,0),
(7,$1A, $07, $00, $00, $07, $00, $0F,0,0),
(7,$1A, $07, $00, $00, $07, $00, $10,0,0),
(7,$1A, $07, $00, $00, $07, $00, $11,0,0),
(7,$1A, $07, $00, $00, $07, $00, $12,0,0),
(7,$1A, $07, $00, $00, $07, $00, $13,0,0),
(7,$1A, $07, $00, $00, $07, $00, $14,0,0),
(7,$1A, $07, $00, $00, $07, $00, $15,0,0),
(7,$1A, $07, $00, $00, $07, $00, $16,0,0),
(7,$1A, $07, $00, $00, $07, $00, $17,0,0),
(7,$1A, $07, $00, $00, $07, $00, $18,0,0),
(7,$1A, $07, $00, $00, $07, $00, $19,0,0),
(7,$1A, $07, $00, $00, $07, $00, $1A,0,0),
(7,$1A, $07, $00, $00, $07, $00, $1B,0,0),
(7,$1A, $07, $00, $00, $07, $00, $1C,0,0),
(7,$1A, $07, $00, $00, $07, $00, $1D,0,0),
(7,$1A, $07, $00, $00, $07, $00, $1E,0,0),
(7,$1A, $07, $00, $00, $07, $00, $1F,0,0),
(7,$1A, $07, $00, $00, $07, $00, $2D,0,0),
(7,$1A, $07, $00, $00, $04, $00, $00,0,0),
(7,$1A, $07, $00, $00, $04, $00, $05,0,0),
(7,$1A, $07, $00, $00, $04, $00, $2D,0,0),
(7,$1A, $07, $00, $00, $04, $00, $32,0,0),
(7,$1A, $07, $00, $00, $04, $00, $3C,0,0),
(7,$1A, $07, $00, $00, $04, $00, $0F,0,0),
(7,$1A, $07, $00, $00, $04, $00, $19,0,0),
(7,$1A, $07, $00, $00, $04, $00, $14,0,0),
(7,$1A, $07, $00, $00, $04, $00, $0A,0,0),
(6,$1A, $07, $00, $00, $05, $00,0,0,0),
(6,$1A, $07, $FF, $00, $01, $00,0,0,0),
(7,$1A, $09, $03, $00, $00, $00, $00,0,0),
(9,$1A, $09, $05, $00, $09, $00, $00, $00, $C8),
(9,$1A, $09, $05, $00, $09, $00, $00, $03, $E8),
(9,$1A, $09, $05, $00, $09, $00, $00, $07, $D0),
(9,$1A, $09, $00, $00, $25, $00, $00, $00, $00),
(9,$1A, $09, $00, $00, $25, $00, $00, $00, $01),
(9,$1A, $09, $00, $00, $28, $00, $00, $01, $0E));
//Нулевой элемент последовательности содержит ее длину. Десять знаков в каждой последовательности взяты просто с запасом
Var
B, i, j: byte;
Identity: boolean;
ControlArray: array[0..9] of byte;// C запасом
begin
Result := NIL;
If (X >= RomSize) or (X < 0) then Exit;
New(Result, Init);
With Result^.Add^ do
begin
Str:='';
Repeat
B := ROM^[X];
For j := 0 to ArrayNumber-1 do
Begin
Identity:= true;
For i := 0 to MatchingArray[j, 0]-1{-1, потому что длина задана от единицы} do
Begin
ControlArray[i] := ROM^[X + i];
If ControlArray[i] <> MatchingArray[j, i+1]{+1 потому что нулевой - длина} then Identity := false;
End;
If Identity = true then break; // Если хоть одна последовательность совпала, дальше не ищем
End;
If B = 0 then
Begin
Str := Str + Char(B);// Сохраняем ноль в скрипт и выходим
Break;
End;
If Identity = true then
begin
For i := 0 to MatchingArray[j, 0]-1 do Str := Str + Char(ControlArray[i]); //В j сохранился номер совпавшей последовательности
X := X + MatchingArray[j, 0]-1;
end
Else Str := Str + Char(B);
Inc(X);
Until False;
end;
end;
exports
GetMethod,
SetVariables,
GetData,
GetStrings,
DisposeStrings,
NeedEnd,
Description;
end.
Мне уже нечего подсказывать. Нет смысла загружать по огромному списку кодов, если можно сделать проще, проанализировав эти коды, и написать короткую функцию считывания.
Цитата: Джинни от 28 марта 2012, 06:51:24Их не будет несколько тысяч, если понять принцип.
Ну какой там принцип... По возрастающей идут, после 000E...
Просмотрел, вот инфа, если это вообще будет полезно...
Спойлер
000F 0001 000F - неизвестно, иногда встречается перед именем игрока.
000E 0002 0000 0000 - имя игрока/файла сохранения
000E 0000 0003 0002 000x - (х= от 0 до С) - начало выделения цветом,
000E 0000 0003 0002 FFFF - конец выделения цветом
Отображение плашек ("кнопок") с выбором ответов (save, cancel, yes, no и т.д.):
000E 0002 0002 0004 0000 0000 - неизвестно, иногда встречается перед выбором ответов
(перед "пропадающими" надписями save/save and quit/......)
000E 0001 0000 0002 FFFF <- похоже, что всегда идет первым перед всеми вариантами ответа.
000E 0001 0001 0002 0000
000E 0001 0001 0002 FF00
000E 0001 0001 0002 FFFF
000E 0001 0002 0002 0000 <- вроде бы плашка еще и с иконкой кнопки "B"
000E 0001 0002 0002 FFFF
000E 0001 0003 0002 0000 - неизвестно
000E 0001 0003 0002 FFFF - неизвестно
000E 0001 0004 0002 xxxx - похоже на паузу в диалогах. xxxx = цифры 0001 до 0054, всего 16 позиций.
естьи 12 байтные - 000E 0001 0004 0002 xxxx хххх
000E 0001 000A 0004 FFFF 00CD - встречается перед диалогами
000E 0001 0005 0004 xxxx - всегда в конце некоторых диалогов, перед стоп-байтом.
(xxxx = цифры от 0000 до 00DC, всего 28 позиций.)
000E 0001 0006 0002 xxCD - похоже на паузу в диалогах. xx = 00, 01, 03, 04, 05, FB, FC, FD, FE, FF
000E 0001 0007 0004 0000 - неизвестно.
000E 0001 0007 0004 000E - неизвестно.
000E 0001 0007 0004 2800 - неизвестно.
000E 0001 0007 0004 FF00 - неизвестно.
000E 0001 0008 0002 00CD - перед надписями на табличках (перед домами NPC, например),
также в одном из диалогов встретился...
000E 0001 0008 0002 01CD - неизвестно.
000E 0001 0008 0002 02CD - неизвестно.
000E 0001 0008 0002 FECD - неизвестно.
000E 0001 0008 0002 FFCD - неизвестно.
000E 0001 0009 0004 xxxx - перед некоторыми диалогами. xxxx = от 0000 до 332A, кодов около 200 или больше (не все
нашел).
000E 0001 0009 0004 xxxx xxxx (11 и 12 байты от 0000 до 1300 (а может и больше).
000E 0001 000A 0004 xxxx |
000E 0001 000B 0004 xxxx | -> в диалогах, xxxx = от 0002 до FFFF, 18 штук.
000E 0001 000C 0004 xxxx |
000E 0001 000D 0002 19xx - всего два кода, xx= 00 и 06
000E 0001 000F 0000 0000
000E 0001 0011 0002 xxCD - неизвестно, xx= от 01 до 09
000E 0001 0012 0004 0000 - неизвестно.
000E 0001 0012 0004 0000 0001 - неизвестно.
000E 0002 0001 0002 xxxx - коды названия предметов. xxxx = от 0001 до 00C7.
Пример диалога выглядит так (как склонять - х.з...):
You got the {Color 6}{Tag 357}{END_COLOR}! The hefty
capacity of this wallet allows you to store
up to {Color 1}500 Rupees {END_COLOR}in it!
Непосредствено названия предметов идут списком ниже в этом же файле.
Они же используются и как заголовок с названием предмета в инвентаре.
С заглавной буквы, естественно.
14 байт! - 000E 0002 0003 0006 0000 0000 00CD - После You caught/You got - ловля насекомых.
Название насекомого: 000E 0003 0004 0002 xxCD, где xx = от 01 до 0F.
000E 0002 0004 0002 xxCD - иконки кнопок джойстиков, курсора... xx = от 01 до 1A
Всего пару раз встречаются, только в одной локации (лес, вроде бы):
000E 000E 0001 0008 0002 01CD
000E 000E 0001 0008 0002 FECD
Вот еще таблица на всякий (коды там еще не все, а некоторые может вообще неправильные...)
Цитата: Anton от 28 марта 2012, 11:48:17000E 0000 0003 0002 000x - (х= от 0 до С) - начало выделения цветом,
000E 0000 0003 0002 FFFF - конец выделения цветом
После 000E бывает 0000?
Цитата: Джинни от 28 марта 2012, 12:27:27После 000E бывает 0000?
Да, в кодах, отвечающих за выделение цветом.
[Дата добавления: 28 марта 2012, 20:38:24]
Так что, Джин, поможешь доделать плагин?
Цитата: Anton от 28 марта 2012, 12:29:42Так что, Джин, поможешь доделать плагин?
Угу, только слово "джинн" пишется с двумя "н". А мой ник написан над аватаркой.
Цитата: Джинни от 29 марта 2012, 08:08:34Угу, только слово "джинн" пишется с двумя "н". А мой ник написан над аватаркой.
Извини, Джинни. )
Очень жду помощи.
Просмотрел еще тексты насчет кода 000E0002000200040000 (после которого шла остановка и не выводились надписи save/save and quit/cancel)
Нашел еще три комбинации. Коды-таки 12 байтные
000E00020002000400000000 - это "наш" код, после него идет 000A и следующий.
и вот еще три:
000E00020002000400000001
000E00020002000400000002
000E00020002000400000003
После них идет или сразу следующий 000E, или 000A (перенос).
В основном они перед выбором ответов. Но также код 000E00020002000400000000 встречается посреди предложения в диалогах, типа так:
"Master, your current selection of pouch items is 000E00020002000400000000".
Мне уже снятся эти 000E...
[Дата добавления: 30 марта 2012, 16:11:21]
Хэлп...
смешно.
Джинни, от тебя стоит ждать помощи с этим плагином?
Игра реально сложная, я сам ни за что не разберусь.
Джинни, не забудь про меня, я когда-то просил чтобы можно было выбирать pnfixed=true сразу для всех поинтеров, чтобы потом вручную каждому не прописывать это... Ну или чтобы по-умолчанию стояло тру, или сделать где-то выбор тру или не тру в настройках... (или сделай билд последней версии лично для меня, а?) Плиз...
Джинни, я все еще надеюсь на твою помощь.
Вот еще инфа по кодам, вроде вся.
Также закончил таблицу, она в аттаче, там абсолютно все коды к этой игре.
1. 000E000300010000 [unk 310] - практически всегда перед именем игрока (000E000200000000), но пару раз нет.
Спотыкается на первых нулях (12 байт считывает, на 13 байте (нули) останавливается и пропускает текст до следующего стоп-байта): 000E000300010000000E0002 0000 0000
Несколько раз идут парно, потом код имени:
000E000300010000 000E000300010000 000E000200000000
В круптаре показывает так: [unk 310]/00/0E/00/03/00/01 стоп, пропускает кусок до следущего стопа, потом читает следующий диалог. (получается, что считывает 14 байт, до первых нулей).
2. Eдинственный код, который начинается не с 000E, а с 000F. Вроде со считыванием проблем нет: 000F0001000F. Всегда перед стоп-байтом (0000), один раз перед переносом (000A).
3. Спотыкается на кодах 12 байт, заканчивающихся нулями.
Например: 000E00010009000428410000
В круптаре выдает: /00/0E/00/01/00/09/00/04/28/41 и стоп.
Такая же ситуация и с 14 байтными (см. ниже).
4. Читает 10 байт до первых нулей и остановка:
000E00020002000400000000. В круптаре показывает: /00/0E/00/02/00/02/00/04/00/00
и пропускает следующий текст, до первого "настоящего" стопа.
5. 14 байтные:
000E0002000300060000000000CD=[Count1]
000E0002000300060000000001CD=[Count2]
000E0002000300060000000002CD=[Count3]
000E0002000300060000000003CD=[Count4]
000E0002000300060000000100CD=[Count5]
000E0002000300060000000102CD=[Count6]
000E0002000300060000000200CD=[Count7]
000E0002000300060000000202CD=[Count8]
000E0002000300060000000300CD=[Count9]
000E0002000300060000000302CD=[Count10]
000E0002000300060000000400CD=[Count11]
000E0002000300060000000402CD=[Count12]
000E0002000300060000000502CD=[Count13]
Выводит текст вот так (например, фраза с кодом 000E0002000300060000000002CD):
Current Session Play Time: [Red2][Red1]/00/0E/00/02/00/03/00/06/00/00 стоп.
С остальными кодами, вроде, все показывает нормально.
Проверяй.
Джинни, ты волшебник.
Все прекрасно показывает. Спасибо!!! :)
Исходники надо?
Да, хотелось бы посмотреть, для понимания (если пойму :)).
Держи.
Спасибо.
Все элегантно, и не надо 2000 кодов вбивать. )
[Дата добавления: 06 апреля 2012, 16:41:35]
Джинни, а что дает параметр PtAlign "2" при двубайтовой кодировке?
Оно вроде бы считает нормально и при "1"...
Для извлечения двухбайтовых строк стандартным плагином. И чтобы вставлялись два байта, если вдруг встретится однобайтовый код в отредактированном тексте.
В моем случае, я так понимаю, лучше оставить 1?
Однобайтовых кодов нет вообще.
2, а не один.
Уже разобрался ))
Ребята, подскажите плиз, как бы мне составить таблицу, со спец символами.
С поинтермами разобрался. Кодировка (с учётом перерисованного шрифта) - win1251. Разрыв строки - 0x01, конец строки - 0х00. Пока таблица выглядит так:
~01
/00
20=
21=!
22="
23=#
24=$
25=%
26=&
27='
28=(
29=)
2A=*
2B=+
2C=,
2D=-
2E=.
2F=/
30=0
31=1
32=2
33=3
34=4
35=5
36=6
37=7
38=8
39=9
3A=:
3B=;
3C=<
3D==
3E=>
3F=?
40=@
41=A
42=B
43=C
44=D
45=E
46=F
47=G
48=H
49=I
4A=J
4B=K
4C=L
4D=M
4E=N
4F=O
50=P
51=Q
52=R
53=S
54=T
55=U
56=V
57=W
58=X
59=Y
5A=Z
5B=[
5C=\
5D=]
5E=^
5F=_
60=`
61=a
62=b
63=c
64=d
65=e
66=f
67=g
68=h
69=i
6A=j
6B=k
6C=l
6D=m
6E=n
6F=o
70=p
71=q
72=r
73=s
74=t
75=u
76=v
77=w
78=x
79=y
7A=z
7B={
7C=|
7D=}
7E=~
80=Ђ
81=Ѓ
82=,
83=ѓ
84=,,
85=...
86=†
87=‡
88=?
89=‰
8A=Љ
8B=‹
8C=Њ
8D=Ќ
8E=Ћ
8F=Џ
90=ђ
91='
92='
93="
94="
95=•
96=–
97=—
98=?
99=™
9A=љ
9B=›
9C=њ
9D=ќ
9E=ћ
9F=џ
A0=
A1=Ў
A2=ў
A3=Ј
A4=¤
A5=Ґ
A6=¦
A7=§
A8=Ё
A9=©
AA=Є
AB=«
AC=¬
AD=­
AE=®
AF=Ї
B0=°
B1=±
B2=І
B3=і
B4=ґ
B5=µ
B6=¶
B7=·
B8=ё
B9=№
BA=є
BB=»
BC=ј
BD=Ѕ
BE=ѕ
BF=ї
C0=А
C1=Б
C2=В
C3=Г
C4=Д
C5=Е
C6=Ж
C7=З
C8=И
C9=Й
CA=К
CB=Л
CC=М
CD=Н
CE=О
CF=П
D0=Р
D1=С
D2=Т
D3=У
D4=Ф
D5=Х
D6=Ц
D7=Ч
D8=Ш
D9=Щ
DA=Ъ
DB=Ы
DC=Ь
DD=Э
DE=Ю
DF=Я
E0=а
E1=б
E2=в
E3=г
E4=д
E5=е
E6=ж
E7=з
E8=и
E9=й
EA=к
EB=л
EC=м
ED=н
EE=о
EF=п
F0=р
F1=с
F2=т
F3=у
F4=ф
F5=х
F6=ц
F7=ч
F8=ш
F9=щ
FA=ъ
FB=ы
FC=ь
FD=э
FE=ю
FF=я
Но кроме всего прочего, в тексте встречаются управляющие байты, типа 0x030001 или 0x030201, как бы мне внести их в таблицу, чтобы такие группы байт выводились в тексте, как служебные и 0x00 внутри таких групп управляющих байт не воспринимались, как конец строки?
2F=/
запиши как
2F=</>
И в тексте этот слэш так и пиши - </> (в игре выведется нормально - /).
А то круптар решит что символы после / - это код, и вылезет кака.
Во всяком случае, во всех проектах к зельдам у меня именно так.
служебные записывай с точным кол-вом байт.
допустим, коды 030001 и 030002 отвечают за паузу в тексте:
пишешь:
030001=[delay1]
030002=[delay2]
и т.п.
а для нулей в кодах - плагин...
и не
~01
/00
в начале, а
01
ends
00
в самом конце таблицы.
а зачем тебе в таблице это?
8C=Њ
8D=Ќ
8E=Ћ
8F=Џ
90=ђ
и т.п.
Цитата: Anton от 21 мая 2012, 13:15:462F=/ запиши как 2F= И в тексте этот слэш так и пиши - (в игре выведется нормально - /). А то круптар решит что символы после / - это код, и вылезет кака. Во всяком случае, во всех проектах к зельдам у меня именно так.
Ок, спасибо.
Цитата: Anton от 21 мая 2012, 13:15:46служебные записывай с точным кол-вом байт. допустим, коды 030001 и 030002 отвечают за паузу в тексте: пишешь: 030001=[delay1] 030002=[delay2] и т.п.
Попробовал - ничего путнего :/ Те строки, которые начинаются с 0x030001, тупо в круптаре обрываются после 0x0300
Цитата: Anton от 21 мая 2012, 13:15:46а для нулей в кодах - плагин...
Что за плагин? Если самому писать, то это к сожалению мне не под силу, т.к. тогда написал бы софт конкретно под этот файл с текстом.
Цитата: Anton от 21 мая 2012, 13:15:46~01 /00 в начале, а 01 ends 00 в самом конце таблицы.
Это не принципиально, круптар и так отлично понимает.
Цитата: Anton от 21 мая 2012, 13:15:46а зачем тебе в таблице это? 8C=Њ 8D=Ќ 8E=Ћ 8F=Џ 90=ђ и т.п.
Остался мусор от автоматически сгенерированной таблицы. Особо не мешает.
Ещё почему-то некоторые строки по несколько раз достаются :o
Цитата: lupus от 21 мая 2012, 15:45:00Что за плагин?
Ну тут выше в теме о подобном плагине для зельды ж обсуждается.
Не будет плагина - круптар тебе и будет обрывать строки.
Кто-бы помог ещё :/
Надеюсь, что заглянут... Тебе спасибо, что не прошёл мимо.
Печаль :/
lupus, ты бы хотя бы выложил все эти управляющие байты. Тему внимательно почитай (о моей проблеме).
Сейчас чуток переключился на другой проект, точнее на другие. Часть долгостроев пора закончить. Потом вернусь к этому, распишу по максимуму формат, чтобы было понятно.
Помогите задать поинтеры.
Поинтеры разделены на 2 части, младшую и старшую.
1 фраза: Адрес текста: 14510
1 часть поинтера: адрес 14E90 (85)
2 часть поинтера: адрес 14EBA (00)
2 фраза: Адрес текста: 14534
1 часть поинтера: адрес 14E91 (85)
2 часть поинтера: адрес 14EBB (24)
Как я только не пытаюсь задать поинтеры в крупыче - не получается никак... Хотя бы по 1 поинтеру в группе, там текста не так много. Групп 50 получится...
ptPointerSize = 2
ptSplittedPtrs = True
ptInterval =14EBB - 14E91 = 2A - 1 = h29
Пасибки! Ещё биг эндиан тру поставил - и всё подключил!!!
Подскажите, пожалуйста, в чем может быть проблема. Zelda Skyward Sword. Закончил перевод, проверяю, и в сцене с финальным боссом обнаружил косяк: есть проект (один из 80 штук), пойнтеры правильные, таблица правильная, все правильно... на 100%, или на 99,99999%, я уже не знаю...
В игре из всего текста из этого файлика (одного из 80) почему-то не показывает две фразы (это один "диалог" в проекте (одна строка в списке диалогов в верхнем главном окне), две плашки с текстом, по 4 строки на плашку). Просто тупо не появляется плашка с этим текстом.
Это финальная сцена с боссом. Потом выводится еще пару коротких сообщений по сюжету (файл текста/проекта тот же), а потом заканчивается сцена и игра зависает (и на эмуле, и на приставке). После этого должна начаться сцена концовки, но - ничего...
Что совершенно непонятно, так это то, что когда я возвращаю в проект английский текст, пересчитываю пойнтеры (ничего не меняя!) и вставляю в игру - с английским текстом все работает!
В хексе смотрю - тоже все вроде нормально. Самое интересное, что весь остальной текст из этого файла всю игру раньше и после глюка - показывает нормально! (Глюк с зависанием можно обойти на эмуляторе, пропустив сцену с боссом, и тогда концовка грузится).
Помогите-подскажите добрым словом, где вообще копать?..
Вот тут можно почитать чуть больше о проблеме: http://zelda64rus.ucoz.ru/forum/29-423-17083-16-1361569372 (http://zelda64rus.ucoz.ru/forum/29-423-17083-16-1361569372)
Может разработчики сделали проверку слов на их сумму в конце именно по этой фразе или по какому-нибудь слову или словосочетание. Если в эмуляторе быстрые сейвы есть, то можно методом двойного деления узнать какая часть предложения или все эти два предложения отвечают за проверку чего-то.
Быстрые сэйвы есть... но дальше я ничего не понял. )
Первый раз такое слышу...
А если вернуть только в этой фразе английский и проверить?
PS. Не-а, проверил... не сработало...
[Дата добавления: 23 февраля 2013, 21:44:05]
Нет идей?
Дам проекты, таблицы, файлы, сохраненки - все, что надо...
Может глянет кто проектик с проблемным файлом? Очень прошу! Из-за этой дряни не могу зарелизить перевод!
http://www.mediafire.com/?44cvw15ci2c7xwb (http://www.mediafire.com/?44cvw15ci2c7xwb)
Не выводится только строка 153. Не появлятся плашка с этим текстом...
После строки 154 (она выводится нормально) должна начаться концовка, но... белый экран, и все.
Весь остальной текст из этого файла во всей игре выводится как положено, и до, и после косяка со 153 строкой. При возвращении английского текста и пересчета пойнтеров в этом же проекте - никаких проблем нет. Какая-то загадка...
А так и должно быть?
Цитировать
[Delay9][162 11]
and is now [Red1]sealed away[EndClr].
Цитировать
[EndClr]...[Delay9][162 11] и [Red4]пленены[EndClr].
[Дата добавления: 25 февраля 2013, 20:02:29]
И по поводу поиска ошибок.
Смотри.
А английский файл, вставь те две строчки на русском.
Отобразились? Если да, то проблема в кодах в тексте русского проекта.
Если нет, то проблема в этих предложениях.
Если отображаются, то делаем следующим образом.
1) Разархивируем проекты.
2) Делим проект на 50% и вставляем его.
50%
3) Если текст, с темя двумя строчками, по прежнему отображаются, то косяк в кодах не вставленной части.
Если текст не отобразился, то значит проблема в 50%, которые мы вставили.
4)Те 50%, что мы вставили, делим опять на 50% и вставляем в проект, по сути у нас теперь будет 25%.
25%
Смотрим, виден текст или нет. И опять повторяем пункты с делением файлов, чтобы найти ту часть, которая не работает.
[Дата добавления: 25 февраля 2013, 20:06:13]
Под вставкой я имел ввиду текстовый файл Group1.txt, который мы меняем, и потом опять добавляем в проект Круптара, через архивирование или просто замену в проекте с расширением .zip.
Цитата: JurasskPark от 25 февраля 2013, 19:25:33А так и должно быть?
Да, это просто другой оттенок красного цвета, более читаемый. Я во всей игре заменил, т.к. оригинальный red1 читается на телеке очень плохо (да и на эмуле тоже). С этим точно проблем нет.
С остальным поковыряюсь, спасибо... но коды вообще-то все правильные.
Т.е. я сравнивал английский файл с русским. Все нужное на месте.
Цитата: JurasskPark от 25 февраля 2013, 19:25:332) Делим проект на 50% и вставляем его.
С этим я что-то не понял...
Для начала попробую в английский текст вставить только один проблемный диалог - на русском...
-----------
Попробовал, диалог отобразился, зависания нет.
Насчет как половинить текст я все-таки не понял.
В Group1.txt удалять половину текста, потом еще половину, и т.д?
-----------
Попробовал кусок удалить...
После этого и вставки в архив (проект) сам проект потом не открывается.
[Дата добавления: 26 февраля 2013, 14:20:25]
Решил проблему!
Она была в предыдущем диалоге №152.
Оказалось, что именно его длина должна быть равна (во всяком случае, не превышать, но я уже не экспериментировал) оригинальному. А именно 532 символа (включая пробелы и спец-коды). Подправил перевод этого диалога, вписавшись в 532 символа - и все заработало.
Бывает же такое...
Хорошо, что решил. Плохо, что я так и не смог нормально объяснить как искать половинчатым методом. :)
Смысл там в том, что когда находишь проблемный участок, то разделяешь его на две части. Проверяешь обе части. Та часть, которая опять не работает, ещё раз делишь на две и уже там ищешь. Опять выбираешь часть, которая не работает и опять её делишь. И так делаешь до того момента, пока не найдешь проблему.
Не, ну это я понял )
Я не понял, как в этом случае поступать с файлом group1.txt, т.к. если из него удалять куски текста, то круптар потом проект не грузит. В самом открытом проекте только если копипастить английский в русский, подиалогово, но это ж геммор...
Странная оказалась проблема. Весь остальной текст в игре крутил-вертел как угодно, а тут надо точно сохранить количество символов. Первый раз такое вижу.
Приложил ролик. Если и после этого не будет понятно, то... *WALL*
Тю, так с двумя group1, английскими русским работать. )
Ну тогда понятно. )
Р-р-р-р-р-р-р... *F_SMOKE* *F_SMOKE* *F_SMOKE*
:)
Апну свою тему.
Вопрос такой:
Создал проект к Крупычу 7, текст вынимается и вставляется, но! Есть поинтеры, которые указывают на одну и ту же строку, следовательно вынимается она несколько раз и потом при правке таких строк ылазиют баги :(
Это как-то можно обойти без написания плагина?
Уже, наверно, не актуально, но есть параметр списка Seek Same. Если его поставить на false, то тогда все такие строки будут вставляться отдельно, как в роме. Если true, то будет только одна строка, которая будет вставляться на место всех повторных.
Подскажите, что делать, если нет байта разрыва строки? (Game Boy Color, пойнтеры 2 байта, стоп-байты FE и FF).
Строки длиной 16 символов. Переносятся в плашке с текстом автоматически - после 16 символов текст печатается на новой строке.
Скриншот1:
Если я в PtStringLength ставлю 0, то текст выводится правильно, весь, но каждый диалог выводится одной строкой. До границы в 16 символов в роме, если нужно, добито пробелами. (Отметил красным). Реально неудобно...
Скриншот2:
PtStringLength=16. В результате круптар просто обрезал все строки до 16 знаков, а остальное выкинул, причем не обращая внимание на стоп-байт - все подряд порезал.
Можно ли как-то заставить его переносить на следующую строку эти вот блоки по 16 символов? (где на первом скрине отмечено красным - чтоб это были отдельные строки?)
Т.е. можно где-то в другом месте указать, что длина 16 (в таблице может как-то, или фиг его знает...)? чтоб оно считало первые 16 символов и сделало перенос на новую строку.
Я не спец, но по моему нельзя.
Эх, там еще в таблице кое-какие обозначения, а оно ж воспримется как текст:
D6=<D-pad>
D7=<Letter>
D9=<Flower>
DA=<Footprint>
DC=<Skull>
DD=<Link>
DE=<Marin>
DF=<Tarin>
E0=<Yoshi>
E1=<Ribbon>
E2=<Dog Food>
E3=<Bananas>
E4=<Stick>
E5=<Honeycomb>
E6=<Pineapple>
E7=<Flower>
E8=<Broom>
E9=<Fishhook>
EA=<Necklace or Bra>
EB=<Scale>
EC=<Magnifying Glass>
F0=<UP>
F1=<DOWN>
F2=<LEFT>
F3=<RIGHT>
Хреново без байта переноса строки...
Антоха, я обычно делаю так F3=
. Слушай а ты у шефов на сайте не спрашивал, мож плагин кто напишет для этого дела. Я думаю этим можно будет решить все вопросы. Я к сожаление программить не умею, поэтому не смогу тебе ничего написать. Умел бы без проблем)) Ну по крайней мере дельфи я себе поставил и пару уроков пока прошел, но многие вещи мне там уже непонятны, так, что опыта пока вообще никакого нет)))
Да кусок пропал)))) я имел ввиду что скобки другие ставлю))) квадратные))0
Да, я тоже. [ ]
Это просто готовая табличка с http://datacrystal.romhacking.net/wiki/The_Legend_of_Zelda:_Link%27s_Awakening:TBL
Антоха, так ты на шефе не спрашивал? Из тех кто у нас есть только Оракулум наверное сможет плагин написать, так как Трикзтер, редко появляется)))
[Дата добавления: 11 октября 2013, 12:30:41]
И по-моему он не умеет писать плагины для крупыча.
Я, в общем, это... пока шо работает, и если просто энтером переходить на следующую строку.
Но до конца каждой строки вручную надо добивать пробелы, чтоб было 16 знаков. Игра потом их так и считывает: 16, перенос, 16, перенос, 1-16, стоп.
В принципе, не сильно сложно.
Ну по идее он же все равно будет считать перенос энтером, как лишний байт или нет?
Судя по тому, что в хексе видно - лишнего байта нет. Его ж в принципе нет. Текст идет сплошняком.
Зато теперь все очень удобно, в круптаре я делаю "строки" по 16 символов, и гораздо приятнее работать. Пробелами тока вручную добивать надо до 16.
Наверное фишка в том, что если у тебя есть байт переноса, то он его подставляет при переносе строки энтером. а если нет то нет. Не знал о таком))) ну зато теперь буду знать)))
Здравствуйте.
Есть такая кодировка UTF-8, а в играх её использующих кроме указателей присутствует ещё и контроль размера сообщения. Т.е. 4 байта указатель на текст, 4 байта на размер текста, потом идентификатор или сразу след указатель и опять 4 байта на размер и т.д.
Вопрос такой.
Как должен выглядеть плагин, чтобы при работе размер пересчитывался в соответствии с изменениями указателей, или же это делается стандартными методами?
(Делается, но довольно криво, нет нужных арифметический действий типа чётности размера или размера без байтов окончания и если размер указан перед указателями, то тоже косячит на первом указателе) решается плагинами... глюки в этом месте всё же есть!Тексты вроде научился от лишних "стопбайтов" внутри кодов избавлять при помощи короткой функции считывания, а вот таких примеров не видел... Или плохо искал?
(Плохо смотрел, надо было меню переменные или околопойнтерные переменные поглядеть)Спойлер
Ну и ладна, внешний фиксер справляется, но про решение в плагине всё равно было бы интересно узнать.
Так же данный плагин был бы полезен для понимания ошибки в ptrt2ptr
(Slam (http://magicteam.net/forum/index.php?action=profile;u=591) объяснил что это работает только для указателя ссылающегося на один указатель, а я пытался применить его для указателя ссылающегося на блок указателей) ,
т.е. чтобы можно было не только вытаскивать текст через двойные указатели, но и складывать его обратно с изменением обоих и выравнивания для внешних указателей (кратность) 8, 16, 32.
Присоединяюсь к вопросу. Перевод Ocarina 3D из-за этого стоит уже поднялся, внешней прогой.
Про решение вопроса Круптаром все равно интересно.
Я так понял, никто не знает, как пересчитать размер диалога именно в Круптаре? Или это невозможно?
4 байта пойнтер на диалог, после него в четырёх байтах указан размер этого диалога, потом еще 12 байт интервал, потом следующий пойнтер, размер диалога... и т.д.
Нужна помощь с компиляцей любой последней версии круптара 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 байта
Ну во втором примере точно должен сработать ptSplittedPtrs. В ptInterval выставляешь 4 (количество байт между старшим и младшим байтами поинтера) и ptSplittedPtrs в True.ptPointerSize должен быть 2. Не забудь про ptBIG_ENDIAN в False.
Спасибо за подсказку.
Разобрался, в первом примере функция тоже работает, только при указании адреса пойнтера необходимо указывать лишь начальный адрес старшего байта и ставить интервал 2 :)