Форум Magic Team

Разное => Программирование => Тема начата: Alex от 20 Февраль 2009, 14:02:55

Название: Kruptar
Отправлено: Alex от 20 Февраль 2009, 14:02:55
Возникла парочка вопросов по круптару:

1) Есть ли возможность автоматом добавлять нули в конец файла, если места в оригинале не хватает?

2) Есть у меня, к примеру, игра в двухбайтовой кодировке и за окончание строки отвечает код h0000, но круптар все время теряет 1 ноль и приходится ставить h000000 - тогда все нормально. Но когда в файле встречается штук 8 этих нулей подряд - один или два все время теряются и приходится дописывать вручную. Как быть?  :)
Название: Re: Kruptar
Отправлено: Джинни от 20 Февраль 2009, 17:13:34
1) Есть ли возможность автоматом добавлять нули в конец файла, если места в оригинале не хватает?
Есть. Просто указать в "Блоки для текста" начальный и конечный адрес блока, куда нужно вставить текст.
2) Есть у меня, к примеру, игра в двухбайтовой кодировке и за окончание строки отвечает код h0000, но круптар все время теряет 1 ноль и приходится ставить h000000 - тогда все нормально. Но когда в файле встречается штук 8 этих нулей подряд - один или два все время теряются и приходится дописывать вручную. Как быть?  :)
А это по-моему было только в шестой и пятой версии. Мне казалось, в седьмой это исправлено...
Название: Re: Kruptar
Отправлено: Alex от 22 Февраль 2009, 12:16:34
Цитировать (выделенное)
Есть. Просто указать в "Блоки для текста" начальный и конечный адрес блока, куда нужно вставить текст.
Если указать в блоках адрес больше, чем есть файле, то круптар просто не видит файл куда вставлять текст.

Цитировать (выделенное)
А это по-моему было только в шестой и пятой версии. Мне казалось, в седьмой это исправлено...
У меня такое творится в последней версии с сайта. Ну да ладно, я уже привык )
Название: Re: Kruptar
Отправлено: Джинни от 23 Февраль 2009, 09:59:22
Цитировать (выделенное)
Если указать в блоках адрес больше, чем есть файле, то круптар просто не видит файл куда вставлять текст.
Всё он прекрасно видит. Постоянно вставляю за пределы оригинального рамера без всяких проблем.
Пример:
Размер рома $200000.
Хотим расширить его на 65536 байт.
Добавляем диапазон 200000-20FFFF и пользуемся.
Ром расширяется. Текст вставляется в указанный диапазон, если пойнтеры позволяют конечно. Если они двухбайтовые и находятся далеко от этого места, то естественно нужно менять код игры.

Цитировать (выделенное)
У меня такое творится в последней версии с сайта. Ну да ладно, я уже привык )
Если кодировка двухбайтовая, поставь ptAlign = 2. Должно помочь.
Название: Re: Kruptar
Отправлено: щербаков5 от 23 Февраль 2009, 15:35:21
И не забудь о моей КНОПОЧКЕ! :)
Название: Re: Kruptar
Отправлено: Alex от 24 Февраль 2009, 12:20:01
Не хочет что-то он у меня работать. При увеличении диапазона пишет "Файл не найден" и наглухо виснет. Поинтеры 4-байтовые, все должно, по идее, вставляться.

А если поставить PtAlign=2, то вместо текста извлекается не пойми что.
Название: Re: Kruptar
Отправлено: Джинни от 24 Февраль 2009, 15:50:41
Найдена ошибка со всем этим. Сейчас исправляю.
Название: Re: Kruptar
Отправлено: Джинни от 25 Февраль 2009, 09:14:28
Качайте новую версию:
http://magicteam.net/progs/Kruptar.v7.0.0.85.rar
Только, если там будут какие-то новые ошибки, прошу сразу сообщить. :)
Название: Re: Kruptar
Отправлено: Alex от 26 Февраль 2009, 11:29:57
Теперь все отлично работает, но кое-что все же осталось )

У меня в роме есть 5 поинтеров подряд, указывающих на $00000000, а так как код окончания строки $0000, то и видит он, похоже, только первую пару нулей. Вторую пару вставлять не хочет.
Название: Re: Kruptar
Отправлено: Джинни от 26 Февраль 2009, 13:27:23
Ну это уже добавь дополнительный код окончание со значением 00000000.
Название: Re: Kruptar
Отправлено: щербаков5 от 26 Февраль 2009, 14:17:42
И про кнопочки не забыл. Уря!  *F_COOL*
Название: Re: Kruptar
Отправлено: Mefistotel от 05 Март 2009, 10:30:42
Привет Джин!
У меня возникли проблемы с 7 Круптаром. Надеюсь, ты мне поможешь. :)
В общем, игра Neutopia (U). Я составил проект, подключив пойнтеры в файле. Потому как они расположены не упорядоченно, а с разными интервалами между друг другом.
Вставил немного текста. Решил проверить. И вот, выявилось, что после первого диалога со старушкой, в конце остается мусор... Лишние пробелы и точка, и даже запятая. И ещё даже не окончен диалог. Вот скрин.
(http://s52.radikal.ru/i135/0903/87/e4eeada1cb18.png)
Стопбайт - F2, байт переноса строки - F1. Я решил проверить всё ли верно делает Круптар, открыв ром в хексредакторе. Но там с первого взгляда всё правильно. Идёт текст, за ним стопбайт и следующий текст и никаких пробелов и прочего. И пойнтеры верно пересчитаны. Вот пару скринов.
(http://i081.radikal.ru/0903/72/24abd88818a8t.jpg) (http://radikal.ru/F/i081.radikal.ru/0903/72/24abd88818a8.jpg.html)
(http://i074.radikal.ru/0903/fb/993820ed176dt.jpg) (http://radikal.ru/F/i074.radikal.ru/0903/fb/993820ed176d.jpg.html)
Откуда берутся эти лишние пробелы? ::)
P.S. Я вот тоже хотел написать про быстрый запуск эмуля, а ты уже подправил. Спасибо. *FRIENDS*
Ещё интересует, нельзя ли сделать ,чтобы окно, которое появляется после пересчета пойнтеров, исчезало автоматически, как в 6 версии. Чтобы не приходилось жать крестик постоянно.
И можно ли в 7 версии вытащить в файл? То есть не просто копируя, а опцией, типо вынуть текст. Ну это мелочи.
Название: Re: Kruptar
Отправлено: JurasskPark от 05 Март 2009, 16:36:53
Первый взгляд ламера и первая мысль было о том, что проблема в том, что длина переведенных строк больше среднего значения оригинальных строк, которые нельзя превышать, т.е. максимум символов, которые можно написать в строке. :)

P.S. Я как админ могу писать самые сумасшедшие идеи.  %)

P.S.S. У папки прикольное название "Игровой портал"! :) Звучит то как! :)
Название: Re: Kruptar
Отправлено: Guyver от 05 Март 2009, 19:46:37
И ещё в древовидной структуре в самом левом окне добавить яркий цвет выделенному элементу, а то выберешь например фразу - а поинтер выбранный отображён сереньким цветом, не видно какой именно из списка выбран...

Группы

поинтеры

Лист1

00В560
00В562
00В564
00В566

Я вот об этих поинтерах, в левом окне древовидной структуры, да и вообще обо всех элементах...

В смысле цвет пропадает с потерей фокуса, а надо чтобы он оставался...

JP: Володя, не хулигань. (:
Название: Re: Kruptar
Отправлено: Mefistotel от 06 Март 2009, 07:35:15
Цитировать (выделенное)
Первый взгляд ламера и первая мысль было о том, что проблема в том, что длина переведенных строк больше среднего значения оригинальных строк, которые нельзя превышать, т.е. максимум символов, которые можно написать в строке. Улыбка
Твой ламерский взгляд, вероятно, мне не поможет. Максимальная длина символов в строке- 30. И если ты что-то превысишь, то текст просто выводится на другой строке.Так в многих играх. Здесь ничего не превышено.
На скриншоте явно видно, что текст закончился на "любовь Принцессы", а пробелы и символы почему-то остались. Если вставлять аналогичный текст хексредактором, то такой траблы нет. Как только процессор считает F2, диалоговое окно должно быть закрыто.
Название: Re: Kruptar
Отправлено: Джинни от 06 Март 2009, 08:00:46
Возможно перед или после F2 должно быть ещё что-нибудь?
Название: Re: Kruptar
Отправлено: Mefistotel от 06 Март 2009, 12:45:13
Нет. Я по-моему разобрался.  :) Круптар ставит нули в конец участка переводимого текста, если остается свободное место. Так вот, а байт пробела в этой игре $CF. И на нули она как-то неадекватно реагирует. Заменив нули в свободном месте на CF, всё стало нормально, за исключением нескольких пойнтеров. Но это уже, видимо, мой косяк. Исправлю.
Название: Re: Kruptar
Отправлено: Alex от 05 Май 2009, 01:49:14
Появился еще один вопрос по поинтерам:

Имеем 4-байтный поинтер со значением 00000001h, адрес строки, на которую указывает поинтер - 0187E9h.
Чтобы посчитать смещение, нужно вычесть 0187E9h-01000000h,но это получается отрицательное число и я никак не могу записать его в круптар :(
Название: Re: Kruptar
Отправлено: JurasskPark от 05 Май 2009, 05:22:57
Хекс-числа с минусом пишутся таким образом: hFFFFFFFF - это -1  %)

Название: Re: Kruptar
Отправлено: Джинни от 05 Май 2009, 06:53:39
Цитировать (выделенное)
0187E9h-01000000h
Может не $01000000 (потому что это целых 16 мегабайт), а всего лишь $01????

А вообще отрицательные значения легко вводить, просто это надо делать в десятичном виде:
вводишь -123, получаешь hFFFFFF85.
Название: Re: Kruptar
Отправлено: Alex от 05 Май 2009, 09:04:46
А, все, разобрался :) Просто нужно было поставить Motorola TRUE :)
Название: Re: Kruptar
Отправлено: Alex от 05 Май 2009, 15:30:35
Теперь проблема с окончанием строки...

За окончание строки отвечает байт $00, но в тексте выделение цветом записывается последовательностью байт $1A06FF000001. Так вот, после первых же нулей круптар считает, что строка закончилась и дальше ничего не показывает.

Можно ли это как-то обойти? Может, добавить эту последовательность в исключения?
Если в таблице символов написать 1A06FF000001=<Red>, то круптар все равно считает, что строка закончилась после первых нулей.
Название: Re: Kruptar
Отправлено: JurasskPark от 05 Май 2009, 17:00:13
Alex, а ты скажешь что за РОМ?  ;)
Название: Re: Kruptar
Отправлено: Alex от 05 Май 2009, 18:34:28
Это Zelda Twilight Princess на Куб. Хочу вот помочь Антону проект для Круптара сделать.
Название: Re: Kruptar
Отправлено: Джинни от 06 Май 2009, 06:51:17
Если 00 - стопбайт, то текст перестанет считываться в любом месте, где встретится этот байт. Чтобы считать такой текст полностью, нужно писать отдельный плагин, который будет учитывать комбинации с этим байтом.
Название: Re: Kruptar
Отправлено: Anton от 06 Май 2009, 08:54:03
За окончание строки отвечает байт $00

Я уточню - не за окончание строки, а за окончание блока текста/начало следующего (диалога, названия действия и т.п.)
За перенос строки отвечает байт 0A.

Типа так:

Обычный диалог:
Предыдущий диалог<00>Текст, текст<0А>
Вторая строка, текст.<00>Следующий диалог...


Диалог с цветом:
Предыдущий диалог<00><1A06FF000001>Текст красного цвета, текст<0A>
вторая строка текст красного цвета<1A06FF000000>, текст обычного белого цвета,<0A>
третья строка обычного текста.<00>Следующий диалог...


Еще бывает несколько нулевых байтов между диалогами:
Предыдущий диалог.<00><00><00><00><00>Следующий диалог.

Хотя это наверное не важно )
Название: Re: Kruptar
Отправлено: Alex от 06 Май 2009, 12:32:55
А может кто-нибудь помочь написать этот плагин, если я дам все комбинации?
Там ведь по идее не сложно, просто добавить их в исключения...
Название: Re: Kruptar
Отправлено: Джинни от 07 Май 2009, 06:19:03
За окончание строки отвечает байт $00

Я уточню - не за окончание строки, а за окончание блока текста/начало следующего (диалога, названия действия и т.п.)
За перенос строки отвечает байт 0A.
Я про стопбайт и говорю.

Цитировать (выделенное)
А может кто-нибудь помочь написать этот плагин, если я дам все комбинации?
Там ведь по идее не сложно, просто добавить их в исключения...
Качаем исходники плагинов: http://griever.magicteam.net/files/Kruptar_PlugSrc.rar
Читаем документацию: http://magicteam.net/docs/kruptar/doc.htm
И пишем.
Название: Re: Kruptar
Отправлено: Anton от 07 Май 2009, 08:37:28
И пишем.

Увы, с программированием у меня полный ноль.
Название: Re: Kruptar
Отправлено: JurasskPark от 07 Май 2009, 10:40:29
Антон, ну ответ Саши ты понял.  *CONNIE*
Тебе прямая дорога к Михаилу Ужасному. Если пропросишь, может он тебе и напишет плагин, правда для начала может дать кусочек текста для тестрования твоих переводческих талантов, чтобы он не усомнился, что тратит свои силы на написания плагина не напрасно.  ;D
Название: Re: Kruptar
Отправлено: Anton от 07 Май 2009, 14:01:27
Кто такой Михаил Ужасный? )

тестрования твоих переводческих талантов

А че их тестировать.
Пусть в Окарину поиграет.
И вот к Твайлайт принцесс первый диалог готов: http://zelda64rus.ucoz.ru/forum/19-49-1
Название: Re: Kruptar
Отправлено: JurasskPark от 07 Май 2009, 15:55:45
Кто такой Михаил Ужасный? )

 +500  LOL

Но на вопрос всё же отвечу. :)
Правильный ответ: HoRRoR
Название: Re: Kruptar
Отправлено: Anton от 07 Май 2009, 16:43:42
LOL

Да ладно тебе. Я что с ним общался, что ли?
Откуда я знаю.
Название: Re: Kruptar
Отправлено: Alex от 12 Май 2009, 21:13:52
Спасибо Гриверу за плагин :)

Вообще, во многих играх может понадобиться запись таких последовательностей. Неплохо бы сделать их запись попроще, а не через Delphi o_O
Название: Re: Kruptar
Отправлено: JurasskPark от 12 Май 2009, 21:21:38
Неплохо бы сделать их запись попроще, а не через Delphi o_O

Ты имеешь в виду какой-нибудь текстовый файл, в котором можно указать просто необходимые тебе значения?
Тогда нужно в Kruptar'e код менять т.е. писать Kruptar 8 :)
Название: Re: Kruptar
Отправлено: xHR от 17 Май 2009, 12:09:58
правда для начала может дать кусочек текста для тестрования твоих переводческих талантов, чтобы он не усомнился, что тратит свои силы на написания плагина не напрасно.
Ну его таланты можно проверить, поиграв в обе переведенные зельды на N64
Название: Re: Kruptar
Отправлено: JurasskPark от 17 Май 2009, 13:30:12
 *OFFTOP*

правда для начала может дать кусочек текста для тестрования твоих переводческих талантов, чтобы он не усомнился, что тратит свои силы на написания плагина не напрасно.
Ну его таланты можно проверить, поиграв в обе переведенные зельды на N64

PicaSSO, ты как всегда не понял ответ.
А смысл в моих словах такой, что с Ужастиком сложно найти общий язык. И если его попросить с чем-то помочь, то вместо помощи он может поумничать, унизить и не помочь.
Что в случае с Антоном и произошло.

http://www.shedevr.org.ru/forum/viewtopic.php?t=3875

Цитировать (выделенное)
Слушай, Хоррор... Дружище...
Ты можешь общаться по-человечески и не умничать?

Объясни нормально, как подгонять размер образа файлами-пустышками, а не "кто сказал" и про "железную дорогу"... Ладно?
Я не программер и по математике у меня твердая двойка. Я не понимаю многого. Но я понимаю, когда объясняют по-человечески.

Если ты что-то знаешь и готов посоветовать что-то дельное - посоветуй. Буду очень благодарен. Если нет - не отвечай лучше.

А вот Alex помогает Антону без всяких выкрутасов.
Название: Re: Kruptar
Отправлено: Anton от 19 Май 2009, 11:01:40
Ну почему-же. Хоррор пожелал мне удачи :)
Разберемся без Хоррора, раз у него амбиции )

А Алексу огромное спасибо, разобрался со всем, намутил плагины, все прислал и объяснил по людски.
Сижу теперь, о пойнтерах не думаю, открыл круптар и перевожу )

PicaSSO (>обе переведенные зельды на N64) - только окарину.. )
Мажору ж готтаХ с Алексом перевели. И надо сказать, отлично перевели )
Название: Re: Kruptar
Отправлено: xHR от 21 Май 2009, 13:31:38
> PicaSSO, ты как всегда не понял ответ.
Да все я понял =) Антон уж точно не станет переводить хуже, чем переводил. А ХоРРоР - да, спеси много. А ведь ему так же отвечали когда он начинал в свое время +)
Название: Re: Kruptar
Отправлено: Anton от 21 Май 2009, 14:42:04
Я просто не очень понимаю людей, у которых знания в какой-то области выше, чем у тебя,
и они стараются это всем видом показать.
Название: Re: Kruptar
Отправлено: Guyver от 21 Май 2009, 16:08:28
Будет ли в крупыче поддержка мультиязычности??? Хотя бы в меню... А то у меня есть друг буржуинский, так вот - трудно ему понять русское меню проги... Вот бы английский был... Нажал кнопку - англ, нажал другую - русский...
Название: Re: Kruptar
Отправлено: JurasskPark от 21 Май 2009, 20:18:48
Пусть учит русский язык.  ;D А то мы в иностранных прогах видите ли должны разбираться, а они в наших нет.   ;)
Володь, там не так уж и много надписей, чтобы понимать.
А может он не понимает КАК работает программа, а не то какие надписи?  :) А то я тоже не понимаю, как работает эта программа.  LOL
Название: Re: Kruptar
Отправлено: Джинни от 22 Май 2009, 07:23:58
Цитировать (выделенное)
Будет ли в крупыче поддержка мультиязычности??? Хотя бы в меню... А то у меня есть друг буржуинский, так вот - трудно ему понять русское меню проги... Вот бы английский был... Нажал кнопку - англ, нажал другую - русский...
Будет, будет :)
Название: Re: Kruptar
Отправлено: Guyver от 22 Май 2009, 12:10:43
цЫтата: "Будет, будет"

Шашлык из тебя будет ;о))))))))))))))))))))))))))))

Не будет ли так любезен многоуважаемый джинн...
Название: Re: Kruptar
Отправлено: Alex от 29 Май 2009, 23:47:14
А можно в 7 круптаре вытащить текст без использования поинтеров? :) Или как это сделать в 6?
Название: Re: Kruptar
Отправлено: JurasskPark от 30 Май 2009, 05:28:11
А можно в 7 круптаре вытащить текст без использования поинтеров? :) Или как это сделать в 6?

 :o Я знаю как вытащить текст из проекта круптара, но "вытащить текст без использования поинтеров" - это что-то новенькое.
А поподробнее можно?
Название: Re: Kruptar
Отправлено: Джинни от 30 Май 2009, 06:21:27
А можно в 7 круптаре вытащить текст без использования поинтеров? :) Или как это сделать в 6?
Да можно конечно, даже в пятом можно было. Размер пойнтеров 0 поставить и всё.
Название: Re: Kruptar
Отправлено: GD от 31 Май 2009, 20:11:23
Согласен с Володей +) Ибо ели-ели заметно... не удобно =) (хотя бы зеленым выделялось =))))))))))))) )

ОФФТОП

Саня, поздравляю с победой Круптара на конкурсе :Ъ
Название: Re: Kruptar
Отправлено: Джинни от 01 Июнь 2009, 05:22:46
Согласен с Володей +) Ибо ели-ели заметно... не удобно =) (хотя бы зеленым выделялось =))))))))))))) )
Ты про что?

Саня, поздравляю с победой Круптара на конкурсе :Ъ
Спасибо :)
Название: Re: Kruptar
Отправлено: GD от 01 Июнь 2009, 19:36:47
блин! глюканул! думал пост Гайва последний.... :-[

Цитировать (выделенное)
И ещё в древовидной структуре в самом левом окне добавить яркий цвет выделенному элементу, а то выберешь например фразу - а поинтер выбранный отображён сереньким цветом, не видно какой именно из списка выбран...

Группы

поинтеры

Лист1

00В560
00В562
00В564
00В566

Я вот об этих поинтерах, в левом окне древовидной структуры, да и вообще обо всех элементах...

В смысле цвет пропадает с потерей фокуса, а надо чтобы он оставался...

сорри за флуд...

P.S. Первое предупреждение
Название: Re: Kruptar
Отправлено: Джинни от 02 Июнь 2009, 05:39:29
Цитировать (выделенное)
Я вот об этих поинтерах, в левом окне древовидной структуры, да и вообще обо всех элементах...

В смысле цвет пропадает с потерей фокуса, а надо чтобы он оставался...
Если хочется узнать какому пойнтеру принадлежит определённая строчка, нужно просто нажать на эту строчку двойным щелчком мышки и пойнтер выделится в дереве.
Название: Re: Kruptar
Отправлено: JurasskPark от 07 Август 2009, 21:27:45
Кстати, в новой версии Круптара в ReadMe_Eng.txt в Features забыли текст выровнить на 79 символов как в ReadMe_Rus.txt.  ;)

Цитировать (выделенное)
Kruptar 7 allows extracting and editing text resources of almost any format,
including dictionary compression schemes (DTE, MTE). Text data compressed by
any other algorithm can be extracted into clear and easy to edit plain text,
but this process requires plug-in creation, which supposes you can code Object
Pascal dlls. For the user's convenience multiple groups of text blocks can be
created during extraction process. Each block can have different text data
formats, encoding tables and pointers formats, which allows storing all your
text in one project file. Kruptar 7 has convenient editing environment: tabs,
text visualization, and functional search, ability to work with different
encodings: SHIFT-JIS, UTF-16, etc. All these editing functions makes Kruptar a
lot better replacement for your notepad. But you can extract text into simple
*.txt file anytime: Kruptar 7 project file (*.kpx) is a simple ZIP archive,
which also contains encoding tables (*.tbl) and plain text files (*.txt)
inside. Kruptar 7 is notable for an excellent pointer usage. Of course all
pointers are recalculated automatically during text insertion and text strings
are inserted optimally into given space. The Kruptar's flexible system which
works with pointers also needs to be pointed out: almost all possible pointer
formats are implemented here. Text insertion is a one click business and it is
committed pretty fast (the process is constantly optimizing from version to
version). That allows you to view the result instantly. Unfortunately main
disadvantage of Kruptar 7 is lack of full and detailed documentation in
English.
Название: Re: Kruptar
Отправлено: Джинни от 08 Август 2009, 06:41:49
Аватарка у тебя забавная :D
Название: Re: Kruptar
Отправлено: nikita600 от 09 Октябрь 2009, 12:38:30
Джинни, я пишу тебе по поводу моей древней доки по Круптару7. Планируется ли выкладка её на сайт или нет? Если что, то сейчас я её дописываю, учитывая изменения в новых версиях Круптара. Жду ответа.
Название: Re: Kruptar
Отправлено: JurasskPark от 09 Октябрь 2009, 19:21:42
Вспомнил свою наработку. LOL

Был бы у меня текст, а так я бы оформил. :) Но писать про то, что не понимаешь, это невозможно.  ;D

З.Ы. >_< Дурацкие мои ошибки. Особенно "ться".
Название: Re: Kruptar
Отправлено: Guyver от 08 Ноябрь 2009, 08:22:54
Начал переводить игру одну, так вот, нашёл поинтеры, они

обычные - двухбайтный, вида:

37A0 45A0 4DA0 и т.д. смещение у них h4010

А сам текст такого вида:

/00/06/ПРИВЕТ/00/04/ПОКА/00/07/ПАРОВОЗ/08/04/ЩИТ1/08/04/ЩИТ

2/09/06/МАГИЯ1/09/06/МАГИЯ2

/00/06/ПРИВЕТ
/00/04/ПОКА
/00/07/ПАРОВОЗ
/08/04/ЩИТ1
/08/04/ЩИТ2
/09/06/МАГИЯ1
/09/06/МАГИЯ2

Где число перед словом - длина самого слова.

В таблице поинтеров каждый поинтер указывает на символ,

который стоит перед символом длины слова... Т.е. в

/00/06/ПРИВЕТ он указывает на /00 , А в /09/06/МАГИЯ2 он

указывает на /09

Как видно, символов окончания строки нет! Как составить

проект к такой игре? не писать же каждое слово отдельно...

Надо составлять к крупычу плагин? Или можно как-то

стандартными методами обойтись?

В принципе я могу все поинтеры загрузить из файла, но как

быть с разной длиной строк? Как заставить крупыч вынимать

длину строк, руководствуясь символом перед самим словом?
Название: Re: Kruptar
Отправлено: Джинни от 08 Ноябрь 2009, 10:04:12
Конечно нужно писать плагин.
Сначала читаешь первый байт (что он означает?), записываешь его в переменную, потом байт длины слова, потом само слово указанной длины. Тот первый байт и саму строку объединяешь в одну выходную строку.
Название: Re: Kruptar
Отправлено: Guyver от 08 Ноябрь 2009, 10:36:33
Беда, что я это не умею... Пока нашёл такой выход, я после последнего предложения беру последовательность символов, нопример 010305638563 и обьявляю её кодом окончания строки. И вынимаю поинтеры, при этом получается:

1 поинтер:
/00/06/ПРИВЕТ
/00/04/ПОКА
/00/07/ПАРОВОЗ
/08/04/ЩИТ1
/08/04/ЩИТ2
/09/06/МАГИЯ1
/09/06/МАГИЯ2

2 поинтер:
/00/04/ПОКА
/00/07/ПАРОВОЗ
/08/04/ЩИТ1
/08/04/ЩИТ2
/09/06/МАГИЯ1
/09/06/МАГИЯ2 3

3 поинтер:
/00/07/ПАРОВОЗ
/08/04/ЩИТ1
/08/04/ЩИТ2
/09/06/МАГИЯ1
/09/06/МАГИЯ2

И т.д. - потом я просто стираю всё лишнее... Но работы много, стирать приходится ОЧЕНЬ многое...
Название: Re: Kruptar
Отправлено: Джинни от 09 Ноябрь 2009, 08:19:47
Ты программы пишешь? Пишешь. В архиве с круптаром есть исходники самого простого плагина. Берёшь его и изменяешь как тебе надо. Какие именно процедуры изменять и для чего написано тут: http://magicteam.net/docs/kruptar/doc.htm
Название: Re: Kruptar
Отправлено: gegmopo3 от 09 Ноябрь 2009, 12:15:49
Эх, если бы стандартно отнимать от значени пойнтера hC00000(snes hirom) или h800000, было бы вообще круто...
Или это можно в плагине намудрить?
Название: Re: Kruptar
Отправлено: Джинни от 10 Ноябрь 2009, 07:54:26
Hirom то можно легко стандартными средствами реализовать, а вот lorom пока нет.
Название: Re: Kruptar
Отправлено: gegmopo3 от 10 Ноябрь 2009, 13:39:44
А как hirom реализзовать?
А то делаю так, только два первый байта беру, а третий не трогаю,  просто reference добавляю сколько нужно...
А третий байт тупо добавляю=)
Название: Re: Kruptar
Отправлено: Джинни от 11 Ноябрь 2009, 08:29:23
Если я не ошибаюсь, в HIROM обычная адресация, просто C0000000 добавляется к смещению.
Название: Re: Kruptar
Отправлено: gegmopo3 от 12 Ноябрь 2009, 09:50:44
Если честно?=)
Не катит=)
Название: Re: Kruptar
Отправлено: dnd1 от 10 Февраль 2010, 11:53:27
Джинн
Поскажи, пожалуйста, умеет ли Круптар работать с поинтерами, расположенными в нестандартном порядке: П1 П2 П3 [пропуск в 2 байта] П4 П5 П6 [пропуск в 2 байта] ...  или
П1 [пропуск 1 байт] П2 П3 [пропуск 6 байт] П4 [пропуск 1 байт] ...
или надо писать свой плагин?
Заранее спасибо.
Название: Re: Kruptar
Отправлено: Джинни от 10 Февраль 2010, 12:14:49
Просто добавлять отдельно каждый пойнтер.
Название: Re: Kruptar
Отправлено: gegmopo3 от 10 Февраль 2010, 13:32:12
удобнее в текстовике адреса написать, а потом вставить, а то по одному муторно добавлять, скроллбар приходиться отматывать на начало+)
Название: Re: Kruptar
Отправлено: Джинни от 11 Февраль 2010, 09:38:35
Конечно удобно. Это тоже называется "добавление отдельно".
Название: Re: Kruptar
Отправлено: gegmopo3 от 11 Февраль 2010, 10:27:10
Я просто дополнил к твоему указанию ;D
Название: Re: Kruptar
Отправлено: dnd1 от 11 Февраль 2010, 11:55:09
Джинни, gegmopo3 большое спасибо за помощь.
Название: Re: Kruptar
Отправлено: Cool-Spot от 14 Июнь 2010, 15:32:52
Решил освоить круптар и перевести с помощью него игрушку на сегу (Decap Attack).
Так вот, в статье нашел немного непонятного:

4.     Кратность.
При пересчёте, каждый пойнтер будет кратным одному из выбранных значений (1, 2, 4, 8). Кратность на 2, 4 и 8 используется только в некоторых играх для GBA.

(Можно поподробнее? :))

8.     Signed.
Пойнтеры типа signed int (c++) или integer (pascal/delphi),
то есть они могут указывать как вперёд от начала отсчёта, так и назад.

(На каких платформах это используется?)



Название: Re: Kruptar
Отправлено: Джинни от 14 Июнь 2010, 15:57:16
4.     Кратность.
При пересчёте, каждый пойнтер будет кратным одному из выбранных значений (1, 2, 4, Крутой. Кратность на 2, 4 и 8 используется только в некоторых играх для GBA.
(Можно поподробнее? Улыбка)
Адрес строки кратен введённому значению. Если 2, то $1C00, $1C02, $1C04... Если 4, то $1C00, $1C04, $1C08

8.     Signed.
Пойнтеры типа signed int (c++) или integer (pascal/delphi),
то есть они могут указывать как вперёд от начала отсчёта, так и назад.
(На каких платформах это используется?)
На любых.
Название: Re: Kruptar
Отправлено: Cool-Spot от 14 Июнь 2010, 18:31:32
На любых.
А в случае игры Decap Attack? Как они вообще различаются?
Название: Re: Kruptar
Отправлено: Джинни от 15 Июнь 2010, 07:36:16
В этой игре обычные пойнтеры.
Название: Re: Kruptar
Отправлено: Satan от 22 Июнь 2010, 19:29:47
Судя по всему, хорошая прога этот Круптар, вот только я не могу понять как работать ей, никто не мог бы создать полную инструкцию по Круптару? та что на сайте не совсем полная, а создать пошаговую инструкцию с картинками желательно, например, откройте то, и скрин, появится то, и скрин, ну можно скрины не так часто.
Название: Re: Kruptar
Отправлено: JurasskPark от 22 Июнь 2010, 20:15:02
Это просто злой рок Круптара. Пока это не удалось ещё никому. :)
Название: Re: Kruptar
Отправлено: Oraculum от 23 Июнь 2010, 00:53:35
Вообще в ней нет ничего такого сложного, главное - знать основы ромхакинга. Документ к шестому Круптару подходит, кстати, во многом и к седьмому. Дополнительная информация по указателям и т.д. находится в документе "Написание плагинов для Kruptar 7".
вот только я не могу понять как работать ей
А вот тут надо искать проблемы не в отсутствии инструкции, а кое в чём другом...
Название: Re: Kruptar
Отправлено: ???4 от 03 Июль 2010, 03:11:42
Вот интересно вот это вот:
(http://img340.imageshack.us/img340/3254/wftc.th.png) (http://img340.imageshack.us/img340/3254/wftc.png)
баг или фича? Случайно нажал какое-то сочетание клавиш(сам не понял какое) и фраза стала как на иврите или арабрском: при нажатии «?» курсор двигается влево, а если «?», то вправо. Или может быть это фича(или баг) Виндоўса?

Апдейт: это случилось не только с одной фразой, а вообще со всем текстом перевода в Круптаре.
Название: Re: Kruptar
Отправлено: Джинни от 03 Июль 2010, 05:55:33
Меню по правой кнопке мышки, а в нём опция. Стандартная.

Вернее была когда-то, её меню программы перекрывает.
Можно увидеть в окне поиска. Но там не указано какой-нибудь комбинации клавиш, которая может её включать/выключать.
Название: Re: Kruptar
Отправлено: ???4 от 03 Июль 2010, 07:47:31
Спасибо за наводку.
Комбинацию клавиш быстро нагуглить не смог, но эксперименты с нотепадом, показали что нужно закрыть и открыть Круптар (а не только проект, как я пробовал раньше).
Название: Re: Kruptar
Отправлено: Cool-Spot от 25 Июль 2010, 07:06:30
Джинни, а как определять эти поинтеры типа signed int (c++) или integer (pascal/delphi).
Вчера сидел и почти во всем разобрался! Помогла и утилитка Griever's Pointer Searcher. В общем-то в проге и нет ничего особо сложного. Надо только уметь поинтеры находить и с хекс-редом уметь работать :)
Название: Re: Kruptar
Отправлено: Джинни от 25 Июль 2010, 16:38:40
singed int - это когда диапазон значений $FFFFFFFF..$80000000 представляет собой отрицательные значения -1..-2147483648.
Название: Kruptar
Отправлено: Jim_Di от 27 Октябрь 2010, 10:50:32
Или может быть это фича(или баг) Виндоўса?
Именно так. Если такое беспокоит, то следует отключить поддержку возможности ввода текста справа налево.

WinXP:
Кнопка "Пуск" -> "Панель управления" -> "Язык и региональные стандарты" -> Вкладка "Языки" -> Раздел "Дополнительная языковая поддержка" -> Снимите флажок опции "Установить поддержку языков с письмом справа-налево и сложным письмом (включая тайский)" -> Перегрузите компьютер
Название: Kruptar
Отправлено: ToledO от 18 Ноябрь 2010, 14:25:51
Скажите что нужно писать в папке диапазон адресов? И на примере покажите, как это должно выглядеть.
Название: Kruptar
Отправлено: Джинни от 18 Ноябрь 2010, 14:35:58
Нужно писать адрес (адреса) начала и конца блока в роме, в который будет вставляться текст. Например 16000-17FFF
Название: Kruptar
Отправлено: ToledO от 18 Ноябрь 2010, 15:06:59
Нужно писать адрес (адреса) начала и конца блока в роме, в который будет вставляться текст. Например 16000-17FFF
Под началом и кончом ты конкретно что имеешь ввиду?
Байт перед первой буквой в блоке и стоп байт в конце блока,
или первую и боследную буквы в блоке?
и еще - интервал между поинтерами составляет 10 позиций(но ведь в каждой по два байта), значит мне надо писать 10 или 20?
Еще один вопрос:
когда добавляешь поинтеры в List, появляется окно со строками начальный адрес(сюда понятно, пишем первый поинтер) и конечный адресс - вот сюда что писать надо?
Не удивляйтесь что у меня так много вопросов. Просто проект я давно составил и поинтеры нашел, но текст в результате не появляется. Без помощи мне никак не обойтись.

Добавлено позже:
Джинни , а у тебя аська есть?
Название: Kruptar
Отправлено: Джинни от 18 Ноябрь 2010, 15:59:36
Никакого конкретного байта. Блок(и) - это любое место в роме. Адресами задаётся диапазон. Адреса могут быть как в пределах оригинального текста, так и где угодно в роме, если позволяет адресация.

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

конечный адресс - вот сюда что писать надо?
Адрес последнего пойнтера.

Не удивляйтесь что у меня так много вопросов. Просто проект я давно составил и поинтеры нашел, но текст в результате не появляется. Без помощи мне никак не обойтись.
Чему тут удивляться, ты не первый.
Название: Kruptar
Отправлено: &ryu от 19 Ноябрь 2010, 01:31:55
Джинн, сделай какую-нибудь небольшую фичу в Круптаре и зарелизь мини-версию. Пожалуйста. Очень прошу.

Можешь даже не писать, что за фича, в чейнджлоге, вместо этого написать: "скрытая фича для Эндрю. Найдёт - получит ещё мини-фичу".
Название: Kruptar
Отправлено: JurasskPark от 19 Ноябрь 2010, 06:57:08
Фигасе!  :o
Название: Kruptar
Отправлено: ToledO от 29 Ноябрь 2010, 21:32:15
Джинни  а как узнать что в роме есть еще место для перевода? У меня в роме после блока текста идет большое пространство из ff.
диапазон адресов указывается 7 цифрами. Мой диапазон e569-f14e, значит пиасть надо так - 000у569-000а14у или так e569000-f14e000 ?
что означает ptAlign и какой пункт указывает кратность?
Название: Kruptar
Отправлено: Oraculum от 29 Ноябрь 2010, 22:26:15
значит пиасть надо так - 000у569-000а14у или так e569000-f14e000
Первое.
какой пункт указывает кратность?
ptMultiply
что означает ptAlign
Оно вроде должно быть равно 2, если кодировка двухбайтовая.
Название: Kruptar
Отправлено: ToledO от 29 Ноябрь 2010, 22:29:18
Oraculum может я задам банальный вопрос, но как высчитать кратность поинтера? Не, ну как вообще кратность высчитывается знаю, но ведь здесь же система Hex - калькулятор выдает Hex значение,когда делишь поинтер на какое нибудь число, а не числовой вариант.
Название: Kruptar
Отправлено: Oraculum от 30 Ноябрь 2010, 03:42:23
Цитата: из http://magicteam.net/krupdoc.htm
При пересчёте, каждый пойнтер будет кратным одному из выбранных значений (1, 2, 4, 8). Кратность на 2, 4 и 8 используется только в некоторых играх для GBA.
Название: Kruptar
Отправлено: Джинни от 30 Ноябрь 2010, 07:00:26
Цитата: Cool-Spot от 15 Июнь 2010, 07:32:52
4.     Кратность.
При пересчёте, каждый пойнтер будет кратным одному из выбранных значений (1, 2, 4, Крутой. Кратность на 2, 4 и 8 используется только в некоторых играх для GBA.
(Можно поподробнее? Улыбка)
Адрес строки кратен введённому значению. Если 2, то $1C00, $1C02, $1C04... Если 4, то $1C00, $1C04, $1C08
Название: Kruptar
Отправлено: ToledO от 02 Декабрь 2010, 23:17:46
Джинни  а как узнать что в роме есть еще место для перевода?
Вопрос видимо остался незамеченным LOL
Вернемся к нашим баранам - ни хрена у меня все равно не получается!!!!!!! Я уже задолбался!!!!! Не появляется текст!!!!!
Пожалуйста кто - нибудь, если у вас есть время, гляньте на мой проект и скажите, что я делаю не так?
Вот поинтеры:
59A5
A6A6
FFA9
21AA
CBAA
D0AD
94B0

Вот проект:
Название: Kruptar
Отправлено: Oraculum от 03 Декабрь 2010, 04:10:37
1) В ptStringLength нужно 0, а не 1024.
2) Код окончания строки - FF, а не 01.
3) Коды разрыва строки: 00, 01
Название: Kruptar
Отправлено: Джинни от 03 Декабрь 2010, 07:57:29
Джинни  а как узнать что в роме есть еще место для перевода?
Открыть ром и поискать свободное место глазками.
Название: Kruptar
Отправлено: ToledO от 03 Декабрь 2010, 08:56:50
1) В ptStringLength нужно 0, а не 1024.
2) Код окончания строки - FF, а не 01.
3) Коды разрыва строки: 00, 01
Как так? FF ведь здесь стоп-байт, а про то что код разрыва строки может быть не один я не знал.
Джинни  а как узнать что в роме есть еще место для перевода?
Открыть ром и поискать свободное место глазками.
Логично, только как должно выглядеть это место? Я же говорю, после текста там много места с FF, это оно?

Oraculum а у тебя текст появился? Что то все равно не получается.
Название: Kruptar
Отправлено: TrickZter от 03 Декабрь 2010, 09:26:42
а про то что код разрыва строки может быть не один я не знал.
Один из концов строки может быть просто переходом на следующую строку, а другой, например, переводить на новую "страницу". Кстати, концов текста тоже может быть несколько.
Название: Kruptar
Отправлено: ToledO от 03 Декабрь 2010, 09:32:54
Понятно, просто мне казалось,что перенос на новую страницу это и есть окончание строки
Название: Kruptar
Отправлено: Джинни от 03 Декабрь 2010, 10:18:09
Я же говорю, после текста там много места с FF, это оно?
Ну а ты как думаешь?

Но так как игра на NES, ты не сможешь вставить текст в любое свободное место рома. Потому что адресация не позволяет.
Название: Kruptar
Отправлено: Oraculum от 03 Декабрь 2010, 14:14:42
Oraculum а у тебя текст появился?
Да. Правой кнопкой мыши щёлкаешь на список поинтеров (List1) -> "Добавить поинтеры...", начальный адрес вводишь hE519, конечный - hE567.
Название: Kruptar
Отправлено: ToledO от 03 Декабрь 2010, 14:51:27
а откуда ты эти адреса взял?
Название: Kruptar
Отправлено: Джинни от 03 Декабрь 2010, 15:12:04
а откуда ты эти адреса взял?
Не задавай глупых вопросов :)
Название: Kruptar
Отправлено: Oraculum от 03 Декабрь 2010, 16:05:57
а откуда ты эти адреса взял?
По картам нагадал. *F_LOL*
Название: Kruptar
Отправлено: ToledO от 03 Декабрь 2010, 19:07:54
Тьфю ты елки палки!!!!!!!!!!! Я думал в окне надо писать сами поинтеры, а не их адреса.
Всег мозги себе прокомпосировал!
Название: Kruptar
Отправлено: Guyver от 07 Декабрь 2010, 02:50:06
(http://i13.fastpic.ru/big/2010/1207/4e/20a7652276b99f8fc0392b084ad73d4e.jpg)
Название: Kruptar
Отправлено: ToledO от 07 Декабрь 2010, 16:29:26
Надо было лысому косичку Джина пририсовать))))
Название: Kruptar
Отправлено: ToledO от 18 Декабрь 2010, 12:47:05
Народ, я понимаю я вас уже всех достал, но у кого же еще просить помощи по круптару? Вот такие пироги(громко не ругаться - не знаю как делать увеличение картинки при наведении).

http://xmages.net/storage/10/1/0/9/7/upload/5da43c82.png (http://xmages.net/storage/10/1/0/9/7/upload/5da43c82.png)

Что за символы, понять не могу. ессесно при переводе какша какая то выходит, ну не совсем - в каждом слове 1-2 буквы отсутствуют.
Название: Kruptar
Отправлено: Джинни от 18 Декабрь 2010, 12:50:52
Квадратики - это коды разрыва строки. У меня, например, они не отображаются.
И таблицу нужно правильно составлять, не использовать + вместо пробела.
Название: Kruptar
Отправлено: ToledO от 18 Декабрь 2010, 13:00:14
И таблицу нужно правильно составлять, не использовать + вместо пробела.
А какая разница?
И что мне с этими квадратиками делать? я же указал коды разрыва строки.
Название: Kruptar
Отправлено: Джинни от 18 Декабрь 2010, 13:25:10
Ничего не делать, это только отображение.
Название: Kruptar
Отправлено: ToledO от 19 Декабрь 2010, 20:33:59
Ничего не делать, это только отображение.
Однако на результат перевода влияет.
Название: Kruptar
Отправлено: nikita600 от 19 Декабрь 2010, 21:34:49
Однако на результат перевода влияет.
Это как, например?  :)
Название: Kruptar
Отправлено: ToledO от 19 Декабрь 2010, 23:15:55
Ответ #108 : 18 Декабрь 2010, 12:47:05

Ответ #108 : 18 Декабрь 2010, 12:47:05
Название: Kruptar
Отправлено: nikita600 от 19 Декабрь 2010, 23:57:25
Покажи скрин уже запущенной игры что ли, а то лично для меня в круптаре всё правильно :)
Название: Kruptar
Отправлено: Джинни от 20 Декабрь 2010, 07:56:27
Однако на результат перевода влияет.
Влияют другие настройки. И неправильно составленная таблица, возможно.
Название: Kruptar
Отправлено: nikita600 от 20 Декабрь 2010, 09:45:25
Кстати, а что означает значение 0x27?
Оно меня как-то тревожит. Уж больно часто повторяется в тексте :)
Название: Kruptar
Отправлено: TrickZter от 20 Декабрь 2010, 10:10:12
Кстати, а что означает значение 0x27?
Это у тебя надо спрашивать :) В разных играх одни и те же коды выводят разные вещи. Вообще это может быть чем угодно: символом, словом, иконкой персонажа, переносом строки, паузой, изменением цвета текста и т.д. и т.п.
Что это такое можно узнать методом научного тыка - убери его из текста, или наоборот добавь и посмотри, что изменится при выводе текста на экран. Лично я, когда составляю таблицы, обязательно пробую вставлять в текст все 256 кодов  :)
Название: Kruptar
Отправлено: Джинни от 20 Декабрь 2010, 11:24:19
Это у тебя надо спрашивать
А он тут при чём? :) Это у Toledo надо спрашивать. Никита и сам в хакинге разбирается неплохо. :)

Добавлено позже:
Судя по всему, код /27 - это апостроф. :)
Название: Kruptar
Отправлено: ToledO от 20 Декабрь 2010, 18:01:15
Самое интересное это то, что апостроф у меня в таблице под кодом 26.
И после этого, вы дальше буде те утверждать что -

лично для меня в круптаре всё правильно
Название: Kruptar
Отправлено: Джинни от 20 Декабрь 2010, 18:11:41
Раз 27 в между словами I'd, I'll, значит 27 - это код апострофа. Я ещё раз повторяю, что ты неправильно составил таблицу.
Название: Kruptar
Отправлено: ToledO от 20 Декабрь 2010, 19:14:28
Не ну я что слепой по вашему - в таблице черным по белому написано (в обоих таблицах) - 26-'
Ну раз уж ты настаиваешь, проверю их заново. Все равно пока занят другим переводом, а в этом с графикой надо будет помучиться.
Название: Kruptar
Отправлено: Джинни от 21 Декабрь 2010, 07:34:33
Не ну я что слепой по вашему - в таблице черным по белому написано (в обоих таблицах) - 26-'
У тебя в таблице чёрным по белому так написано, потому что её составлял ты (или какой-то другой человек).
Раз ты видишь, что в тексте вместо апострофа стоит код /27, значит это правильный код апострофа.
Название: Kruptar
Отправлено: Джинни от 01 Январь 2011, 16:38:49
В новой версии реализован формат пойнтеров SNES Lo-ROM.
Название: Kruptar
Отправлено: TrickZter от 01 Январь 2011, 16:50:49
SNES Lo-ROM.
Это как? %)
Название: Kruptar
Отправлено: ToledO от 01 Январь 2011, 23:28:40
В новой версии реализован формат пойнтеров SNES Lo-ROM.
Лучше бы новая версия документации была :P
Название: Kruptar
Отправлено: Джинни от 02 Январь 2011, 09:08:22
Это как? Сумасшедший
ROM'ы SNES бывают Lo-ROM и Hi-ROM.
В Lo-ROM пойнтеры вычисляются так:
LoROMptr = $8000 + (file_offset and $7FFF) + (file_offset shr 15) shl 16;
file_offset = LoROMptr.Lo and $7FFF + LoROMptr.Hi shl 15;
LoROMptr.Lo - это младший word пойнтера
LoROMptr.Hi - старший word
Название: Kruptar
Отправлено: TrickZter от 02 Январь 2011, 10:50:32
А не проще было с LongWord сделать?
Название: Kruptar
Отправлено: Джинни от 02 Январь 2011, 12:12:33
А не проще было с LongWord сделать?
Ты о чём? Я просто формулу объясняю.

Если LoROMptr использовать без Lo и Hi, то будет так:
LoROMptr and $7FFF + (LoROMptr shr 16) shl 15;
Что удлиняет её.
Название: Kruptar
Отправлено: TrickZter от 02 Январь 2011, 12:16:21
Об этом:
Цитировать (выделенное)
LoROMptr.Lo - это младший word пойнтера
LoROMptr.Hi - старший word
Я так понял, что поинтеры тут четырёхбайтовые, тогда проще работать с LongWord, чем с Word. Или тут старший и младший Word'ы расположены как-то необычно (в обратном порядке или вообще в разных частях рома)?
Название: Kruptar
Отправлено: Джинни от 02 Январь 2011, 12:22:01
Я так понял, что поинтеры тут четырёхбайтовые, тогда проще работать с LongWord, чем с Word.
Не проще.
Если LoROMptr использовать без Lo и Hi, то будет так:
LoROMptr and $7FFF + (LoROMptr shr 16) shl 15;
Что удлиняет её.
Отдельно:
file_offset = LoROMptr.Lo and $7FFF + LoROMptr.Hi shl 15;
А с LongWord - лишние расчёты:
file_offset = LoROMptr and $7FFF + (LoROMptr shr 16) shl 15;

Расположены в роме часто отдельно.
Название: Kruptar
Отправлено: TrickZter от 02 Январь 2011, 12:37:42
Мда, на одну операцию меньше :)
Только вот не пойму, какую роль играет старший бит младшего Word'а. Судя по формулам, он всегда равен единице.
Название: Kruptar
Отправлено: Джинни от 02 Январь 2011, 12:41:52
Да, всегда единице, такая система.
Название: Kruptar
Отправлено: inside от 08 Ноябрь 2011, 00:06:24
Начали переводить с помощью Kruptar, все супер, но хотелось бы ряд мелочей которые весьма бы облегчили перевод (реально в разы).

Основная проблема - каждый раз нужно контролировать ширину строки. Причем это делается так - переводишь, компилишь (это я так назвал процесс вставки текста в игру и пересчет поинтеров), запускаешь игру и находишь там диалог чтобы проверить не вылезло ли чего.
Тестить в конце-концов то конечно придется все равно, однако чтобы уменьшить количество итераций можно было бы встроить в программу возможность для каждого символа задавать ширину и автоматически считать её для строки. Ну и выводить её около количества символов. Было бы так удобно!

Второе пожелание, которое украсило бы жизнь переводчика - это всем знакомые "метки". Т.е. для каждой строки хотелось бы уметь выставлять "цветовую" метку, при этом слева от номера строки будет показываться квадратик того цвета который был выбран.
Было бы классно отмечать трудные фразы, чтобы можно было бы быстро вернуться к ним (иногда не хочется гробить вечер ради одной фразы, а есть желание закончить большой блок). К тому же такие метки могли бы облегчить работу нескольких переводчиков использующих один проект. Загрузил другой переводчик и сразу видит, где ему ещё работа есть :) В общем область применения большая... Думаю не зря эти метки можно встретить практически везде

Ещё одна идея - кнопка фильтрации "отображать только не переведенные". Нажимаем её - и вуаля - отображаются только те строки на которые ещё не ступала ног... упс, ну думаю понятно о чем я хотел сказать :) Аналогично можно сделать фильтр "по меткам"

И... спасибо за такую замечательную программу Джинни! Может у меня бы хватило терпения вставлять в игру текст полу-автоматическими методами, но это точно бы затянуло перевод на пару лет)
Название: Kruptar
Отправлено: Джинни от 08 Ноябрь 2011, 06:53:23
Основная проблема - каждый раз нужно контролировать ширину строки.
К этому советую привыкнуть.

А всякие метки - это интересно.
Название: Kruptar
Отправлено: inside от 08 Ноябрь 2011, 11:24:11
Цитата: Джинни
К этому советую привыкнуть.
Нууу... есть же блок загрузки таблиц? Таблица ширин по сути аналогичная была бы т.е.
00=0
01=4
...
39=10
3A=8
3B=8
...
FF=0
6 // число без указания байта задает ширину для всех не заданных в таблице символов
...
Ну и подсчет ширины строки - банальный цикл, разве сложно сделать? :) Профит реально ощутимый будет. Ускорение перевода как минимум в 2 раза! Наверное для рядового перевода это не ощутимо, но во всяких РПГ чтобы дойти до определенной фразы - нужно порой постараться. Ведь не все фразы доступны. Конечно save-load помогает, но и его нельзя всегда применить.

ps. Сам программист. Были бы сорцы - допилил (все равно пока супруга переводит хакать особо нечего, заставку разве?). Но кто же мне их даст, мечты... :) Или нет?
Название: Kruptar
Отправлено: Джинни от 08 Ноябрь 2011, 11:35:10
Всё это понятно и ясно. Просто не собираюсь этого делать. :)

Были бы сорцы - допилил (все равно пока супруга переводит хакать особо нечего, заставку разве?). Но кто же мне их даст, мечты... Улыбка Или нет?
Я могу их дать, но они на Delphi.
Название: Kruptar
Отправлено: TrickZter от 08 Ноябрь 2011, 11:53:47
Я могу их дать, но они на Delphi.
И они без комментариев - без вагона водки не разобраться  :D
Название: Kruptar
Отправлено: inside от 08 Ноябрь 2011, 13:12:09
Цитата: Джинни
Я могу их дать, но они на Delphi.
Знаком... хотя признаться Delphi - это самое малоизученное для меня. Отправь пожалуйста на insideone #собака# rambler #точка# ru ... Метки мне тоже попытаться сделать или не стоит так глубоко зарываться? (:

Цитата: TriсkZter
И они без комментариев - без вагона водки не разобраться  :D
Вот к чему не привыкать - так это к коду без комментариев :) Ведь последние полтора года я работаю PHP-программистом
ps. это я не про свой код пишу, 90% приходится сайты допиливать... ну а с каким кодом приходится иметь дело можно посмотреть например на http://govnokod.ru/php  :-|
Название: Kruptar
Отправлено: Ace Lightning от 08 Ноябрь 2011, 13:50:06
Иногда бывает так, что проще всё написать с нуля, чем разобраться в чужом коде :) Это я на себе испытал уже)
Название: Kruptar
Отправлено: JurasskPark от 08 Ноябрь 2011, 15:16:05
Вот к чему не привыкать - так это к коду без комментариев Улыбка Ведь последние полтора года я работаю PHP-программистом
Где ж ты был, когда мы сайт писали? Столько добра пропало зря. >:(
Название: Kruptar
Отправлено: inside от 08 Ноябрь 2011, 15:57:05
Где ж ты был, когда мы сайт писали? Столько добра пропало зря.
LOL Так надо будет - новое напишем, обращайся :)
Название: Kruptar
Отправлено: JurasskPark от 08 Ноябрь 2011, 16:45:09
Ты сделал бы доброе дело, если бы сломал сайт.
Всегда лучше, когда твой сайт ломает добрый человек, который потом скажет, где дырку залатать.
Название: Kruptar
Отправлено: ToledO от 10 Ноябрь 2011, 18:40:37
Можно сломать так, что никакую дыру уже потом и не залатать.
Название: Kruptar
Отправлено: TrickZter от 10 Ноябрь 2011, 18:45:37
Можно сломать так, что никакую дыру уже потом и не залатать.
А бэкапы на что?  :)
Название: Kruptar
Отправлено: JurasskPark от 10 Ноябрь 2011, 19:18:50
Народ, не забывайте одну вещь, что из backup'a хорошо разворачивать то, что 100% неиспорчено.
А если в backup'e уже есть эта проблема, то смысла от него почти нет.

Добавлено позже после небольших раздумий:
Ну и подсчет ширины строки - банальный цикл, разве сложно сделать? Улыбка

Кстати, TriсkZter, ты понял намёк? :)
Название: Kruptar
Отправлено: TrickZter от 10 Ноябрь 2011, 20:12:09
Кстати, TriсkZter, ты понял намёк? :)
А чего тут понимать? Операция действительно элементарнейшая :)
Название: Kruptar
Отправлено: Hatsuyuki от 10 Ноябрь 2011, 23:05:45
Извините, вы длину строки обсуждаете? %)
Название: Kruptar
Отправлено: TrickZter от 10 Ноябрь 2011, 23:49:10
Извините, вы длину строки обсуждаете? %)
Нет, ширину... в пикселях. :)
Название: Kruptar
Отправлено: inside от 10 Ноябрь 2011, 23:52:03
Извините, вы длину строки обсуждаете?
Хочу сделать подсчет ширины (в пикселях) результирующей строки чтобы не проверять каждый раз запуская ром.

Строка -> Заменяем символы по таблице -> Список байтов -> Цикл по байтам -> Найти для каждого байта из массива ширин размер -> Суммируем -> ??? -> Профит

(:

Сложнее все это в интерфейс впихнуть, это окошкодергание ааахххх, WinAPI и то проще, так что не скоро разберусь даже с этим :(
Название: Kruptar
Отправлено: Hatsuyuki от 11 Ноябрь 2011, 02:37:07
Вообще говоря, в типографике это называется "длиной строки" (line length) и измеряется в миллиметрах (пикселях, пунктах).

(http://slovari.yandex.ru/illustrations/milchin/pictures/milch-192-.jpg)

Цитата: http://slovari.yandex.ru/%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BB%D0%B8%D0%BD%D1%8C%D1%8F%D0%B6/%D0%98%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B9%20%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C/%D0%9A%D0%B5%D0%B3%D0%BB%D1%8C%20%28%D0%BA%D0%B5%D0%B3%D0%B5%D0%BB%D1%8C%29/
К шрифтовому оформлению доп. и вспом. текста объемом более 2000 знаков в изданиях группы А СанПиН предъявляют требования, установленные для осн. текста этих изданий. При К. шрифта в них более 10 п. необходимо, чтобы минимальная длина строки была не менее 3 3/4 кв. (68 мм).

Длину строки определяют, измеряя линейкой одну полноформатную строку на каждой из 10 контролируемых страниц. Отклонение длины строки от установленного санитарными правилами допускается не более чем на 10%.

Англоязычные источники (пока) не привожу %)
А мне, кстати, можно исходники Круптара? Сейчас как проведу аудит кода! Вот только Кнута дочитаю 8)
Название: Kruptar
Отправлено: Джинни от 11 Ноябрь 2011, 07:00:02
В программировании длиной строки называют количество символов в ней.
Название: Kruptar
Отправлено: TrickZter от 11 Ноябрь 2011, 08:32:23
Вообще говоря, в типографике это называется "длиной строки" (line length) и измеряется в миллиметрах (пикселях, пунктах).
Казалось бы, причём тут типография?  :D

В программировании это называется шириной строки, про длину тебе Джин уже сказал.
Вот кусок справки из Delphi в качестве доказательства (а то ж не поверишь):

(http://img833.imageshack.us/img833/4880/unled2ema.png)
Название: Kruptar
Отправлено: Hatsuyuki от 11 Ноябрь 2011, 18:05:37
Речь идёт о графическом представлении текста, поэтому уместно использовать термины типографики ::)

Где определена-то "ширина строки"? В справке VCL?

В более-менее теоретизированных работах по программированию вообще графикой не заморачиваются. Прикладуха проклятая :P
Название: Kruptar
Отправлено: TrickZter от 11 Ноябрь 2011, 18:12:19
Речь идёт о графическом представлении текста, поэтому уместно использовать термины типографики ::)
С типографическими терминами иди в другие разделы форума. В программировании (а мы сейчас обсуждаем именно его) это называется шириной. Длиной же называется количество символов в строке.
Где определена-то "ширина строки"? В справке VCL?
В любой нормальной документации по программированию, в том числе и в VCL справке.
Название: Kruptar
Отправлено: Джинни от 12 Ноябрь 2011, 07:03:03
Речь идёт о графическом представлении текста, поэтому уместно использовать термины типографики Строит глазки
Есть у тебя string length - количество символов в строке. И string width - ширина области в пикселях, которую занимает строка. Так что какие тут могут быть термины типографики?
Название: Kruptar
Отправлено: Alex от 13 Ноябрь 2011, 20:31:39
А почему нельзя реализовать выдирание текста тупо по поинтерам? Каждый раз писать плагин, где стоп-байт участвует в кодах игры, - занятие весьма сомнительное...
Название: Kruptar
Отправлено: TrickZter от 13 Ноябрь 2011, 21:32:05
А почему нельзя реализовать выдирание текста тупо по поинтерам? Каждый раз писать плагин, где стоп-байт участвует в кодах игры, - занятие весьма сомнительное...
Что значит "тупо по поинтерам"? Как по-твоему круптар узнает, что строка закончилась? Если конец строки можно однозначно отличить от исполняемого кода, то круптар и так выдерет всё как надо. Если отличить невозможно, то без спецсредств (плагина или специальной проги) не обойтись.

Каждый раз писать плагин, где стоп-байт участвует в кодах игры, - занятие весьма сомнительное...
Где ты этот "каждый раз" видел? Круптар умеет выдирать текст из 99.9% игр без всяких дополнительных плагинов.
Название: Kruptar
Отправлено: Anton от 13 Ноябрь 2011, 22:30:55
Где ты этот "каждый раз" видел?

Из тех проектов, что делал для меня Алекс - это Zelda Ocarina (N64) и Zelda Twilight Princess (GC/Wii).

Вот в твайлайт принцесс, например:
код пиктограммы кнопки,: 1A050000
(стопбайт - 00)

ну и почти во всех кодах "00" есть:
1A0600003702=<$Count_05>
1A06FF000000=<$White>
1A06FF000001=<$Red>
1A06FF000002=<$Green>
1A06FF000003=<$Blue>
1A06FF000004=<$Yellow>
1A06FF000006=<$Purple>
1A06FF000007=<$Silver>

В "Окарине" (стопбайт = 02):
0E02=[fade:02] (один из параметров времени отображения плашки с текстом, если не ошибаюсь)
1302=[icon_3] - пиктограмма одного из предметов при его получении.
1E02=[score_2] - количество очков в одной из мини-игр

Phantom Hourglass (NDS) (стопбайт: 0000):
1A0008FF00000000={Tag 168}
1A0008FF00000100={Tag 169}
(и таких кодов штук 200)


Название: Kruptar
Отправлено: Alex от 13 Ноябрь 2011, 23:56:50
Мне еще ни разу не встречалась игра, где стоп-байт не использовался бы в спец. кодах игры.

Цитировать (выделенное)
Что значит "тупо по поинтерам"? Как по-твоему круптар узнает, что строка закончилась? Если конец строки можно однозначно отличить от исполняемого кода, то круптар и так выдерет всё как надо. Если отличить невозможно, то без спецсредств (плагина или специальной проги) не обойтись.

Так поинтеры для того и нужны, чтобы указывать длину строки. Вот по этой длине текст и выдирать. Считываем первый поинтер и последующий - получаем длину строки, ну и пошло-поехало :)
Название: Kruptar
Отправлено: TrickZter от 14 Ноябрь 2011, 06:10:51
В "Окарине" (стопбайт = 02):
0E02=[fade:02] (один из параметров времени отображения плашки с текстом, если не ошибаюсь)
1302=[icon_3] - пиктограмма одного из предметов при его получении.
1E02=[score_2] - количество очков в одной из мини-игр
И из-за такой ерунды вы писали плагины?  *facepalm* Это никакой не исполняемый код, а обычные спецсимволы. С ними круптар и так умеет корректно работать, надо просто перечислить их в таблице:

0E02=[fade:02]
1302=[icon_3]
1E02=[score_2]

Если так сделать, он не будет считать их стоп-байтами.

В других играх так же можно обойтись составлением нормальной таблицы.
Примерно так:
1A06=<Сolor>
FF000004=<$Yellow>
FF000006=<$Purple>
FF000007=<$Silver>
Если их 200 штук, значит нужно перечислить все 200 - сложного в этом ничего нет.

Так поинтеры для того и нужны, чтобы указывать длину строки. Вот по этой длине текст и выдирать. Считываем первый поинтер и последующий - получаем длину строки, ну и пошло-поехало :)
Поинтеры нужны для определения начала строки, определять конец по ним зачастую невозможно.
Во-первых, на одну и ту же строку может ссылаться несколько поинтеров.
Во-вторых, между строк может располагаться исполняемый код (а не то, что вы тут написали), на который тоже есть свои поинтеры.
В-третьих, как ты узнаешь где кончается последняя строка?
Название: Kruptar
Отправлено: Джинни от 14 Ноябрь 2011, 07:44:26
Так поинтеры для того и нужны, чтобы указывать длину строки
Пойнтеры нужны для того, чтобы указывать на то, где строка находится. Длину строки обычно не указывают, а если указывают, то отдельным значением рядом со строкой или рядом с пойнтером.
Вот по этой длине текст и выдирать. Считываем первый поинтер и последующий - получаем длину строки, ну и пошло-поехало Улыбка
Пойнтеры очень часто не идут по порядку. Редко можно вычислить длину строки таким образом.

Добавлено позже после небольших раздумий:
С ними круптар и так умеет корректно работать, надо просто перечислить их в таблице:

0E02=[fade:02]
1302=[icon_3]
1E02=[score_2]

Если так сделать, он не будет считать их стоп-байтами.

В других играх так же можно обойтись составлением нормальной таблицы.
Примерно так:
1A06=<Сolor>
FF000004=<$Yellow>
FF000006=<$Purple>
FF000007=<$Silver>
Когда стандартные плагины круптара встречают стопбайт, считывание останавливается, даже если этот байт находится в одном из контрольных кодов.
Вы не можете написать универсальный плагин, который будет понимать, где надо останавливаться, а где не надо, потому что таблица не передаётся плагину как параметр. А если бы передавалась, нужно было бы каждый код проверять при извлечении. В круптаре извлечение идёт отдельно, быстрым циклом плагина, а декодирование по таблице - отдельно, внутри программы.
Название: Kruptar
Отправлено: TrickZter от 14 Ноябрь 2011, 07:59:53
В круптаре извлечение идёт отдельно, быстрым циклом плагина, а декодирование по таблице - отдельно, внутри программы.
Понятно, значит такая фишка не прокатит.  *F_DISAPPOINTED*

Я в своих программах делаю иначе: полностью гружу файл в оперативку, после чего декодирую код в текст. Конец строки ищет сама декодирующая функция.
Название: Kruptar
Отправлено: Джинни от 14 Ноябрь 2011, 08:03:13
Просто плагины в круптаре предназначены именно для извлечения/декомпрессии строк, чтобы потом их можно было декодировать любой таблицей в самой программе.
Название: Kruptar
Отправлено: TrickZter от 14 Ноябрь 2011, 08:13:14
Просто плагины в круптаре предназначены именно для извлечения/декомпрессии строк, чтобы потом их можно было декодировать любой таблицей в самой программе.
Понятно. А можно сделать плагин с настраиваемым списком исключений? Чтобы он пропускал стоп-байты, которые являются частью комбинаций, входящих в чёрный список? Такой плагин на корню решил бы проблему.
Название: Kruptar
Отправлено: Джинни от 14 Ноябрь 2011, 08:19:05
Можно написать плагин, который будет загружать параметры из отдельного файла настроек.
Название: Kruptar
Отправлено: HoRRoR_X от 26 Февраль 2012, 23:33:18
Джинни, можешь рассказать, как правильно парсить kdt-файл в проекте Kruptar 7 с учётом ранних версий?
Пишу кое-какой инструментарий в качестве диплома, хочу добавить возможности экспорта/импорта. :)
Название: Kruptar
Отправлено: Джинни от 27 Февраль 2012, 09:41:02
8 байт: подпись; // 'KRUPTAR7'
x байт: имя исходного рома;  // строка в особом формате
x байт: имя изменяемого рома; // строка в особом формате
4 байта:
     Значение первых двух бит:
     (0: ANSI кодировка windows по умолчанию;
      1: кодировка UTF-16;
      2: кодировка SHIFT_JIS;
      3: настоящая кодировка указана в следующих 16 битах значения);
Если бит номер 24 значения равен 1, то:
4 байта: флаги проекта; // описание флагов позже

Иначе:
флаги = 0

4 байта: количество таблиц;

Цикл считывания таблиц:
{
 x байт: имя таблицы; // строка в особом формате (в кодировке UTF-8, если в комментарии к архиву DOS_FNames = false)
 Загрузка таблицы;
}

4 байта: количество групп;

Цикл считывания групп:
{
 x байт: имя группы; // строка в особом формате (в кодировке UTF-8, если в комментарии к архиву DOSFNames = false)
     загрузка txt файла группы в память;
 x байт: имя плагина; // строка в особом формате
 4 байта: если не ноль, то:
 {
  4 байта: максимальный размер слова;
  4 байта: номер таблицы;
  4 байта: (0: little endian; иначе: big endian);
  4 байта: начало отсчёта для кодов таблицы словаря;
  4 байта: размер кода таблицы словаря;
  4 байта: длина строки;
  x байт: строка с первыми байтами, с которых будет начинаться код таблицы словаря;
 }

 4 байта: количество диапазонов для вставки текста;
 массив диапазонов:
 {
  4 байта: начальный адрес;
  4 байта: количество байт;
 }
 
 4 байта: количество списков;
 Цикл считывания списков:
 {
  x байт: имя списка; // уникодовая строка в особом формате
  4 байта: номер таблицы для декодирования текста;
  4 байта: номер таблицы для кодирования текста;
  4 байта: номер группы словаря;
  4 байта: последняя выбранная строка для отображения в программе;
  4 байта: ptStringLength;
  4 байта: ptReference;
  4 байта: ptPointerSize;
  4 байта: ptAlignment (для выравнивания строк при вставке);
  4 байта: ptCharSize (1: обычная строка: 2: уникодо-подобная);
  4 байта: ptInterval;
  4 байта: ptShiftLeft (для сдвига значений пойнтеров);
  4 байта:
  Если бит 31 равен нулю, то:
  {
    бит 0: endian (little/big);
    4 байта: ptAutoPtrStart (0: ничего; 1: ptReference равен адресу каждого из пойнтеров);
    4 байта: ptSplittedPtrs (0: ничего; 1: байты пойнтера находятся в разных местах);
    4 байта: ptAutoStart (0: ничего; 1: ptReference равен адресу таблицы пойнтеров);
  }
  Иначе:
  {
   бит 0: endian (little/big);
   бит 1: ptAutoPtrStart;
   бит 2: ptSplittedPtrs;
   бит 3: ptAutoStart;
   бит 4: ptPtrToPtr (указатель на указатель);
   бит 5: ptSeekSame (поиск одинаковых строк при вставке);
   бит 6: ptNotInSource (строка не извлекается);
   бит 7: загрузка дополнительных значений для вставки;
   {
    4 байта: ptDestReference;
    4 байта: ptDestPointerSize;
    4 байта: ptDestStringLength;
    4 байта: ptDestAlignment;
    4 байта: ptDestCharSize;
    4 байта: ptDestAutoPtrStart;
    4 байта:
    {
     бит 0: ptDestSplittedPtrs;
     бит 1: ptDestSnesLoRom;
    }
   }
   бит 8: ptSnesLoRom;
  }
 
  4 байта: количество "околопойнтерных переменных";
  4 байта: количество байт перед пойнтером;
  4 байта: количество занимаемых байт после пойнтера;
  4 байта: количество занимаемых байт перед пойнтером;
  Цикл чтения информации о переменных:
  {
   x байт: имя переменной; // строка в особом формате
   4 байта: (0: после пойнтера; 1: перед пойнтером)
   4 байта: тип переменной (0: Byte; 1: Word; 2: ShortInt; 3: SmallInt; 4: LongInt);
   4 байта: флаги (бит 0: endian (little/big); бит 1: переменная содержит длину строки);   
  }

  4 байта: количество пойнтеров в списке
  Цикл считывания пойнтеров и строк:
  {
   4 байта: значение пойнтера
   4 байта: pnPtrPos
   4 байта: pnReference
   4 байта:
   {
    бит 0: pnFixed (0: ничего; 1: пойнтер не изменяется)
    Если бит 31 равен 1:
    {
     4 байта: pnDestPtrPos
     4 байта: pnDestReference
    }
    Иначе:
    {
     pnDestPtrPos = pnPtrPos
     pnDestReference = pnReference
    }
   }
   4 байта: номер таблицы для декодирования строки
   4 байта: номер таблицы для кодирования строки
   4 байта: длина блока значений переменных
   x байт: значения "околопойнтерных переменных"

   4 байта: количество строковых элементов в текстовом файле
   Загрузка оригинальной строки (строк) из рома с помощью плагина;
   Загрузка изменённой строки (строк) из буфера с текстом.
  }
 } // конец считывания списка
} // конец считывания группы
------------------------------------------------------

Описание строки в особом формате:
1 байт:
если равен единице, то:

4 байта: длина строки
x байт: строка

иначе:
x байт: строка включая первый байт до нуля
------------------------------------------------------

Описание уникодовой строки в особом формате:
2 байта:
если равно единице, то:

4 байта: длина строки
x байт: строка в формате UTF-8

иначе:
x байт: строка включая первые два байт в формате UTF-16 до нуля
------------------------------------------------------

Флаги проекта
бит 0: не показывать в тексте первый в списке CRLF-код
бит 1: не учитывать код окончания строки при создании таблицы словаря
Название: Kruptar
Отправлено: JurasskPark от 27 Февраль 2012, 10:25:07
Почему никто не использует тэг код?
Название: Kruptar
Отправлено: Джинни от 27 Февраль 2012, 10:53:24
Это не код.
Название: Kruptar
Отправлено: HoRRoR_X от 27 Февраль 2012, 12:01:11
Спасибо большое! :)
Название: Kruptar
Отправлено: Джинни от 27 Февраль 2012, 12:07:15
Не за что :)
Название: Kruptar
Отправлено: JurasskPark от 27 Февраль 2012, 17:43:46
Это не код.
Зато листать меньше и скопировать текст удобнее.  :P
Название: Kruptar
Отправлено: Oraculum от 27 Февраль 2012, 18:38:34
Зато листать меньше и скопировать текст удобнее.  :P
Неудобно, хочется как-то на весь экран это растянуть.
Название: Kruptar
Отправлено: JurasskPark от 27 Февраль 2012, 19:16:46
Неудобно, хочется как-то на весь экран это растянуть.
Тогда не используй код. Делов-то.
Название: Kruptar
Отправлено: Oraculum от 27 Февраль 2012, 19:36:37
Тогда не используй код. Делов-то.
Для большого количества некодового текста неудобно, я про это.
Название: Kruptar
Отправлено: JurasskPark от 27 Февраль 2012, 20:02:25
Ещё раз, но по-русски, пожалуйста. Ничего не понял, что ты сказал.
Название: Kruptar
Отправлено: Oraculum от 27 Февраль 2012, 20:13:39
Я имею в виду то, что сообщение Джинна с использованием тега "код" читать неудобно, так как там не код, а текст, и + его много.
Название: Kruptar
Отправлено: Anton от 16 Март 2012, 20:54:47
Так и не вернул ты нумерацию строк человеческую в обновленном  круптаре, Джин...
Ну неужели это так трудно сделать? Дико неудобно без нумерации. Что за нелюбовь к удобному интерфейсу?
Храню у себя версию 7.0.0.85, как реликвию, блин...



Название: Kruptar
Отправлено: JurasskPark от 16 Март 2012, 21:44:17
У нас был поэтому поводу разговор. Я бы написал то, что Джинни про эту нумерацию строк думает, но думаю обидется.  >:D
Название: Kruptar
Отправлено: Джинни от 17 Март 2012, 06:52:25
Да не будет нумерации, сколько можно повторять?:)
Название: Kruptar
Отправлено: Anton от 17 Март 2012, 11:27:22
Я просто причины не могу понять, почему этого нельзя сделать, а также твоего упорства по этому поводу.
Это что, технически трудно?
Тем более ты как-то говорил, что возможно "такой интерфейс когда-нибудь и вернется".

Название: Kruptar
Отправлено: Джинни от 17 Март 2012, 11:59:43
Нет, это не трудно. Просто мне не до него. Если я обновляю что-то, то обновляю вещи, которые считаю более приоритетными. )))
Название: Kruptar
Отправлено: Guyver от 19 Март 2012, 04:01:29
А я у себя храню как реликвию версию с "синэдитом". И ничего - не жалуюсь ;о)))))))))))))))))))))))))))))
Название: Kruptar
Отправлено: Voodoo от 27 Июль 2012, 02:32:10
Помогите пожалуйста восстановить файл. Нажал сохранение и через сек.5 задел питание в ноуте. И файл почему-то за 5сек. не успел сохранится...
В общем я через рекавери нашел файл, какой был перед записью, но он не хочет загружаться, пишет Файл "Титры.txt" не найден в файле проекта. Через винрар когда открываю файл, все файлы проекта не повреждены, и проверкой архива тоже ошибок нету. Хз что делать... практически весь текст вставил уже...
Название: Kruptar
Отправлено: Oraculum от 27 Июль 2012, 02:50:57
Повод сделать проект заново, делая списки вместо групп и нормально переводя. :D
Название: Kruptar
Отправлено: Voodoo от 27 Июль 2012, 02:55:04
Я вот только-что сам все восстановил хекс редактором. Всем спасибо : ) Я уже так доделаю как есть, и так много времени на все уходит..
Если можно удалите пожалуйста вложение что выше.

[Дата добавления: 27 Июль 2012, 18:35:53]
Если у меня в таблице идут буквы
FA00=
FB00=
FC00=
FD00=
FE00= 
FF00= 
То потом каким кодом удут символы?
Название: Kruptar
Отправлено: Oraculum от 27 Июль 2012, 22:49:08
То потом каким кодом удут символы?
Зачем нужно, чтобы они дальше шли?
Название: Kruptar
Отправлено: Voodoo от 28 Июль 2012, 00:58:33
В шрифте идут японские символы, вместо них я написал кое какие слова, какие нужно заменить на то, что не влазит нормально в строку.

[Дата добавления: 28 Июль 2012, 18:21:24]
Это в крупаторе сортировка не работает, или оно что-то другое должно сортировать?
Название: Kruptar
Отправлено: Guyver от 02 Август 2012, 17:25:54
Джинни, а можно в крупыче относительные поинтеры подключать? Просвяти как. Поинтеры двухбайтные, пример из рома:
/28/22ФРАЗА1/FE     /44/22ФРАЗА2/FE     /A5/22ФРАЗА3/FE
Название: Kruptar
Отправлено: Oraculum от 02 Август 2012, 17:52:15
Джинни, а можно в крупыче относительные поинтеры подключать? Просвяти как. Поинтеры двухбайтные, пример из рома:
/28/22ФРАЗА1/FE     /44/22ФРАЗА2/FE     /A5/22ФРАЗА3/FE
Хоть я и не Джинни. Если ты имеешь в виду поинтеры, которые отсчитывают адрес от себя, то есть свойство ptAutoPtrStart, если имеешь в виду что-то другое, поясни.
Название: Kruptar
Отправлено: Guyver от 02 Август 2012, 18:02:54
Адрес отсчитывается от самой первой буквы первого слова в блоке с текстом...
Название: Kruptar
Отправлено: Oraculum от 02 Август 2012, 18:18:23
Адрес отсчитывается от самой первой буквы первого слова в блоке с текстом...
Ну так в ptReference написать число, которое является (адрес "самой первой буквы первого слова в блоке с текстом") минус (значение поинтера).
Название: Kruptar
Отправлено: Джинни от 03 Август 2012, 06:39:47
Джинни, а можно в крупыче относительные поинтеры подключать? Просвяти как. Поинтеры двухбайтные, пример из рома:
/28/22ФРАЗА1/FE     /44/22ФРАЗА2/FE     /A5/22ФРАЗА3/FE
Относительные пойнтеры можно было подключать с самой первой версии программы. Что точно ты имеешь в виду, мне неизвестно. Пример непонятный.
Название: Kruptar
Отправлено: Voodoo от 09 Август 2012, 01:50:58
Вот что мне не нравится в крупаторе и удлиняет работу, и думаю другим тоже, может Джинни возмет на заметку :
1. Нельзя выделить все вместе в списке и удалить не нужные поинтеры, а не клацать по одном.
2. Тоже самое нельзя сделать в правой стороне, нельзя удалить быстро выбранные места (там вообще нельзя удалить).
3. При переключении окон с открытыми проектами, проект свертывается, и нужно все время раскрывать и заново ити в нужное место (или искать).
4. Нельзя сразу в листе с поинтерам поменять таблицу всем значениям, нужно клацать пол часа по значению и заменять таблицу.
5. Нельзя просто продублировать группу, или перетащить с одного места в другое.

[Дата добавления: 09 Август 2012, 01:54:28]
И еще слабо видно выделенный объект, былоб неплохо поменять цвет, чтоб бросался в глаза, а то приходится приглядоватся.
Название: Kruptar
Отправлено: Джинни от 09 Август 2012, 07:26:38
И еще слабо видно выделенный объект, былоб неплохо поменять цвет, чтоб бросался в глаза, а то приходится приглядоватся.
Цвет выделения меняется в свойствах оформления windows.
Название: Kruptar
Отправлено: Voodoo от 12 Август 2012, 22:07:42
не туда написал.. удалите пожалуйста..
Название: Kruptar
Отправлено: Dr. MefistO от 09 Январь 2013, 23:27:18
Почти первый раз работаю с круптаром.
1) Написал плагин для расжатия текстовых строк и перекодировки, подключил.
2) Строки разбросаны по всему рому (SMD). Поэтому о таблице указателей говорить не приходится. Адрес строки передается в регистр напрямую. Поэтому пока поставил все по нулям;
3) Как теперь добавить данную строку в проект?
Название: Kruptar
Отправлено: Oraculum от 09 Январь 2013, 23:47:55
Почти первый раз работаю с круптаром.
1) Написал плагин для расжатия текстовых строк и перекодировки, подключил.
2) Строки разбросаны по всему рому (SMD). Поэтому о таблице указателей говорить не приходится. Адрес строки передается в регистр напрямую. Поэтому пока поставил все по нулям;
3) Как теперь добавить данную строку в проект?
Что мешает переконвертировать в BIN и работать с нормальным ромом?
Название: Kruptar
Отправлено: Dr. MefistO от 09 Январь 2013, 23:50:41
Я с ним и работаю. Но строки пожаты.
Название: Kruptar
Отправлено: Oraculum от 10 Январь 2013, 00:04:17
Я с ним и работаю. Но строки пожаты.
Не в один же блок сжаты. Добавляешь поинтеры по отдельности, удобнее всего загружать список поинтеров из файла (правой кнопкой на List).
Название: Kruptar
Отправлено: Dr. MefistO от 10 Январь 2013, 00:05:06
Ууу... А я про что?) Вопрос мой прочитай: как добавить отдельно строку (поинтер)? Если можно - в картинках.
Название: Kruptar
Отправлено: Oraculum от 10 Январь 2013, 00:10:14
Ууу... А я про что?) Вопрос мой прочитай: как добавить отдельно строку (поинтер)? Если можно - в картинках.
Написал непонятно - сам виноват. :P
(http://s019.radikal.ru/i626/1301/d9/975b75870bc9.png)
Название: Kruptar
Отправлено: Dr. MefistO от 10 Январь 2013, 00:12:29
Oraculum,  >:D  Какие поинтеры? Какие адреса указывать? Какие параметры на группу и т.д.? Конкретики, плиз.
Название: Kruptar
Отправлено: Джинни от 10 Январь 2013, 03:48:15
Oraculum,  >:D  Какие поинтеры? Какие адреса указывать? Какие параметры на группу и т.д.? Конкретики, плиз.
Пойнтеры найди сначала все в роме, сформируй их список в текстовом файле, потом используй в круптаре.
Параметры:
ptPointerSize = 4 вероятнее всего
ptBIG_ENDIAN = true
Название: Kruptar
Отправлено: Dr. MefistO от 10 Январь 2013, 12:39:32
А указатель, получается, будет на то место, где он передается в регистр?


Я пытаюсь добавить диапазон поинтеров тех, которые есть в одной таблице. Жму
1) Добавить поинтеры в созданной группе. Вылезает окошко начального и конечного адреса. Пытаюсь вводить в хексе - пишет, что неправильное десятичное значение. Пытаюсь в дек - вылетает.
Название: Kruptar
Отправлено: Oraculum от 10 Январь 2013, 13:06:27
А указатель, получается, будет на то место, где он передается в регистр?
Указатель будет на строку (=адресу строки), в хекс-редакторе код глянешь и увидишь свои указатели. Запишешь адреса всех указателей в файл и загрузишь в Круптар.
ptPointerSize = 4 вероятнее всего
ptBIG_ENDIAN = true
Добавлю:
ptPointerSize = 2
ptBIG_ENDIAN = true
ptAutoReference = true
Название: Kruptar
Отправлено: Dr. MefistO от 10 Январь 2013, 13:14:50

Это для тех, что не табличные ты мне говоришь, но они все равно четырехбайтные на сеге. Почему двухбайтные ты мне говоришь?


А если есть указатели, которые сгруппированы в таблицу, какие параметры надо?
Название: Kruptar
Отправлено: Dr. MefistO от 10 Январь 2013, 13:25:38
Вопросов больше нет.( Я вроде написал, что работаю считай первый раз в круптаре, а вы мне пишете, как уже умеющему работать. Отсутствие справки и старая статья знаний не прибавляют.
Название: Kruptar
Отправлено: Oraculum от 10 Январь 2013, 13:45:28
Вопросов больше нет.( Я вроде написал, что работаю считай первый раз в круптаре, а вы мне пишете, как уже умеющему работать. Отсутствие справки и старая статья знаний не прибавляют.
Да писать надо понятно, что тебе конкретно надо, блин.
Почему двухбайтные ты мне говоришь?
Бывают 4-байтные, бывают 2-байтые.
Смотрю, ты к сообщению ещё добавил.
Я пытаюсь добавить диапазон поинтеров тех, которые есть в одной таблице. Жму
1) Добавить поинтеры в созданной группе. Вылезает окошко начального и конечного адреса. Пытаюсь вводить в хексе - пишет, что неправильное десятичное значение. Пытаюсь в дек - вылетает.
Если пишешь в хексе, то вроде надо h на конце (позже попр.). Вводить адреса первого и последнего поинтеров.
Название: Kruptar
Отправлено: Dr. MefistO от 10 Январь 2013, 13:51:08
Пробовал - то же самое пишет.
Ты мы мог бы по удаленному доступу показать - я все поясню. Войди в аську, там поговорим. Ок?
Название: Kruptar
Отправлено: Джинни от 10 Январь 2013, 14:17:10
h вначале надо писать
Название: Kruptar
Отправлено: Dr. MefistO от 10 Январь 2013, 14:23:02
Разобрался как отлаживать. Но от ошибки избавиться не могу. Почему-то вылетает даже на шаблонном куске кода из плагина NULL. Вот здесь:
 With Result^.Add^ do
 begin
  P := Addr(ROM^[X]);


В общем, выяснил, что летит при получении байта из потока в функции Function GetStrings(X, Sz: Integer): PTextStrings; stdcall;:
B := ROM^[X]; //B - Byte


(http://rghost.ru/42886485/image.png)


Отладчик, в данном месте при наведении на ROM^[X] показывает находящийся там байт, но присвоение не происходит - идет вылет.
Название: Kruptar
Отправлено: Джинни от 10 Январь 2013, 15:32:45
Вылетает, потому что параметры пойнтеров неправильные указаны и сами пойнтеры.
Название: Kruptar
Отправлено: Dr. MefistO от 10 Январь 2013, 15:33:50
Исправил предыдущий пост, почитай.
Название: Kruptar
Отправлено: Джинни от 10 Январь 2013, 15:37:26
Потому что пытается читать за пределами рома, так как параметры пойнтеров указаны неверно. А это место не выделено в памяти.
Название: Kruptar
Отправлено: Dr. MefistO от 10 Январь 2013, 15:38:02
(http://rghost.ru/42886653/image.png)


На скрине в X - как раз смещение начала текста - оно считано по поинтеру. Размер тоже правильный - однобайтный. Так что я не знаю, что не так.


В роме именно этот байт по этому смещению и лежит:
(http://rghost.ru/42886723/image.png)


За пределами рома оно не может читать, т.к. есть проверка в плагине. Писано не мной ведь)
If (X >= RomSize) or (X < 0) then Exit;

[Дата добавления: 10 Январь 2013, 19:11:10]
Дело было в размере массива ROM. Там макс ширина стояла WORD. Я растянул до 1MB.
Название: Kruptar
Отправлено: Mefistotel от 11 Январь 2013, 12:12:21
В аське меня найди 475891500.
Объясню всякие мелочи, типа менюшечек и общих принципов работы в Круптаре.
Спрашивать на форуме всё подряд не стоит. ;)
Название: Kruptar
Отправлено: gegmopo3 от 31 Январь 2013, 20:10:46
Кстати, тут вспомнил кое-что)
Если обрывание строки у нас $D3.
Есть Мте( или прочее) E5D3 = 'blablabla'
То он строку обрывает после этого мте, и не показывает дальше текст после E5D3
Название: Kruptar
Отправлено: Джинни от 02 Февраль 2013, 05:27:06
Это да. В таких случаях свой плагин нужен.
Название: Kruptar
Отправлено: vitecd от 21 Июнь 2013, 13:36:19
у меня такая проблема..... поинтеры ссылаются на поинтеры, а уже они на текст. и такая же беда с графикой, какой программой можно так же красиво, как круптаром, графику "каталогизировать" ))) ?


00000000  01 02 03 40 ...
...
01020340  22 33 44 50 10 .... тут 10 это длинна в символах
...
22334450  A B C E X Y T % F D 00


можно ли круптаром "достать" текст из таких "двухуровневых" поинтеров?
Название: Kruptar
Отправлено: Джинни от 21 Июнь 2013, 14:19:44
Если пойнтеры такого же формата, как те, которые на них ссылаются, то в круптаре есть свойство ptPtr2ptr.
Название: Kruptar
Отправлено: vitecd от 21 Июнь 2013, 17:06:55
и первый и второй поинтеры Long, т.е. 4 байта. но рядом со вторыми, которые непосредственно на текст указывают, есть длинна строки. пошел пробовать
Название: Kruptar
Отправлено: vitecd от 07 Июль 2013, 18:25:40
а что можно сделать во избежание

Test des fonctions
sous contr?le/00
{END}

/00/00
{END}

/00/00
{END}


/00/00
{END}

/00Checking control
functions/00
{END}

/00/00
{END}

/00Selbsttest
laufend/00
{END}


больше всего, мне не нравится

/00Checking control
functions/00

т.е. Kruptar очень сильно любит нечетные адреса начала строки. и "рубит" строку по первому же 00 00, очень хотелось бы... чтобы сам текст был до первого 00 00, а длинна строки соответствовала последнему, т.е. до начала следующей


[Дата добавления: 07 Июль 2013, 18:30:30]
собственно, сам дамп


54 00 65 00 73 00 74 00 20 00 64 00 65 00 73 00
20 00 66 00 6F 00 6E 00 63 00 74 00 69 00 6F 00
6E 00 73 00 0D 00 73 00 6F 00 75 00 73 00 20 00
63 00 6F 00 6E 00 74 00 72 00 F4 00 6C 00 65 00
00 00 00 00 00 00 00 00 43 00 68 00 65 00 63 00
6B 00 69 00 6E 00 67 00 20 00 63 00 6F 00 6E 00
74 00 72 00 6F 00 6C 00 0D 00 66 00 75 00 6E 00
63 00 74 00 69 00 6F 00 6E 00 73 00 00 00 00 00
53 00 65 00 6C 00 62 00 73 00 74 00 74 00 65 00
73 00 74 00 0D 00 6C 00 61 00 75 00 66 00 65 00
6E 00 64 00 00 00 00 00


[Дата добавления: 08 Июль 2013, 00:55:05]
можно узнать, что значат эти параметры, начиная с 3его
Название: Kruptar
Отправлено: Oraculum от 26 Октябрь 2013, 15:42:28
При компиляции любого плагина в Delphi XE2 в Круптаре часто выскакивает "Invalid pointer operation".
Из Needs.pas:
Код: Delphi [Выделить]

destructor TTextStrings.Done;
var
 N: PTextString;
begin
 while Root <> NIL do
 begin
  N := Root^.Next;
  Root^.Str := '';
  Dispose(Root);
  Root := N;
 end;
 Count := 0;
 Cur := NIL;
end;

Поменял из интереса "Root <> NIL" на "Root^.Next <> NIL", ошибка не выскакивает, но, естественно, утекает память.
Почему так?  *SCRATCH*
Название: Kruptar
Отправлено: Hatsuyuki от 26 Октябрь 2013, 16:33:31
Тут не про эту ситуацию?
Цитата: http://delphi.about.com/od/objectpascalide/l/aa103003b.htm
The "Invalid pointer operation" exception only occurs when a module attempts to free the last allocated block of another module's free list, and, failing to recognize an invalid element, attempts to merge the free block with (what seems to be) a marker element (or might simply be garbage), which causes the error.
Название: Kruptar
Отправлено: greengh0st от 26 Октябрь 2013, 16:45:13
Сложности с написанием плагина? Блин я бы помог если бы хоть немного шарил((
Название: Kruptar
Отправлено: Hatsuyuki от 26 Октябрь 2013, 16:55:34
Может, ещё это поможет:
Цитата: http://edn.embarcadero.com/article/33416#28ChangedBehaviour
From the above notes it should be clear that the new memory manager is less tolerant of heap corruption bugs caused by the application. The upside to this is that this should make it easier to catch bugs during the development cycle. The downside being that it could make life more frustrating for customers having to use an application containing such bugs.

The old memory manager that was used by Delphi 2005 (and earlier Delphi versions) is available on CodeCentral in the form of a replacement memory manager module. This module may be useful in comparing the performance of the old and new memory managers, and can also be used in cases where the behaviour of the old memory manager is desired above the behavior of the new one.
Можно старый менеджер памяти попробовать, если не хочется возиться с поиском возможного бага ::)

Сложности с написанием плагина? Блин я бы помог если бы хоть немного шарил((
После более внимательного прочтения поста Оракулума мне кажется, что сложности с миграцией на новую версию ;)
Название: Kruptar
Отправлено: Oraculum от 26 Октябрь 2013, 17:26:36
From the above notes it should be clear that the new memory manager is less tolerant of heap corruption bugs caused by the application.
Склоняюсь более к этому, т.к.
Поменял из интереса "Root <> NIL" на "Root^.Next <> NIL", ошибка не выскакивает, но, естественно, утекает память.

Можно старый менеджер памяти попробовать, если не хочется возиться с поиском возможного бага ::)
Не хочу возиться с пробованием старого менеджера. :D

[Дата добавления: 26 Октябрь 2013, 17:38:16]
Дружно проверяем код на возможные ошибки :) :
Код: Delphi [Выделить]
PTextStrings = ^TTextStrings;
 TTextStrings = object
  Root, Cur: PTextString;
  Count: LongInt;
  constructor Init;
  function Add: PTextString;
  function Get(I: LongInt): PTextString;
  destructor Done;
 end;

constructor TTextStrings.Init;
begin
 Root := NIL;
 Cur := NIL;
 Count := 0;
end;

function TTextStrings.Add: PTextString;
begin
 New(Result);
 If Root = NIL then Root := Result Else Cur^.Next := Result;
 Cur := Result;
 Inc(Count);
 Result^.Str := '';
 Result^.Next := NIL;
end;

destructor TTextStrings.Done;
var
 N: PTextString;
begin
 while Root <> NIL do
 begin
  N := Root^.Next;
  Root^.Str := '';
  Dispose(Root);
  Root := N;
 end;
 Count := 0;
 Cur := NIL;
end;
Название: Kruptar
Отправлено: Hatsuyuki от 26 Октябрь 2013, 17:40:25
После ещё более внимательного чтения понял, что дело, похоже, не в коде Оракулума :-[
любого плагина
И сам Круптар, и стандартные плагины написаны Джинни. Тугодум я ;D

[Дата добавления: 26 Октябрь 2013, 17:42:21]
Дружно проверяем код на возможные ошибки
А ошибка точно локализована там? Может, она в исходниках Круптара, которые всем подряд не дают :P
Название: Kruptar
Отправлено: Oraculum от 26 Октябрь 2013, 18:01:06
Дружно проверяем код на возможные ошибки
А ошибка точно локализована там? Может, она в исходниках Круптара, которые всем подряд не дают :P
Я и не писал, что она там. Я написал: "Дружно проверяем код на возможные ошибки".
Название: Kruptar
Отправлено: greengh0st от 26 Октябрь 2013, 18:36:58
И чего, чего, чего готов!!!!))))????
Название: Kruptar
Отправлено: German от 26 Октябрь 2013, 19:33:09
Просмотрел. Ошибок в синтаксисе не нашёл. Так что ошибка наверное где-то в логике, но я не вижу  :)
Название: Kruptar
Отправлено: Hatsuyuki от 26 Октябрь 2013, 22:18:14
Может, проблема в том, что делается Dispose конечного элемента в тот момент, когда на него ещё указывает Cur? Может, так делать запретили, чтобы было меньше ошибок?
Название: Kruptar
Отправлено: Oraculum от 26 Октябрь 2013, 22:30:54
Может, проблема в том, что делается Dispose конечного элемента в тот момент, когда на него ещё указывает Cur? Может, так делать запретили, чтобы было меньше ошибок?
Не помогло.

Качаю Delphi 7. *F_SMOKE*
Название: Kruptar
Отправлено: Hatsuyuki от 27 Октябрь 2013, 00:54:29
Жаль, что не помогло. Больше в приведённом коде ничего усмотреть не могу. Да и не мог Джинни накосячить в таком простом месте, наверное. А ты и Круптар пересобирал в новой версии или только плагины? :)
Название: Kruptar
Отправлено: Oraculum от 27 Октябрь 2013, 13:34:35
А ты и Круптар пересобирал в новой версии или только плагины? :)
Исходников Круптара у меня нет. Только плагин NULL и переписанный мной под FM3 плагин NULL.
Название: Kruptar
Отправлено: Hatsuyuki от 27 Октябрь 2013, 15:51:04
А библиотеки, собранные в новых версиях, часто совместимы с приложениями, собранными в старых? Я с такими ситуациями не сталкивался, поэтому интересно узнать на будущее :)

Думал, что это Трикстер согласился с ФМ3 помочь. Всё оказалось гораздо проще. Закабалили нас ;D
Название: Kruptar
Отправлено: greengh0st от 27 Октябрь 2013, 23:51:14
Не он вроде не умеет писать плагины. Хотя я могу сильно ошибаться, но он редко появляется, а какой хакер)))
Название: Kruptar
Отправлено: Джинни от 28 Октябрь 2013, 09:57:46
Лучше взять старый менеджер памяти, я думаю.
Название: Kruptar
Отправлено: Hatsuyuki от 28 Октябрь 2013, 15:33:28
Не он вроде не умеет писать плагины. Хотя я могу сильно ошибаться, но он редко появляется, а какой хакер)))
Ну, библиотеку на Delphi Трикстер в состоянии написать, полагаю. Именно Круптар он, может, и не разбирал :)

Джинни, очень удачно в Круптаре используется моноширинный шрифт. Сейчас выравниваю пробелами и не надо каждый скрин проверять. Сам бы, наверное, долго до такого додумывался *F_COOL*

(http://magicteam.net/forum/index.php?action=dlattach;topic=21.0;attach=1811)

Может быть, у тебя уже спрашивали про следующую возможность. В Notepad++, например, отображается количество выделенных байтов. По-моему, было бы здорово, если бы в Круптаре отображалось количество выделенных символов. Если бы развитие Круптара продолжилось, то эта фича не была бы добавлена из-за:
а) сильного влияния на быстродействие?
б) сложности имплементации?
в) вредности? ;D

(http://magicteam.net/forum/index.php?action=dlattach;topic=21.0;attach=1813)
Название: Kruptar
Отправлено: greengh0st от 28 Октябрь 2013, 17:57:21
Да сам пользуюсь таким блокнотом и там это удобно очень.
Название: Kruptar
Отправлено: Hatsuyuki от 28 Октябрь 2013, 21:14:14
Прочитал, что в Notepad++ 6.4.4 изменили способ подсчёта. Те, кому нужны символы, а не байты, могут обновиться ;)
Цитата: http://notepad-plus-plus.org/download/v6.4.4.html
Change behaviour: statusbar reports the number of selected characters instead of number of bytes now.

[Дата добавления: 28 Октябрь 2013, 21:19:16]
Вообще, в Notepad++ можно вывести всё сразу, но для этого нужно каждый раз вызывать отдельное окно, что не так удобно: http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Statistics
Название: Kruptar
Отправлено: greengh0st от 29 Октябрь 2013, 10:57:03
И там не совсем удачный плагин орфографии.
Название: Kruptar
Отправлено: Slam от 02 Июль 2015, 17:27:34
Всем доброго времени суток. Начал писать плагин, для перевода, и появилась пара вопросов. Как получить символ из загруженной строки в плагине (именно символ который в текстовом файле, а не его выходной код из таблицы). И как записывать коды полученные из внешнего файла в выходной поток. Просто документации на Круптар почти нет, поэтому и вопросы. Если не сложно подскажите, пожалуйста.
Название: Kruptar
Отправлено: Джинни от 07 Июль 2015, 22:35:00
В плагине нет доступа к символам из таблицы. Можно декодировать исходные данные представив одни коды другими кодами. Потом программа транслирует коды в читабельный текст с помощью таблиц.
Как писать плагины, подробно рассказано здесь:
http://magicteam.net/?page=documents&show=Написание плагинов для Kruptar 7  (http://magicteam.net/?page=documents&show=%D0%9D%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%BE%D0%B2%20%D0%B4%D0%BB%D1%8F%20Kruptar%207)
Название: Kruptar
Отправлено: Slam от 09 Июль 2015, 20:37:16
Я уже понял, что нельзя получать символы в плагине, но спасибо за ответ. У меня теперь другая проблема, более труднорешаемая. Нужно немного изменить SeekSame, чтобы поиск велся не только одинаковых строк, но и частей строк (например одна строка "мама мыла раму", а вторая "мыла раму"). И по аналогии с оригинальным SeekSame строка не записывалась бы отдельно, а  высчитывался бы поитнер на вторую строку = длинна строки 1 минус длинна строки 2 плюс адрес начала строки 1. Решил изменить код Круптара и столкнулся с трудностями. Версия 7.2.1.30 компилируется, но там какая то беда с поинтерами, возможно из-за ошибки в строке procedure PointersSortActionUpdate(Sender: TObject), скрин в аттаче (1). А версия 7.1.1.24 не компилируется из-за отсутствия функции WideFileNameToAnsi, в каком то модуле, и еще пара ошибок в аттаче (2,3). Помогите, пожалуйста, исправить ошибки и скомпилировать, или может быть есть исходники, которые можно спокойно компилировать, наример Версий 7.1.1.10-7.1.1.17.
Название: Kruptar
Отправлено: Джинни от 09 Июль 2015, 22:07:32
Репозиторий обновлён. Теперь собирается на Delphi 7 без проблем. Нужно открыть Kruptar7.bpg собрать и установить компоненты TntUnicodeControls_D7, MyLib, KruptarComponentsD7, LocalizerControls.
Сборка на Delphi XE7 неправильно работает из-за нового формата строк, я думаю.
Название: Kruptar
Отправлено: Slam от 09 Июль 2015, 22:55:13
Теперь компилируется нормально, спасибо большое. Только вот Круптар в этой версии после пересчета строки записывает не по порядку, а в разнобой (адрес присваивается странно). Так и должно быть да?
Название: Kruptar
Отправлено: Джинни от 12 Июль 2015, 17:32:51
Да, так и должно быть. Там особый вид сортировки.
Название: Kruptar
Отправлено: Mefistotel от 15 Июль 2015, 08:36:09
Из-за этой особенности я в своё время отказался от новой версии Круптара. :)
Название: Kruptar
Отправлено: Slam от 17 Июль 2015, 18:21:40
А не у кого не осталось исходников более старых версий Круптара? Просто в этой у меня проекты не сохраняются, а старые версии уже скомпилированные немного не подходят, нужно кое-что изменить.
Название: Kruptar
Отправлено: Джинни от 21 Июль 2015, 21:25:14
В репозитории все версии.
Название: Kruptar
Отправлено: Slam от 23 Июль 2015, 13:31:25
Спасибо за помощь, разобрался)
Название: Kruptar
Отправлено: kalash49 от 23 Август 2015, 05:28:10
Сам уже разобрался. Вопрос снимается.
Название: Kruptar
Отправлено: ZukoFL от 19 Июль 2016, 10:32:51
Вопрос по последнему круптару, можно ли что-то сделать чтобы он пересчитывал пойнтеры последовательно? А то, после пересчёта, у меня строки в блоках разбросаны рандомно а так же таблица указателей разбросана. Пойнтеры 2-ух байтные, самый первый 0000, а при пересчёте 37A4, а после него уже ит 2239 (как пример). В общем таблица уже не по позростанию получаеться
Название: Kruptar
Отправлено: Anton от 26 Ноябрь 2016, 21:55:43
FoX написал руководство к Круптару на форуме "Шедевра" (об этом давно знаете, наверное).
Я сверстал это все в один PDF, чтобы это выглядело цельным документом. Можете (нужно!) разместить тут на Мэджике, если хотите. )
Выложил у себя, забирайте: http://shedevr.org.ru/zelda64rus/downloads.html#text
Название: Kruptar
Отправлено: JurasskPark от 26 Ноябрь 2016, 22:26:44
Приеду из командировки и добавлю на сайт. Если никто не опередит меня. :)
Название: Kruptar
Отправлено: JurasskPark от 02 Декабрь 2016, 19:40:27
Пока добавлял новость и вспоминал как это делать (http://magicteam.net/index.php?page=news (http://magicteam.net/index.php?page=news)), нашёл баг в админке.  ;D