Новости:

01.01.2017: Релиз испанской версии Naruto - Ninja Council (GBA)
02.12.2016: Добавлена документация по Kruptar 7
09.10.2015: Обновление перевода игры Battletoads (NES) [версия 1.3]
22.01.2015: Kruptar Open Source
18.10.2014: Релиз обновлённой русской версии Castlevania - Dawn of Sorrow (GBA) от Owls Group
01.05.2014: Релиз русской версии Taiyou no Yuusha Firebird (NES)
24.06.2012: Добавлена доработанная документация и инструкция
26.05.2012: Обновление ORITON [версия 2.050]
11.05.2012: Обновление ORITON [версия 2.048]
11.03.2012: Обновление Kruptar 7 [версия 7.1.1.17]
29.01.2012: Обновление LZ77Restructor 2 [версия 1.02]
01.01.2012: Релиз русской версии Drill Dozer (GBA)

Подробнее на страничке новостей.
Ознакомьтесь с правилами нашего форума.

Главное меню

Kruptar

Автор Alex, 20 февраля 2009, 14:02:55

« назад - далее »

0 Пользователи и 7 гостей просматривают эту тему.

Dr. MefistO

Я с ним и работаю. Но строки пожаты.

Oraculum

Цитата: Dr. MefistO от 10 января 2013, 00:50:41Я с ним и работаю. Но строки пожаты.
Не в один же блок сжаты. Добавляешь поинтеры по отдельности, удобнее всего загружать список поинтеров из файла (правой кнопкой на List).

Dr. MefistO

Ууу... А я про что?) Вопрос мой прочитай: как добавить отдельно строку (поинтер)? Если можно - в картинках.

Oraculum

Цитата: Dr. MefistO от 10 января 2013, 01:05:06
Ууу... А я про что?) Вопрос мой прочитай: как добавить отдельно строку (поинтер)? Если можно - в картинках.
Написал непонятно - сам виноват. :P
Спойлер

Dr. MefistO

Oraculum,  >:D  Какие поинтеры? Какие адреса указывать? Какие параметры на группу и т.д.? Конкретики, плиз.

Джинни

Цитата: Dr. MefistO от 10 января 2013, 01:12:29Oraculum,  >:D  Какие поинтеры? Какие адреса указывать? Какие параметры на группу и т.д.? Конкретики, плиз.
Пойнтеры найди сначала все в роме, сформируй их список в текстовом файле, потом используй в круптаре.
Параметры:
ptPointerSize = 4 вероятнее всего
ptBIG_ENDIAN = true

Dr. MefistO

А указатель, получается, будет на то место, где он передается в регистр?


Я пытаюсь добавить диапазон поинтеров тех, которые есть в одной таблице. Жму
1) Добавить поинтеры в созданной группе. Вылезает окошко начального и конечного адреса. Пытаюсь вводить в хексе - пишет, что неправильное десятичное значение. Пытаюсь в дек - вылетает.

Oraculum

Цитата: Dr. MefistO от 10 января 2013, 13:39:32А указатель, получается, будет на то место, где он передается в регистр?
Указатель будет на строку (=адресу строки), в хекс-редакторе код глянешь и увидишь свои указатели. Запишешь адреса всех указателей в файл и загрузишь в Круптар.
Цитата: Джинни от 10 января 2013, 04:48:15ptPointerSize = 4 вероятнее всего
ptBIG_ENDIAN = true
Добавлю:
ptPointerSize = 2
ptBIG_ENDIAN = true
ptAutoReference = true

Dr. MefistO


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


А если есть указатели, которые сгруппированы в таблицу, какие параметры надо?

Dr. MefistO

Вопросов больше нет.( Я вроде написал, что работаю считай первый раз в круптаре, а вы мне пишете, как уже умеющему работать. Отсутствие справки и старая статья знаний не прибавляют.

Oraculum

Цитата: Dr. MefistO от 10 января 2013, 14:25:38Вопросов больше нет.( Я вроде написал, что работаю считай первый раз в круптаре, а вы мне пишете, как уже умеющему работать. Отсутствие справки и старая статья знаний не прибавляют.
Да писать надо понятно, что тебе конкретно надо, блин.
Цитата: Dr. MefistO от 10 января 2013, 14:14:50Почему двухбайтные ты мне говоришь?
Бывают 4-байтные, бывают 2-байтые.
Смотрю, ты к сообщению ещё добавил.
Цитата: Dr. MefistO от 10 января 2013, 13:39:32Я пытаюсь добавить диапазон поинтеров тех, которые есть в одной таблице. Жму
1) Добавить поинтеры в созданной группе. Вылезает окошко начального и конечного адреса. Пытаюсь вводить в хексе - пишет, что неправильное десятичное значение. Пытаюсь в дек - вылетает.
Если пишешь в хексе, то вроде надо h на конце (позже попр.). Вводить адреса первого и последнего поинтеров.

Dr. MefistO

Пробовал - то же самое пишет.
Ты мы мог бы по удаленному доступу показать - я все поясню. Войди в аську, там поговорим. Ок?

Джинни

h вначале надо писать

Dr. MefistO

Разобрался как отлаживать. Но от ошибки избавиться не могу. Почему-то вылетает даже на шаблонном куске кода из плагина NULL. Вот здесь:

With Result^.Add^ do
begin
  P := Addr(ROM^[X]);



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





Отладчик, в данном месте при наведении на ROM^[X] показывает находящийся там байт, но присвоение не происходит - идет вылет.

Джинни

Вылетает, потому что параметры пойнтеров неправильные указаны и сами пойнтеры.

Dr. MefistO

Исправил предыдущий пост, почитай.

Джинни

Потому что пытается читать за пределами рома, так как параметры пойнтеров указаны неверно. А это место не выделено в памяти.

Dr. MefistO




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


В роме именно этот байт по этому смещению и лежит:



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

[Дата добавления: 10 января 2013, 20:11:10]

Дело было в размере массива ROM. Там макс ширина стояла WORD. Я растянул до 1MB.

Mefistotel

В аське меня найди 475891500.
Объясню всякие мелочи, типа менюшечек и общих принципов работы в Круптаре.
Спрашивать на форуме всё подряд не стоит. ;)

gegmopo3

Кстати, тут вспомнил кое-что)
Если обрывание строки у нас $D3.
Есть Мте( или прочее) E5D3 = 'blablabla'
То он строку обрывает после этого мте, и не показывает дальше текст после E5D3

Джинни

Это да. В таких случаях свой плагин нужен.

vitecd

у меня такая проблема..... поинтеры ссылаются на поинтеры, а уже они на текст. и такая же беда с графикой, какой программой можно так же красиво, как круптаром, графику "каталогизировать" ))) ?


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


можно ли круптаром "достать" текст из таких "двухуровневых" поинтеров?

Джинни

Если пойнтеры такого же формата, как те, которые на них ссылаются, то в круптаре есть свойство ptPtr2ptr.

vitecd

и первый и второй поинтеры Long, т.е. 4 байта. но рядом со вторыми, которые непосредственно на текст указывают, есть длинна строки. пошел пробовать

vitecd

а что можно сделать во избежание


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, 19: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, 01:55:05]

можно узнать, что значат эти параметры, начиная с 3его