 |
shedevr.org.ru Группа перевода приставочных игр "ШЕДЕВР"
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Ср Июл 26, 2006 11:22 am Заголовок сообщения: Advanced Pointer Recalculator |
|
|
Представляю на суд общественности (...барабанная дробь... ) мою первую публичную утилиту-рекалькулятор с возможностью дампа/вставки скрипта. Прога предназначена для пересчёта практически всех типов указателей, в т. ч. неупорядоченных и со сложной структурой. Подробный readme прилагается.
После трёх месяцев работы над программой (правда, с большими перерывами ) вроде бы реализовал в ней практически всё, что хотел. Единственное, не смог проверить все комбинации (а их очень много), которые могут встретиться в играх для различных платформ. По этой причине (плюс не очень удобная работа с программой и медленная скорость дампа текста) текущая версия - 0.8beta, а не 1.0.
Теоретически поддерживается как минимум 95% игр (с несжатым текстом/поинтерами, разумеется). Фактически в программе реализован один большой универсальный алгоритм (точнее, два - для дампа и для вставки), благодаря которому и появилась возможность осуществить поддержку такого количества ситуаций.
Текущая версия (0.8beta) позволяет:
- пересчитывать указатели прямого и обратного порядка (Motorola и Intel) длиной от 2-х до 4-х байтов
- пересчитывать указатели как с прибавляемой, так и с вычитаемой базой
- пересчитывать несортированные (неупорядоченные) указатели
- пересчитывать указатели, идущие в обратном порядке
- пересчитывать параметрические и составные сложные указатели
- дампить и вставлять скрипт по указателям (с их пересчётом)
- дампить скрипт с DTE/MTE
В архиве с программой есть парочка примеров с необходимыми файлами.
http://shedevr.org.ru/temp/arp08beta.rar
Readme в CHM, с добавленным примером по работе с утилитой:
http://shedevr.org.ru/temp/arp_help.chm
Последний раз редактировалось: gottax (Вс Авг 06, 2006 6:31 am), всего редактировалось 2 раз(а) |
|
Вернуться к началу |
|
 |
АнС RRC2008


Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Ср Июл 26, 2006 2:29 pm Заголовок сообщения: |
|
|
Уф. Сам чёрт ногу сломит, у меня понятнее было.  |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Ср Июл 26, 2006 3:07 pm Заголовок сообщения: |
|
|
АнС писал(а): | Уф. Сам чёрт ногу сломит, у меня понятнее было.  |
Естественно, понятнее, у тебя же только 1 вид поинтеров считает
Похоже, придётся сделать описание в формате CHM с подробным пошаговым примером. |
|
Вернуться к началу |
|
 |
АнС RRC2008


Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Ср Июл 26, 2006 3:18 pm Заголовок сообщения: |
|
|
gottax писал(а): | АнС писал(а): | Уф. Сам чёрт ногу сломит, у меня понятнее было.  |
Естественно, понятнее, у тебя же только 1 вид поинтеров считает  |
Да, куча однотипных программок - для каждого типа своя. ИМХО, веник прочнее швабры.  |
|
Вернуться к началу |
|
 |
Axel Советник

Зарегистрирован: 14.11.2003 Сообщения: 680
|
Добавлено: Ср Июл 26, 2006 3:45 pm Заголовок сообщения: Re: Advanced Pointer Recalculator |
|
|
gottax писал(а): | - указатели прямого и обратного порядка (Motorola и Intel) длиной от 2-х до 4-х байтов
|
может назовёшь по нормальному
Big endian(Motorola),Little endian(Intel)
поскольку у GBA/NDS не моторольный(е) и не интеловский(е)
процессор(ы) (ARM), а всё же твоя прога должна для него подходить (он little endian) _________________ Всех их вместе переведём!
Последний раз редактировалось: Axel (Ср Июл 26, 2006 5:06 pm), всего редактировалось 2 раз(а) |
|
Вернуться к началу |
|
 |
PicaSSO

Зарегистрирован: 04.04.2004 Сообщения: 711 Откуда: Украина. Краматорск
|
Добавлено: Ср Июл 26, 2006 4:45 pm Заголовок сообщения: |
|
|
Зато швабра зачастую эффективней
Молодец, Готакс! _________________ まだ若い夜... |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Ср Июл 26, 2006 5:45 pm Заголовок сообщения: |
|
|
АнС писал(а): |
Да, куча однотипных программок - для каждого типа своя. ИМХО, веник прочнее швабры.  |
Согласен. Но вот что делать тем, кто веники вязать не умеет? Я сам недавно был в таком же положении, и поэтому прекрасно понимаю, что универсал - лучший выход в этой ситуации.
Axel писал(а): |
может назовёшь по нормальному
Big endian(Motorola),Little endian(Intel)
поскольку у GBA/NDS не моторольный(е) и не интеловский(е)
процессор(ы) (ARM), а всё же твоя прога должна для него подходить (он little endian) |
Дело не в процессоре, используемом в консоли. Называть можно по-разному, кому как удобнее/понятнее. Просто такие виды считывания адресов, насколько я знаю, придумали Motorola и Intel соответственно, поэтому и назвал так. Хотя, наверное, Big endian и Little endian приписать стоит.
PicaSSO писал(а): |
Зато швабра зачастую эффективней |
Швабра просто универсальнее |
|
Вернуться к началу |
|
 |
Axel Советник

Зарегистрирован: 14.11.2003 Сообщения: 680
|
Добавлено: Ср Июл 26, 2006 7:49 pm Заголовок сообщения: |
|
|
хехе
благодаря твоей проге+readme, я похоже, понял, что делает круптар
(в том смысле, что такое у него "группы" и "элементы")
...кстати, посмотри, как у крупрара устроен .kpj файл
(по мне, так это наглядней, чем текущий .apr )  _________________ Всех их вместе переведём! |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Чт Июл 27, 2006 8:25 am Заголовок сообщения: |
|
|
Axel писал(а): | хехе
благодаря твоей проге+readme, я похоже, понял, что делает круптар
(в том смысле, что такое у него "группы" и "элементы") |
Да, я тоже хотел сделать нечто подобное и в своей проге, но это бы слишком усложнило её. И вообще, у меня просто рекалькулятор, а не редактор проектов А самое главное, прога не работает со скриптом, его можно редактировать где угодно, даже в Блокноте. В принципе, реализовать поддержку импорта/экспорта скрипта формата ПП2 вполне реально (надо только "отучить" ПП2 удалять "ненужные" байты при разметке диалогов )
Axel писал(а): | ...кстати, посмотри, как у крупрара устроен .kpj файл
(по мне, так это наглядней, чем текущий .apr )  |
Хех, я вообще сначала хотел файл настроек сделать бинарным, шоб никто туда не лазил Просто не имеет смысла редактировать его вручную, так как параметров там немного, легче их проставить в самой проге и пересохранить файл с параметрами. |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Пт Июл 28, 2006 3:30 pm Заголовок сообщения: |
|
|
Переписал readme в CHM, ссылка в первом посте. |
|
Вернуться к началу |
|
 |
Axel Советник

Зарегистрирован: 14.11.2003 Сообщения: 680
|
Добавлено: Пт Июл 28, 2006 5:53 pm Заголовок сообщения: |
|
|
а я вот, так и не понял, что такое "пересчитывать параметрические и составные сложные указатели", т.е. я понял(догадываюсь) что это такое, но не понял как это объяснить проге :roll:
[edit]
да, и укажи где нибудь, что "Код для переноса строки" должен ОТСУТСТВОВАТЬ в таблице перекодировки, и должен быть указан
в программе (в меню).
кроме того, не забудь упомянуть, что НЕ рекомендуется
задействовать символ "\" в таблице перекодировки...
поскольку он зарезервирован как символ "переноса строки"
(для текущей версии проги, его нельзя использовать в правой части таблицы перекодировки, иначе вставка текста, вероятно, будет работать криво) _________________ Всех их вместе переведём! |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Пт Июл 28, 2006 7:54 pm Заголовок сообщения: |
|
|
Axel писал(а): | а я вот, так и не понял, что такое "пересчитывать параметрические и составные сложные указатели", т.е. я понял(догадываюсь) что это такое, но не понял как это объяснить проге
|
Просто такие указатели тоже объединяются в таблицу, и в них достаточно считывать только те байты, которые являются адресами, пропуская другие байты в поинтере с помощью холостого цикла.
Взгляни на скрин, и всё станет понятно:
Но мне недавно встретился ещё более сложный тип поинтера, в котором хранится уже 2 адреса. Такие указатели проге не позубам. Думаю, в следующей версии стоит ввести возможность загрузки поинтеров из файла, в котором адрес каждого поинтера забит вручную. По-другому пересчёт таких указателей вряд ли возможен... |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Пт Июл 28, 2006 7:54 pm Заголовок сообщения: |
|
|
Axel писал(а): |
кроме того, не забудь упомянуть, что НЕ рекомендуется
задействовать символ "\" в таблице перекодировки...
поскольку он зарезервирован как символ "переноса строки"
(для текущей версии проги, его нельзя использовать в правой части таблицы перекодировки, иначе вставка текста, вероятно, будет работать криво) |
Ну да, верно, символы "\", "{", "}" и "§" являются зарезервированными и не должны прописываться в таблице.
Так-с, уже довольно много недочётов накопилось, пора обновление релизить |
|
Вернуться к началу |
|
 |
Axel Советник

Зарегистрирован: 14.11.2003 Сообщения: 680
|
Добавлено: Пт Июл 28, 2006 9:56 pm Заголовок сообщения: |
|
|
gottax писал(а): | Ну да, верно, символы "\", "{", "}" и "§" являются зарезервированными и не должны прописываться в таблице.
Так-с, уже довольно много недочётов накопилось, пора обновление релизить |
это НЕ недочёты, это features
фичи нужно просто не забыть описать, чтобы не возникало прострации, когда прога работает не так как расчитывает её пользователь...
(не думаю, что можно придумать что-то относительно простое и одновременно гибкое (если только не заморачиваться, как я в ПП2 с "укодированием") )
единственный недочёт - нельзя чтобы в таблице были "пустые строки"
и (вообще что либо отличное от описания кодов)...
но это, надеюсь, будет исправлено в следующей версии :)
про составные указатели, я понял...
gottax писал(а): | пропуская другие байты |
т.е. это НЕ пересчет указателей на указатели (как в минише )...
а то я уж читал...читал... и там... и сям и всё не мог понять...
непоняток больше нет.(кажется) _________________ Всех их вместе переведём! |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Сб Июл 29, 2006 7:34 am Заголовок сообщения: |
|
|
Axel писал(а): | т.е. это НЕ пересчет указателей на указатели (как в минише )...
а то я уж читал...читал... и там... и сям и всё не мог понять...
непоняток больше нет.(кажется) |
Хех, а зачем так заморачиваться? Вряд ли кто-то будет переносить сами указатели в другое место, а тогда зачем это нужно?
Конечно же, можно сделать гораздо проще и удобнее, заточив прогу под какую-то конкретную игру, где она будет пересчитывать автоматом всё что угодно, но ведь на то и универсал, чтобы работать с любой игрой.... |
|
Вернуться к началу |
|
 |
Alex_231

Зарегистрирован: 13.01.2005 Сообщения: 144 Откуда: Арсеньев
|
Добавлено: Сб Июл 29, 2006 9:40 am Заголовок сообщения: |
|
|
Универсал должен быть не только универсальным, но и удобным в обращении. |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Сб Июл 29, 2006 2:12 pm Заголовок сообщения: |
|
|
Обновление утилиты (версия 0.85):
Изменения:
- тип поинтеров изменён с Intel на Intel(LittleEndian) и с Motorola на Motorola(BigEndian)
- добавлена автоматическая проверка таблиц на недопустимые строки и зарезервированные символы
- увеличена скорость дампа текста на 75%* (спасибо Акселю )
*Добавлено* Версия оказалась чересчур глючной и бажной, поэтому удаляю ссылку. Юзайте предыдущую версию 0.8.
Последний раз редактировалось: gottax (Вс Июл 30, 2006 4:29 pm), всего редактировалось 1 раз |
|
Вернуться к началу |
|
 |
Axel Советник

Зарегистрирован: 14.11.2003 Сообщения: 680
|
Добавлено: Сб Июл 29, 2006 5:42 pm Заголовок сообщения: |
|
|
gottax писал(а): | увеличена скорость дампа текста на 75% |
в принципе, можно было еще раза в 1.5-2 ускорить ,
но не думаю, что так уж нужно настолько сильно зарываться
в оптимизацию, да и к тому же, тебе пришлось бы сильно
покорёжить текущий код программы... _________________ Всех их вместе переведём! |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Пн Июл 31, 2006 2:35 pm Заголовок сообщения: |
|
|
Новая версия программы - 0.9:
http://shedevr.org.ru/temp/apr090.rar
Изменения:
- переписан код с проверенной версии 0.8
- добавлен удобный пользовательский интерфейс (теперь не надо мучаться с переименованием, все необходимые файлы можно загрузить из меню)
- введена блокировка на дамп/вставку текста при отсутствии соответствующих таблиц
- добавлена автоматическая проверка таблиц на недопустимые строки и зарезервированные символы
- немного оптимизирован процесс дампа текста (ProgressBar'ы было решено оставить в виду их эстетической функции при небольшом увеличении времени дампа текста)
- введена возможность загрузки списка адресов указателей из текстового файла и дамп/вставка по нему (в текущей версии эта возможность заблокирована в виду не совсем корректной работы при вставке скрипта по такому списку)
Ну вот, теперь вроде глупых ошибок нет, всё работает чётко и точно, как швейцарские часы
Ещё немного подрихтовать функциональность, допроверять различные варианты работы и можно релизить версию 1.0 (даже можно будет новость по такому случаю написать )
Но это позже, сейчас мне важно знать, что утилита без проблем работает на любых комбинациях. Кто-нибудь помимо меня уже пробовал дампить/вставлять скрипт с её помощью?  |
|
Вернуться к началу |
|
 |
Axel Советник

Зарегистрирован: 14.11.2003 Сообщения: 680
|
Добавлено: Пн Июл 31, 2006 4:58 pm Заголовок сообщения: |
|
|
дык, ты же её только что выложил... когда же мы успели ? :)
[edit]
пара мааааленьких замечаниц:
когда ты загрузил адреса, не разрешай указывать "количество блоков для вставки" больше чем у тебя есть адресов, иначе случится
Код: | " is not a valid integer value |
и перед тем как enable'ить кнопку дампа проверь, что загружены адреса , иначе
ну и на последок, если указано "смещение при вставке текста=0", то стоит уточнить у юзверя он уверен, что этого хочет ? _________________ Всех их вместе переведём! |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Пн Июл 31, 2006 7:36 pm Заголовок сообщения: |
|
|
Axel писал(а): | дык, ты же её только что выложил... когда же мы успели ?  |
Нет, я имел в виду, испытывал ли кто-нибудь первую версию, 0.8? Алгоритм-то не изменился. :)
Axel писал(а): | [edit]
пара мааааленьких замечаниц:
когда ты загрузил адреса, не разрешай указывать "количество блоков для вставки" больше чем у тебя есть адресов, иначе случится
Код: | " is not a valid integer value |
и перед тем как enable'ить кнопку дампа проверь, что загружены адреса , иначе ? |
Ох, сколько же надо таких защит "от дурака" ставить Вообще-то то, что нельзя указывать более число, чем имеется адресов в адресном файле, написано в readme. И убирать эти поля не хочется - а вдруг пользователю понадобится в целях проверки дампить или вставлять только часть скрипта?..
Это, конечно, надо учитывать, только вот как бы не порушить этими замазками всё строение, то бишь программу...
Axel писал(а): | [ну и на последок, если указано "смещение при вставке текста=0", то стоит уточнить у юзверя он уверен, что этого хочет ? |
Эээ... Я так понимаю, Axel, ты просто не правильно понял смысл надписи "Смещение при вставке текста". Это не адрес, куда вставляется текст, а дополнительное смещение на определённое количество байт. То есть если пользователь имеет достаточно свободного места в конце рома, либо он расширил ром, то он может задать эту разницу между адресом положения оригинального скрипта и адресом начала пустого места в роме, и прога будет вставлять текст туда. Если стоит 0, то естественно, текст будет вставляться на то же самое место. |
|
Вернуться к началу |
|
 |
Axel Советник

Зарегистрирован: 14.11.2003 Сообщения: 680
|
Добавлено: Пн Июл 31, 2006 8:01 pm Заголовок сообщения: |
|
|
gottax писал(а): | Вообще-то то, что нельзя указывать более число, чем имеется адресов в адресном файле, написано в readme. И убирать эти поля не хочется - а вдруг пользователю понадобится в целях проверки дампить или вставлять только часть скрипта? |
меньше можно, больше низзя
в любом случае у тебя ЕСТЬ переменная с этим числом (загруженных адресов) например mC, просто если ввели число (скажем в переменную TBnum ), то если TBnum > mC -1 тогда TBnum = mC -1
и усё...
gottax писал(а): | Axel писал(а): | [ну и на последок, если указано "смещение при вставке текста=0", то стоит уточнить у юзверя он уверен, что этого хочет ? |
это дополнительное смещение на определённое количество байт. |
поэтому я написал - пара замечаний (а не три)  _________________ Всех их вместе переведём! |
|
Вернуться к началу |
|
 |
Virtual_Killer

Зарегистрирован: 25.03.2004 Сообщения: 610 Откуда: Чекагинск
|
Добавлено: Вт Авг 01, 2006 5:50 am Заголовок сообщения: |
|
|
gottax писал(а): | То есть если пользователь имеет достаточно свободного места в конце рома, либо он расширил ром, то он может задать эту разницу между адресом положения оригинального скрипта и адресом начала пустого места в роме, и прога будет вставлять текст туда. Если стоит 0, то естественно, текст будет вставляться на то же самое место. |
1) А не лучше ли, как в Круптаре, указывать координаты для текста?
2) Что будет делать программа, ести переведённый скрипт занимает больше места, чем оригинальный? Не запоганит ли она чего?  _________________ Не поймите меня правильно |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
Добавлено: Вт Авг 01, 2006 9:25 am Заголовок сообщения: |
|
|
Axel писал(а): | в любом случае у тебя ЕСТЬ переменная с этим числом (загруженных адресов) например mC, просто если ввели число (скажем в переменную TBnum ), то если TBnum > mC -1 тогда TBnum = mC -1
и усё... |
да ясно, я так и хотел сделать:)
Virtual_Killer писал(а): | 1) А не лучше ли, как в Круптаре, указывать координаты для текста? |
Нет, не лучше. Для этого придётся лезть в алгоритм пересчёта. А посчитать разницу несложно и самостоятельно, в калькуляторе.
Virtual_Killer писал(а): | 2) Что будет делать программа, ести переведённый скрипт занимает больше места, чем оригинальный? Не запоганит ли она чего? |
Запоганит конечно же. За этим должен следить пользователь. Сравнить размер переведённого и оригинального скрипта - задача очень простая. Всё-таки это рекалькулятор поинтеров, а не скриптер. Дамп/вставка скрипта здесь больше для наглядности. Я не собираюсь раздувать утилиту до PP2 или Kruptar. |
|
Вернуться к началу |
|
 |
gottax

Зарегистрирован: 16.11.2003 Сообщения: 588 Откуда: Курск
|
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|