Форум Magic Team

Переводы, переводы, переводы... => Ромхакинг и перевод => Тема начата: lupus от 19 Июня 2011, 10:37:15

Название: Помощь с круптаром
Отправлено: lupus от 19 Июня 2011, 10:37:15
Всем привет. Начал прикручивать проект к крптару. Всё вроде бы ничего, но столкнулся с тем, что 7-я версия несколько отличается по интерфейсу от 6-й. Ну да ладно, скачал к6 и делал всё по мануалу.
Есть лангпак из игры.
Поинтеры двухбайтовые, интервал между ними 2 байта 00. С этим проблем нет.
Проект составил и текст вынул.
Символ окончания строки - 00
Символ разрыва строки - 03
В к7 их можно указать отдельно, здесь я этого не нашёл. Если вместо разрыва строки я поставил ~и тут проблем нет, то стопбайт 00 в вынутом скрипте у меня выводится как [#00] что не есть удобно.

Подскажите плиз, как бы мне это покрасивей оформить или как составить аналогичный проект для к7.
Название: Помощь с круптаром
Отправлено: Джинни от 19 Июня 2011, 11:05:28
Когда код окончания 00, можно использовать плагин NULL.KPL, тогда /00 в конце строки вообще не будет видно.
Название: Помощь с круптаром
Отправлено: lupus от 19 Июня 2011, 11:49:32
Методом проб и ошибок прикрутил проект к к7. Вроде всё нормально вынимается и вставляется, но почему-то текста после пересчёта меньше становится... хз прямо
Название: Помощь с круптаром
Отправлено: TrickZter от 19 Июня 2011, 11:54:27
Всё вроди бы ничего
Вроди всё нормально

http://gramota.ru/slovari/dic/?word=%E2%F0%EE%E4%E5&all=x
Название: Помощь с круптаром
Отправлено: lupus от 19 Июня 2011, 11:58:57
спасибо, учту %)
Название: Помощь с круптаром
Отправлено: Anton от 19 Июня 2011, 12:50:41
Джинни, все хочу спросить, а почему ты в новых версиях Круптара убрал нумерацию строк?
В v7.0.0.85 она есть, и это просто фантастически удобно.
Особенно когда в блоке текста куча спец-кодов, и блок этот длинный, то без нумерации можно такого напереводить...
А так я знаю, что у меня, скажем, строки 0-3 - это одно поле для текста в конкретном диалоге, 4-7 - следующее, 8-11 - следующее, и т.п.
Удобней, когда наглядно все.

Название: Помощь с круптаром
Отправлено: Джинни от 19 Июня 2011, 13:14:27
Был другой компонент вывода текста.
Название: Помощь с круптаром
Отправлено: Anton от 19 Июня 2011, 13:19:02
так все равно - с номерками ж удобнее.
Название: Помощь с круптаром
Отправлено: Джинни от 19 Июня 2011, 13:23:16
Удобнее, но в текущем их нет. Есть нумерация строк внизу где X и Y. Но там длинные строки нумеруются по количеству их частей.
Название: Помощь с круптаром
Отправлено: Game_Hacker от 06 Декабря 2011, 21:14:25
Парни, где можно найти доку по "Круптару"? Скачал седьмую версию, в текстовике прилагавшемся к Круптару, указан адрес на доку - 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
Ранее с круптаром не сталкивался, понимаю, что программа очень мощная и полезная, но для меня, он отложился в памяти, как - запутанная и непонятная программа.Просто как-то давненько, с помощью него я попытался распаковать текст, ничего у меня не вышло)) с тех пор, я обхожу его стороной.
Название: Помощь с круптаром
Отправлено: TrickZter от 06 Декабря 2011, 21:54:03
В круптаре используются почти такие же таблицы, как в hex-редакторах. Все слова и буквы записываются через знак "=": "код=буква/слово". Таблица может выглядеть примерно так:

12=A
3456=B
78=Word1
9ABC=Word2
03
0405
ends
00
0102

Если до строки ends записан просто код (в примере это 03 и 0405), Круптар воспринимает его как разрыв строки (возврат каретки). После строки ends записываются коды концов строк (стоп-байты), они записываются аналогично разрывам - просто коды.
И может ли Круптар, работать с файлами, в которых не просто поинтеры, а поинтеры указывающие на поинтеры, которые указывают на текст?  :)
Что мешает использовать поинтеры, которые непосредственно ссылаются на текст?
Через двое поинтеров Круптар выдирать текст не умеет, но если очень надо, можешь сам написать плагин для этого. Дока по написанию плагинов есть на нашем сайте.
Название: Помощь с круптаром
Отправлено: Джинни от 07 Декабря 2011, 07:10:33
где можно найти доку по "Круптару"? Скачал седьмую версию, в текстовике прилагавшемся к Круптару, указан адрес на доку - http://www.magicteam.net/krupdoc.htm
В разделе "Документация" на сайте.
Название: Помощь с круптаром
Отправлено: Game_Hacker от 07 Декабря 2011, 22:13:24
Спасибо!
Буду осваивать шайтана...ой, Круптара! :)
Название: Помощь с круптаром
Отправлено: Anton от 24 Марта 2012, 18:43:20
Как вычислить, какая именно строка не нравится круптару?

[Предупреждение]  ........  tbl_eng.tbl(0): Неверная строка таблицы.

Название: Помощь с круптаром
Отправлено: TrickZter от 24 Марта 2012, 19:20:00
Как вычислить, какая именно строка не нравится круптару?

[Предупреждение]  ........  tbl_eng.tbl(0): Неверная строка таблицы.


Наверно, нулевая :)
Название: Помощь с круптаром
Отправлено: Anton от 24 Марта 2012, 20:03:00
если первую строку считать нулевой, то там написано:
cp1251
(cp - латиницей).

что ему не нравится?
Название: Помощь с круптаром
Отправлено: TrickZter от 24 Марта 2012, 20:47:50
что ему не нравится?
Эта строка и не нравится. В таблице должны быть только символы/слова и коды им соответствующие, ну, и строчка ends. Никаких cp1251 быть не должно.
Название: Помощь с круптаром
Отправлено: Anton от 24 Марта 2012, 20:56:57
Ну, например, в таблице к Phantom Hourglass тоже была эта строка, вроде не ругался...
code page 1251, че...

Из-за этой строчки могут быть какие-то проблемы вообще или нет?
(таблицу делал не я, если что).





Название: Помощь с круптаром
Отправлено: TrickZter от 24 Марта 2012, 21:16:11
code page 1251, че...
Круптар работает с юникодом (UTF-16), таблицы, соответственно, тоже лучше в UTF-16 делать. Никаких code page, есессно, указывать не нужно.

Из-за этой строчки могут быть какие-то проблемы вообще или нет?
Что тебе мешает её убрать? Хуже не будет.
Название: Помощь с круптаром
Отправлено: Anton от 24 Марта 2012, 21:20:33
да ничего не мешает... )


Название: Помощь с круптаром
Отправлено: Oraculum от 24 Марта 2012, 22:02:43
Никаких code page, есессно, указывать не нужно.
Нужно, нужно, если не UTF-16 или UTF-8. В какой-то версии такая же ошибка выскакивала. Тут может быть такое, что у текстового файла кодировка юникодовая, а приписано в начале "cp1251", из-за такого ошибка и может вылезти.
Название: Помощь с круптаром
Отправлено: Anton от 24 Марта 2012, 22:13:30
Вот фрагмент таблицы (начало).
Коды символов юникодовские.
Кодировка двубайтовая.

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
Название: Помощь с круптаром
Отправлено: TrickZter от 24 Марта 2012, 22:20:17
Нужно, нужно, если не UTF-16 или UTF-8.
Дык, я про Юникод и говорил :)
Название: Помощь с круптаром
Отправлено: Oraculum от 24 Марта 2012, 22:30:39
Дык, я про Юникод и говорил :)
Так ты в отдельное предложение выделил, непонятна же мысль потом. :)
Название: Помощь с круптаром
Отправлено: Anton от 24 Марта 2012, 23:01:44
так убирать эту хрень (cp1251)?
Название: Помощь с круптаром
Отправлено: Oraculum от 24 Марта 2012, 23:06:10
так убирать эту хрень (cp1251)?
Так-то да, но можешь ещё таблицу прикрепить, что ясно всё было.
Название: Помощь с круптаром
Отправлено: Anton от 24 Марта 2012, 23:44:05
Убрал... перестал ругаться. Надо же.
(в аттаче все прикреплено (только таблица с 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" почему-то. (Это даже и не переводя - это просто если пересчитать пойнтеры и вставить в игру).
 
 Мне, собсно, интересно, где ошибка?
 В проекте, таблице или плагине?
 
 В остальных проектах тоже нашел ошибки (судя по тому, что показывает игра), но то потом...
Название: Помощь с круптаром
Отправлено: Джинни от 25 Марта 2012, 05:30:14
Сразу после этого кода идет стоп-байт "00 00", потом перенос "00 0A" (но в круптаре его не показывает - идет сразу следующий блок с текстом: "Are you sure you want to quit?".
На стоп-байте чтение обычно прерывается.
Название: Помощь с круптаром
Отправлено: Anton от 25 Марта 2012, 10:16:44
На стоп-байте чтение обычно прерывается.
Я это знаю, но стоп-байт присутствует же в других кодах.
Пусть продолжает считывать то, что СРАЗУ за этим стоп-байтом - 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...
Зато если поставить тупо неправильное смещение, начинает эти строки видеть, но остальное все, естественно, разлазится.
Название: Помощь с круптаром
Отправлено: Джинни от 25 Марта 2012, 16:57:37
Присутствует, не присутствует. Если плагин не определяет, что 0000 является частью другого контрольного кода, то считывание останавливается.
Название: Помощь с круптаром
Отправлено: Anton от 25 Марта 2012, 17:12:42
Ты не мог бы посмотреть приаттаченный выше проект и сказать, где ошибки?
Если в плагине, тогда облом. Но может и не в нем...
Название: Помощь с круптаром
Отправлено: Джинни от 25 Марта 2012, 17:43:58
В том архиве нет исходников плагина.
Название: Помощь с круптаром
Отправлено: Anton от 25 Марта 2012, 18:52:55
У меня их тоже нет. Нельзя просто посмотреть, правильно ли составлен проект/таблица, хотя бы?
Если все правильно - значит ошибка в плагине.
Если нет - укажи ошибки в проекте/таблице.
Если не хочешь смотреть - так и скажи.

Название: Помощь с круптаром
Отправлено: Джинни от 25 Марта 2012, 19:55:21
В таблице встречаются коды с большим количеством нулей. Какие-то из них плагин не учитывает и заканчивает чтение на 0000.
Название: Помощь с круптаром
Отправлено: Anton от 25 Марта 2012, 20:35:21
В данном файле - спотыкается именно на коде 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, ошибок в плагинах не было, поэтому я и в смущении...

Сам проект правильно составлен? Пойнтеры именно такие, и с такими параметрами, как в проекте?











Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 06:51:00
Это точно ошибка в плагине? Не в таблицах?
Точно в плагине.
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 09:33:20
Точно в плагине.

Понятно, спасибо.
Тогда облом пока...
Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 10:31:28
Multiply=2, Align=1,
Кстати, для двухбайтной кодировки нужно ставить Align = 2 (в новой версии этот пункт называется ptCharSize, а Multiply - ptAlignment).
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 10:47:37
Кстати, для двухбайтной кодировки нужно ставить Align = 2

Где-то я об этом тут уже читал... Но оно одинаково показывает, что с 1, что с 2.
Поставлю 2, как скажешь.

В общем, залез я в дебри...
Поставил дельфи, скачал исходники плагинов.
Открыл null.dpr.
Куда и как вписывать нужные мне комбинации кодов... ? (вот эти все дела интересные: 000E000300010000 и т.д.)
Или не все так просто?



Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 11:50:19
Ну там нет такого. чтобы надо было что-то куда-то вписывать. Нужно переписать код чтения строки. Функция 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;
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 13:27:44
Переменная X - адрес откуда считывать.

А если там много файлов, и адреса все разные, а плагин нужен общий?

Что-то туго мне с этим всем...
Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 13:34:58
Плагин одновременно только с одним файлом работает. Но можно сделать так, что в массиве ROM будет храниться список файлов. Этот список загружать плагином. Вместо пойнтеров передавать номера файлов. Каждый файл загружать и сохранять внутри плагина самостоятельно.
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 13:45:19
Не для меня эта кухня, короче...
Смотрю готовый плагин (тот, который есть) в хексе - там куча этих кодов есть: 000Е. Т.е. все, которые прописаны в таблице, есть и в файле плагина. Разделены байтами 000А (перевод каретки), (в игре такой же код).
Ты говоришь, их вписывать не надо...
Названий файлов с текстом, для которых он делалася - не вижу.
Ничего не понимаю. Не моя это кухня, не моя. И до автора не могу достучаться, пропал...

Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 14:13:11
Код для простого плагина, который будет всё это загружать, парой постов выше. Просто замени функцию и скомпилируй.
Только проект 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;

Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 14:40:00
Попробовал. Заменил, скомпилил, подгрузил в проект, обновил список пойнтеров.
Вместо текста одни нолики показывает...

Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 15:18:49
Выложи файл проекта, файл с оригинальным текстом и исходники плагина, который ты сделал.
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 15:41:28
В аттаче.
Только я не "сделал" исходники. Поменял просто на тот код, который ты мне дал ).
Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 16:27:38
Да знаю я, как вы меняете.

[Дата добавления: 26 Марта 2012, 16: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;
Вот на это поменяй, всё будет работать.
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 17:25:06
Текст показало. Но - точно так же, как и было - после 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} (имя игрока).




Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 17:27:53
Ноликов и не должно быть. Так плагин написан.
Проблемы-то какие? Вынимает он как положено. Если там есть ещё какие-то коды, которые начинаются не с 000У, то их тоже надо учесть.
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 17:29:44
Ну фиг с ними с ноликами.
Почему кусок текста выкидывает?

Коды вроде все с 000Е начинаются.

PS. такой небольшой вопрос: при вводе адреса последнего пойнтера в проекте, писать его ПЕРВЫЙ или ПОСЛЕДНИЙ байт?
Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 17:33:50
Кусок текста не выкидывается. Считывание останавливается при встрече 00 00
Контрольные коды занимают 10 байт каждый.

000E0002000200040000={Tag 426}

После этого контрольного кода идёт ещё один 0000, поэтому происходит останов.

Если дальше после этого 0000 идёт ещё 000A, то это не значит, что оно является частью этой строки.
Но может быть, конечно, что некоторые коды занимают больше 10 байт. В этом тебе надо самому разобраться и добавить дополнительные условия в код плагина.

[Дата добавления: 26 Марта 2012, 17:36:42]

Цитировать (выделенное)
PS. такой небольшой вопрос: при вводе адреса последнего пойнтера в проекте, писать его ПЕРВЫЙ или ПОСЛЕДНИЙ байт?

Какой угодно.
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 17:40:10
В этом тебе надо самому разобраться и добавить дополнительные условия в код плагина.

 Есть, по-идее, 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

Как добавлять условия, я не знаю.
Но кнопку "скомпилить" нажимать научился )
Название: Помощь с круптаром
Отправлено: Джинни от 26 Марта 2012, 17:50:35
Ну вот надо проанализировать каждый код и понять по какому принципу они различаются. Например, я вижу, что во всех 12-байтных кодах после 000E идёт 0001, кроме одного, в котором 0002. Но это, возможно, ошибка ваша.
Или контрольные коды делятся на большее количество частей.
Там есть такие, в которых после 000E идут простые буквы.
Значит 000E - самостоятельный код.
А после него могут идти другие, которые начинаются с 0001, 0002 и т.д.
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 20:03:04
Например, я вижу, что во всех 12-байтных кодах после 000E идёт 0001, кроме одного, в котором 0002. Но это, возможно, ошибка ваша.

000E0002000200040000={Tag 426} После этого контрольного кода идёт ещё один 0000, поэтому происходит останов.

Вот этот один с 0002  - это {Tag 426}, но с добавленными мной 2 байтами: 00 00.
Может, я неправ, может это и стоп-байт, эти нули. Но потом идет 000A, и сразу новый код: 000E000100000002FFFF (отображение кнопки (на которой пишется save), вроде) - {Tag 15}.

Значит 000E - самостоятельный код.

 Почему-то мне кажется, что нет.
 

Тяжело это все... Эх. :)




Название: Помощь с круптаром
Отправлено: TrickZter от 26 Марта 2012, 22:00:01
Почему-то мне кажется, что нет.
Надо разбираться, а не гадать.
Название: Помощь с круптаром
Отправлено: Anton от 26 Марта 2012, 23:17:20
Надо разбираться, а не гадать.

Нет там отдельного кода 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 вон плагин/проект/таблицы сделал, (таблица в аттаче, если интересно посмотреть - в конце файла коды прикольные).
Название: Помощь с круптаром
Отправлено: Джинни от 27 Марта 2012, 06:30:50
Попробовал добавить еще две строки в плагин:
Не нужно пробовать просто так что-то добавлять. Разбери просто каждый отдельный код на части и посмотри от чего зависит количество байт.
Название: Помощь с круптаром
Отправлено: Anton от 27 Марта 2012, 08:37:38
Разбери просто каждый отдельный код на части и посмотри от чего зависит количество байт.

Сдается мне, что не осилю я такие разборы... (
Название: Помощь с круптаром
Отправлено: Джинни от 27 Марта 2012, 09:15:55
Если не попытаешься, то не осилишь конечно.
Название: Помощь с круптаром
Отправлено: Anton от 27 Марта 2012, 09:34:25
Как пытаться-то )
Ну смотрю я на код, вижу циферьки.
А дальше что с этим делать...
Название: Помощь с круптаром
Отправлено: Джинни от 27 Марта 2012, 11:15:49
Сравнивать.
Название: Помощь с круптаром
Отправлено: Anton от 27 Марта 2012, 16:56:47
Ничего не получается...
Смотрел другой файл, вроде все нормально (с новым нашим плагином), но опять спотыкается круптар (или я) на вот такой фигне: есть код 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}
Название: Помощь с круптаром
Отправлено: Джинни от 27 Марта 2012, 18:25:18
Ц. Ну естественно он спотыкается. Плагин не завершён. Чтобы его завершить, нужно понять, что отвечает за размер кода.
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, 19:58:41
Чтобы его завершить, нужно понять, что отвечает за размер кода

Вот это я точно не осилю.
Я могу понять, за что овечает код (ну, там, пауза в диалоге это, или цвет, или код иконки кнопки и т.п...)

Это уже что-то.

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


Название: Помощь с круптаром
Отправлено: Джинни от 28 Марта 2012, 05:51:24
Я могу понять, за что овечает код (ну, там, пауза в диалоге это, или цвет, или код иконки кнопки и т.п...)
Вот пойми и напиши различия здесь. Их не будет несколько тысяч, если понять принцип.
Название: Помощь с круптаром
Отправлено: Alex от 28 Марта 2012, 07:41:25
Мы с 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, 08:07:39
Мне уже нечего подсказывать. Нет смысла загружать по огромному списку кодов, если можно сделать проще, проанализировав эти коды, и написать короткую функцию считывания.
Название: Помощь с круптаром
Отправлено: Anton от 28 Марта 2012, 10:48:17
Их не будет несколько тысяч, если понять принцип.

Ну какой там принцип... По возрастающей идут, после 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


Вот еще таблица на всякий (коды там еще не все, а некоторые может вообще неправильные...)
Название: Помощь с круптаром
Отправлено: Джинни от 28 Марта 2012, 11:27:27
000E 0000 0003 0002 000x - (х= от 0 до С) - начало выделения цветом,
000E 0000 0003 0002 FFFF - конец выделения цветом
После 000E бывает 0000?
Название: Помощь с круптаром
Отправлено: Anton от 28 Марта 2012, 11:29:42
После 000E бывает 0000?

Да, в кодах, отвечающих за выделение цветом.

[Дата добавления: 28 Марта 2012, 19:38:24]
Так что, Джин, поможешь доделать плагин?
Название: Помощь с круптаром
Отправлено: Джинни от 29 Марта 2012, 07:08:34
Так что, Джин, поможешь доделать плагин?
Угу, только слово "джинн" пишется с двумя "н". А мой ник написан над аватаркой.
Название: Помощь с круптаром
Отправлено: Anton от 29 Марта 2012, 08:41:51
Угу, только слово "джинн" пишется с двумя "н". А мой ник написан над аватаркой.

Извини, Джинни. )
Очень жду помощи.
Название: Помощь с круптаром
Отправлено: Anton от 30 Марта 2012, 09:22:17
Просмотрел еще тексты насчет кода 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, 15:11:21]
Хэлп...
Название: Помощь с круптаром
Отправлено: TrickZter от 31 Марта 2012, 07:27:02
Хэлп...
Надо говорить "хэрупу" :D
Название: Помощь с круптаром
Отправлено: Anton от 31 Марта 2012, 09:28:09
смешно.

Название: Помощь с круптаром
Отправлено: Anton от 01 Апреля 2012, 19:44:53
Джинни, от тебя стоит ждать помощи с этим плагином?
Игра реально сложная, я сам ни за что не разберусь.



Название: Помощь с круптаром
Отправлено: Guyver от 03 Апреля 2012, 16:34:19
Джинни, не забудь про меня, я когда-то просил чтобы можно было выбирать pnfixed=true сразу для всех поинтеров, чтобы потом вручную каждому не прописывать это... Ну или чтобы по-умолчанию стояло тру, или сделать где-то выбор тру или не тру в настройках... (или сделай билд последней версии лично для меня, а?) Плиз...
Название: Помощь с круптаром
Отправлено: Anton от 05 Апреля 2012, 11:52:05
Джинни, я все еще надеюсь на твою помощь.
Вот еще инфа по кодам, вроде вся.
Также закончил таблицу, она в аттаче, там абсолютно все коды к этой игре.


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 стоп.

С остальными кодами, вроде, все показывает нормально.




 
Название: Помощь с круптаром
Отправлено: Джинни от 06 Апреля 2012, 04:21:43
Проверяй.
Название: Помощь с круптаром
Отправлено: Anton от 06 Апреля 2012, 09:18:21
Джинни, ты волшебник.
Все прекрасно показывает. Спасибо!!!  :)
Название: Помощь с круптаром
Отправлено: Джинни от 06 Апреля 2012, 10:11:14
Исходники надо?
Название: Помощь с круптаром
Отправлено: Anton от 06 Апреля 2012, 11:18:16
Да, хотелось бы посмотреть, для понимания (если пойму :)).
Название: Помощь с круптаром
Отправлено: Джинни от 06 Апреля 2012, 14:07:33
Держи.
Название: Помощь с круптаром
Отправлено: Anton от 06 Апреля 2012, 15:11:30
Спасибо.
Все элегантно, и не надо 2000 кодов вбивать. )


[Дата добавления: 06 Апреля 2012, 15:41:35]
Джинни, а что дает параметр PtAlign "2" при двубайтовой кодировке?
Оно вроде бы считает нормально и при "1"...



Название: Помощь с круптаром
Отправлено: Джинни от 06 Апреля 2012, 16:26:39
Для извлечения двухбайтовых строк стандартным плагином. И чтобы вставлялись два байта, если вдруг встретится однобайтовый код в отредактированном тексте.
Название: Помощь с круптаром
Отправлено: Anton от 06 Апреля 2012, 17:02:11
В моем случае, я так понимаю, лучше оставить 1?
Однобайтовых кодов нет вообще.
Название: Помощь с круптаром
Отправлено: Джинни от 07 Апреля 2012, 05:36:59
2, а не один.
Название: Помощь с круптаром
Отправлено: lupus от 02 Мая 2012, 18:26:04
Уже разобрался ))
Название: Помощь с круптаром
Отправлено: lupus от 21 Мая 2012, 10:24:34
Ребята, подскажите плиз, как бы мне составить таблицу, со спец символами.
С поинтермами разобрался. Кодировка (с учётом перерисованного шрифта) - 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=&shy;
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 внутри таких групп управляющих байт не воспринимались, как конец строки?
Название: Помощь с круптаром
Отправлено: Anton от 21 Мая 2012, 12:15:46
2F=/
запиши как
2F=</>

И в тексте этот слэш так и пиши - </> (в игре выведется нормально - /).
А то круптар решит что символы после / - это код, и вылезет кака.
Во всяком случае, во всех проектах к зельдам у меня именно так.

служебные записывай с точным кол-вом байт.

допустим, коды 030001 и 030002 отвечают за паузу в тексте:
пишешь:

030001=[delay1]
030002=[delay2]
и т.п.

а для нулей в кодах - плагин...

и не
~01
/00
в начале, а

01
ends
00
в самом конце таблицы.

а зачем тебе в таблице это?
8C=Њ
8D=Ќ
8E=Ћ
8F=Џ
90=ђ
и т.п.
Название: Помощь с круптаром
Отправлено: lupus от 21 Мая 2012, 14:45:00
2F=/ запиши как 2F= И в тексте этот слэш так и пиши - (в игре выведется нормально - /). А то круптар решит что символы после / - это код, и вылезет кака. Во всяком случае, во всех проектах к зельдам у меня именно так.
Ок, спасибо.
служебные записывай с точным кол-вом байт. допустим, коды 030001 и 030002 отвечают за паузу в тексте: пишешь: 030001=[delay1] 030002=[delay2] и т.п.
Попробовал - ничего путнего :/ Те строки, которые начинаются с 0x030001, тупо в круптаре обрываются после 0x0300
а для нулей в кодах - плагин...
Что за плагин? Если самому писать, то это к сожалению мне не под силу, т.к. тогда написал бы софт конкретно под этот файл с текстом.
~01 /00 в начале, а 01 ends 00 в самом конце таблицы.
Это не принципиально, круптар и так отлично понимает.
а зачем тебе в таблице это? 8C=Њ 8D=Ќ 8E=Ћ 8F=Џ 90=ђ и т.п.
Остался мусор от автоматически сгенерированной таблицы. Особо не мешает.
 
Ещё почему-то некоторые строки по несколько раз достаются  :o
Название: Помощь с круптаром
Отправлено: Anton от 21 Мая 2012, 16:27:36
Что за плагин?

Ну тут выше в теме о подобном плагине для зельды ж обсуждается.
Не будет плагина - круптар тебе и будет обрывать строки.
Название: Помощь с круптаром
Отправлено: lupus от 21 Мая 2012, 18:12:51
Кто-бы помог ещё :/
Название: Помощь с круптаром
Отправлено: Anton от 21 Мая 2012, 19:40:39
Кто-бы помог ещё :/

Ну это к гуру...


Название: Помощь с круптаром
Отправлено: lupus от 21 Мая 2012, 21:08:55
Надеюсь, что заглянут... Тебе спасибо, что не прошёл мимо.
Название: Помощь с круптаром
Отправлено: lupus от 24 Мая 2012, 19:27:45
Печаль :/
Название: Помощь с круптаром
Отправлено: Anton от 24 Мая 2012, 20:05:38
lupus, ты бы хотя бы выложил все эти управляющие байты. Тему внимательно почитай (о моей проблеме).





Название: Помощь с круптаром
Отправлено: lupus от 26 Мая 2012, 22:59:21
Сейчас чуток переключился на другой проект, точнее на другие. Часть долгостроев пора закончить. Потом вернусь к этому, распишу по максимуму формат, чтобы было понятно.
Название: Помощь с круптаром
Отправлено: Guyver от 03 Декабря 2012, 12:24:54
Помогите задать поинтеры.
Поинтеры разделены на 2 части, младшую и старшую.


1 фраза: Адрес текста: 14510
1 часть поинтера: адрес 14E90 (85)
2 часть поинтера:  адрес  14EBA  (00)


 2 фраза: Адрес текста: 14534
1 часть поинтера: адрес 14E91 (85)
2 часть поинтера:  адрес  14EBB  (24)


Как я только не пытаюсь задать поинтеры в крупыче - не получается никак... Хотя бы по 1 поинтеру в группе, там текста не так много. Групп 50 получится...
Название: Помощь с круптаром
Отправлено: Джинни от 04 Декабря 2012, 07:16:49
ptPointerSize = 2
ptSplittedPtrs = True
ptInterval =14EBB - 14E91 = 2A - 1 = h29
Название: Помощь с круптаром
Отправлено: Guyver от 04 Декабря 2012, 17:53:08
Пасибки! Ещё биг эндиан тру поставил - и всё подключил!!!
Название: Помощь с круптаром
Отправлено: Anton от 23 Февраля 2013, 17:59:29
Подскажите, пожалуйста, в чем может быть проблема. 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)
Название: Помощь с круптаром
Отправлено: JurasskPark от 23 Февраля 2013, 19:18:49
Может разработчики сделали проверку слов на их сумму в конце именно по этой фразе или по какому-нибудь слову или словосочетание. Если в эмуляторе быстрые сейвы есть, то можно методом двойного деления узнать какая часть предложения или все эти два предложения отвечают за проверку чего-то.
Название: Помощь с круптаром
Отправлено: Anton от 23 Февраля 2013, 19:32:33
Быстрые сэйвы есть... но дальше я ничего не понял. )
Первый раз такое слышу...

А если вернуть только в этой фразе английский и проверить?
PS. Не-а, проверил... не сработало...

[Дата добавления: 23 Февраля 2013, 20:44:05]
Нет идей?
Дам проекты, таблицы, файлы, сохраненки - все, что надо...
Название: Помощь с круптаром
Отправлено: Anton от 25 Февраля 2013, 18:08:07
Может глянет кто проектик с проблемным файлом? Очень прошу! Из-за этой дряни не могу зарелизить перевод!
http://www.mediafire.com/?44cvw15ci2c7xwb (http://www.mediafire.com/?44cvw15ci2c7xwb)

Не выводится только строка 153. Не появлятся плашка с этим текстом...
После строки 154 (она выводится нормально) должна начаться концовка, но... белый экран, и все.

Весь остальной текст из этого файла во всей игре выводится как положено, и до, и после косяка со 153 строкой. При возвращении английского текста и пересчета пойнтеров в этом же проекте - никаких проблем нет. Какая-то загадка...
Название: Помощь с круптаром
Отправлено: JurasskPark от 25 Февраля 2013, 18:25:33
А так и должно быть?
Цитировать (выделенное)
[Delay9][162 11]
and is now [Red1]sealed away[EndClr].
Цитировать (выделенное)
[EndClr]...[Delay9][162 11] и [Red4]пленены[EndClr].



[Дата добавления: 25 Февраля 2013, 19:02:29]
И по поводу поиска ошибок.
Смотри.
А английский файл, вставь те две строчки на русском.
Отобразились? Если да, то проблема в кодах в тексте русского проекта.
Если нет, то проблема в этих предложениях.

Если отображаются, то делаем следующим образом.
1) Разархивируем проекты.
2) Делим проект на 50% и вставляем его.
50%
3) Если текст, с темя двумя строчками, по прежнему отображаются, то косяк в кодах не вставленной части.
Если текст не отобразился, то значит проблема в 50%, которые мы вставили.
4)Те 50%, что мы вставили, делим опять на 50% и вставляем в проект, по сути у нас теперь будет 25%.
25%
Смотрим, виден текст или нет. И опять повторяем пункты с делением файлов, чтобы найти ту часть, которая не работает.


[Дата добавления: 25 Февраля 2013, 19:06:13]
Под вставкой я имел ввиду текстовый файл Group1.txt, который мы меняем, и потом опять добавляем в проект Круптара, через архивирование или просто замену в проекте с расширением .zip.
Название: Помощь с круптаром
Отправлено: Anton от 25 Февраля 2013, 20:13:19
А так и должно быть?

Да, это просто другой оттенок красного цвета, более читаемый. Я во всей игре заменил, т.к. оригинальный red1 читается на телеке очень плохо (да и на эмуле тоже). С этим точно проблем нет.

С остальным поковыряюсь, спасибо... но коды вообще-то все правильные.
Т.е. я сравнивал английский файл с русским. Все нужное на месте.

2) Делим проект на 50% и вставляем его.

С этим я что-то не понял...
Для начала попробую в английский текст вставить только один проблемный диалог - на русском...
-----------
Попробовал, диалог отобразился, зависания нет.


Насчет как половинить текст я все-таки не понял.
В Group1.txt удалять половину текста, потом еще половину, и т.д?
-----------
Попробовал кусок удалить...
После этого и вставки в архив (проект) сам проект потом не открывается.




[Дата добавления: 26 Февраля 2013, 13:20:25]

Решил проблему!
Она была в предыдущем диалоге №152.
Оказалось, что именно его длина должна быть равна (во всяком случае, не превышать, но я уже не экспериментировал) оригинальному. А именно 532 символа (включая пробелы и спец-коды). Подправил перевод этого диалога, вписавшись в 532 символа - и все заработало.

Бывает же такое...
Название: Помощь с круптаром
Отправлено: JurasskPark от 26 Февраля 2013, 14:26:04
Хорошо, что решил. Плохо, что я так и не смог нормально объяснить как искать половинчатым методом. :)
Смысл там в том, что когда находишь проблемный участок, то разделяешь его на две части. Проверяешь обе части. Та часть, которая опять не работает, ещё раз делишь на две и уже там ищешь. Опять выбираешь часть, которая не работает и опять её делишь. И так делаешь до того момента, пока не найдешь проблему.
Название: Помощь с круптаром
Отправлено: Anton от 26 Февраля 2013, 15:05:26
Не, ну это я понял )
Я не понял, как в этом случае поступать с файлом group1.txt, т.к. если из него удалять куски текста, то круптар потом проект не грузит. В самом открытом проекте только если копипастить английский в русский, подиалогово, но это ж геммор...

Странная оказалась проблема. Весь остальной текст в игре крутил-вертел как угодно, а тут надо точно сохранить количество символов. Первый раз такое вижу.
Название: Помощь с круптаром
Отправлено: JurasskPark от 26 Февраля 2013, 16:59:59
Приложил ролик. Если и после этого не будет понятно, то...  *WALL*
Название: Помощь с круптаром
Отправлено: Anton от 26 Февраля 2013, 18:31:23
Тю, так с двумя group1, английскими русским работать. )
Ну тогда понятно. )
Название: Помощь с круптаром
Отправлено: JurasskPark от 26 Февраля 2013, 19:47:26
Р-р-р-р-р-р-р...  *F_SMOKE* *F_SMOKE* *F_SMOKE*
Название: Помощь с круптаром
Отправлено: Anton от 26 Февраля 2013, 20:18:52
:)
Название: Помощь с круптаром
Отправлено: lupus от 25 Июля 2013, 18:48:52
Апну свою тему.
Вопрос такой:
Создал проект к Крупычу 7, текст вынимается и вставляется, но! Есть поинтеры, которые указывают на одну и ту же строку, следовательно вынимается она несколько раз и потом при правке таких строк ылазиют баги :(
Это как-то можно обойти без написания плагина?
Название: Помощь с круптаром
Отправлено: Mefistotel от 22 Августа 2013, 13:15:21
Уже, наверно, не актуально, но есть параметр списка Seek Same. Если его поставить на false, то тогда все такие строки будут вставляться отдельно, как в роме. Если true, то будет только одна строка, которая будет вставляться на место всех повторных.
Название: Помощь с круптаром
Отправлено: Anton от 09 Октября 2013, 10:39:16
Подскажите, что делать, если нет байта разрыва строки? (Game Boy Color, пойнтеры 2 байта, стоп-байты FE и FF).
Строки длиной 16 символов. Переносятся в плашке с текстом автоматически - после 16 символов текст печатается на новой строке.

Скриншот1:
Если я в PtStringLength ставлю 0, то текст выводится правильно, весь, но каждый диалог выводится одной строкой. До границы в 16 символов в роме, если нужно, добито пробелами. (Отметил красным). Реально неудобно...

Скриншот2:
PtStringLength=16. В результате круптар просто обрезал все строки до 16 знаков, а остальное выкинул, причем не обращая внимание на стоп-байт - все подряд порезал.

Можно ли как-то заставить его переносить на следующую строку эти вот блоки по 16 символов? (где на первом скрине отмечено красным - чтоб это были отдельные строки?)
Т.е. можно где-то в другом месте указать, что длина 16 (в таблице может как-то, или фиг его знает...)? чтоб оно считало первые 16 символов и сделало перенос на новую строку.
Название: Помощь с круптаром
Отправлено: greengh0st от 09 Октября 2013, 18:54:51
Я не спец, но по моему нельзя.
Название: Помощь с круптаром
Отправлено: Anton от 09 Октября 2013, 20:43:20
Эх, там еще в таблице кое-какие обозначения, а оно ж воспримется как текст:

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>

Хреново без байта переноса строки...
Название: Помощь с круптаром
Отправлено: greengh0st от 10 Октября 2013, 08:59:50
Антоха, я обычно делаю так F3=
. Слушай а ты у шефов на сайте не спрашивал, мож плагин кто напишет для этого дела. Я думаю этим можно будет решить все вопросы. Я к сожаление программить не умею, поэтому не смогу тебе ничего написать. Умел бы без проблем)) Ну по крайней мере дельфи я себе поставил и пару уроков пока прошел, но многие вещи мне там уже непонятны, так, что опыта пока вообще никакого нет)))
Название: Помощь с круптаром
Отправлено: Anton от 10 Октября 2013, 17:39:38
я обычно делаю так F3=

Не понял... )
Название: Помощь с круптаром
Отправлено: greengh0st от 11 Октября 2013, 01:06:21
Да кусок пропал)))) я имел ввиду что скобки другие ставлю))) квадратные))0
Название: Помощь с круптаром
Отправлено: Anton от 11 Октября 2013, 09:11:37
Да, я тоже. [ ]
Это просто готовая табличка с http://datacrystal.romhacking.net/wiki/The_Legend_of_Zelda:_Link%27s_Awakening:TBL
Название: Помощь с круптаром
Отправлено: greengh0st от 11 Октября 2013, 11:30:07
Антоха, так ты на шефе не спрашивал? Из тех кто у нас есть только Оракулум наверное сможет плагин написать, так как Трикзтер, редко появляется)))

[Дата добавления: 11 Октября 2013, 11:30:41]
И по-моему он не умеет писать плагины для крупыча.
Название: Помощь с круптаром
Отправлено: Anton от 11 Октября 2013, 15:10:14
Я, в общем, это... пока шо работает, и если просто энтером переходить на следующую строку.
Но до конца каждой строки вручную надо добивать пробелы, чтоб было 16 знаков. Игра потом их так и считывает: 16, перенос, 16, перенос, 1-16, стоп.
В принципе, не сильно сложно.
Название: Помощь с круптаром
Отправлено: greengh0st от 11 Октября 2013, 21:19:20
Ну по идее он же все равно будет считать перенос энтером, как лишний байт или нет?
Название: Помощь с круптаром
Отправлено: Anton от 12 Октября 2013, 08:20:44
Судя по тому, что в хексе видно - лишнего байта нет. Его ж в принципе нет. Текст идет сплошняком.
Зато теперь все очень удобно, в круптаре я делаю "строки" по 16 символов, и гораздо приятнее работать. Пробелами тока вручную добивать надо до 16.
Название: Помощь с круптаром
Отправлено: greengh0st от 12 Октября 2013, 11:22:22
Наверное фишка в том, что если у тебя есть байт переноса, то он его подставляет при переносе строки энтером. а если нет то нет. Не знал о таком))) ну зато теперь буду знать)))
Название: Помощь с круптаром
Отправлено: Rus от 12 Марта 2015, 17:59:59
Здравствуйте.
Есть такая кодировка UTF-8, а в играх её использующих кроме указателей присутствует ещё и контроль размера сообщения. Т.е. 4 байта указатель на текст, 4 байта на размер текста, потом идентификатор или сразу след указатель и опять 4 байта на размер и т.д.
Вопрос такой.
Как должен выглядеть плагин, чтобы при работе размер пересчитывался в соответствии с изменениями указателей, или же это делается стандартными методами?(Делается, но довольно криво, нет нужных арифметический действий типа чётности размера или размера без байтов окончания и если размер указан перед указателями, то тоже косячит на первом указателе) решается плагинами... глюки в этом месте всё же есть!
Тексты вроде научился от лишних "стопбайтов" внутри кодов избавлять при помощи короткой функции считывания, а вот таких примеров не видел... Или плохо искал? (Плохо смотрел, надо было меню переменные или околопойнтерные переменные поглядеть)
Ну и ладна, внешний фиксер справляется, но про решение в плагине всё равно было бы интересно узнать.

Так же данный плагин был бы полезен для понимания ошибки в ptrt2ptr (Slam (http://magicteam.net/forum/index.php?action=profile;u=591) объяснил что это работает только для указателя ссылающегося на один указатель, а я пытался применить его для указателя ссылающегося на блок указателей) , т.е. чтобы можно было не только вытаскивать текст через двойные указатели, но и складывать его обратно с изменением обоих и выравнивания для внешних указателей (кратность) 8, 16, 32.
Название: Помощь с круптаром
Отправлено: Anton от 12 Марта 2015, 21:13:37
Присоединяюсь к вопросу. Перевод Ocarina 3D из-за этого стоит уже поднялся, внешней прогой.
Про решение вопроса Круптаром все равно интересно.
Название: Помощь с круптаром
Отправлено: Anton от 19 Апреля 2015, 18:52:26
Я так понял, никто не знает, как пересчитать размер диалога именно в Круптаре? Или это невозможно?
4 байта пойнтер на диалог, после него в четырёх байтах указан размер этого диалога, потом еще 12 байт интервал, потом следующий пойнтер, размер диалога... и т.д.
Название: Помощь с круптаром
Отправлено: Guyver от 06 Сентября 2018, 06:13:41
Нужна помощь с компиляцей любой последней версии круптара 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... Я не совсем уверен, но должно сработать. Т.е. выбирать фиксированный поинтер или нет не надо будет, и всё будет работать как мне нужно...
Название: Помощь с круптаром
Отправлено: Вячеслав от 07 Ноября 2020, 20:18:43
Здравствуйте.
Помогите разобраться с Круптаром )
Как правильно добавлять в проект пойнтеры, когда старший и младший байт разнесены, предполагаю что используется 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 от 08 Ноября 2020, 17:01:08
Ну во втором примере точно должен сработать ptSplittedPtrs. В ptInterval выставляешь 4 (количество байт между старшим и младшим байтами поинтера) и ptSplittedPtrs в True.ptPointerSize должен быть 2. Не забудь про ptBIG_ENDIAN в False.
Название: Помощь с круптаром
Отправлено: Вячеслав от 08 Ноября 2020, 21:22:43
Спасибо за подсказку.
Разобрался, в первом примере функция тоже работает, только при указании адреса пойнтера необходимо указывать лишь начальный адрес старшего байта и ставить интервал 2  :)