![]() |
eXeL@B —› Вопросы новичков —› Формат файла |
Посл.ответ | Сообщение |
|
Создано: 02 июля 2009 12:27 · Поправил: Arnon · Личное сообщение · #1 Здравствуйте. У одной программы есть собственный формат файлов .gtd в которых хранятся картинки/музыка/строчки текста. Файлы эти не шифруются не пакуются, т.е. тем же Dragon Unpacker'ом можно выдрать оттуда рисунки и музыку. Но мне нужно каким-то образом перевести строчки, которые там хранятся. Начальный язык - японский. С помощью hex-редактора можно это сделать, но сталкиваешься с жестким ограничением по количеству символов (в японском два иероглифа - уже слово, а для русского это мало). Собственно просьба к тем кто в этом разбирается, узнать структуру файла и создать простую программку распознания строк и их редактирования и по возможности выдирания/замены рисунков. Пример такого файла выкладываю в аттач. В первом файле: 1 строчка текста - название - по адресу 0x23h (4 байта) 2 строчка - описание - по адресу 0x29h (34 байта) дальше идёт png'шка Если есть ещё какие-то варианты как отредактировать, расширив эти строки, то буду благодарен если такие найдутся. ![]() ещё примеры этих файлов: ![]() |
|
Создано: 02 июля 2009 12:51 · Личное сообщение · #2 Arnon по идее строки либо чемто заканчиваются, либо гдето укзан их размер. по адресу 0x22h мы видим какраз 02, а вот по адресу 29h как раз мы видим 0 через 32 байта) ты правильно определил эти строки? может это одна большая строка оканчивающаяся нулём? попробуй воткнуть ноль в середину если строка обрежется то для увеличения нужно передвинуть ноль подальше. либо искать где указан размер. ----- zzz ![]() |
|
Создано: 02 июля 2009 13:05 · Поправил: Arnon · Личное сообщение · #3 Ошибся в первой строке, там 4 байта, сорри (строки в юникоде). Вставка нулей как и любых других символов (1-2 байта) посреди строки приводит к тому что файл вообще не читается (в самой программе он должен отображаться в списке шаблонов, а его нет). Спасибо за наводку. Кстати, действительно кажется перед строкой стоит её длина - у первой два символа (02 HEX = 2 DEC (1 символ = 2 байта)). У второй семнадцать символов (11 HEX = 17 DEC). Но только это не помогло) изменяю размер первой 02 => 04 и втыкаю 4 байта с теми же символами, но без результатов - файл перестаёт читаться... ![]() |
|
Создано: 02 июля 2009 13:25 · Личное сообщение · #4 |
|
Создано: 02 июля 2009 14:15 · Поправил: Arnon · Личное сообщение · #5 вот но не уверен будет ли она так работать. В общем смысл в том что это файлы-шаблоны при создании игры - жать "Создать" - Далее - Simple*** - Далее и тут уже начинаются шаблоны (вот те японские символы в файлах и хранятся), оттуда и исчезают. В большом файле "Простой экшен.gtd" строк больше должно быть. Тааак. Кажется наткнулся ещё на интересную вещь. В начале по адресу 0x6h два байта указывают размер файла в байтах. Но и их изменение пока ничего не дало) ![]() |
|
Создано: 02 июля 2009 15:56 · Поправил: Модератор · Личное сообщение · #6 |
|
Создано: 03 июля 2009 11:12 · Личное сообщение · #7 |
|
Создано: 03 июля 2009 12:58 · Поправил: Arnon · Личное сообщение · #8 Такс, спасибо за очередную наводку, рефлектор есть, класс отвечающий за чтение шаблона нашёл. TemplateInfoData. Вот он: Изучаю, но боюсь знаний моих в программировании может не хватить ![]() Хотелось бы чтобы кто-нибудь на его основе написал простую программку редактирования строк - мне нужно всего лишь перевести строчки в этих файлах... Окажете неоценимую помощь. ![]() |
|
Создано: 03 июля 2009 20:25 · Личное сообщение · #9 |
|
Создано: 03 июля 2009 23:01 · Личное сообщение · #10 |
|
Создано: 04 июля 2009 18:03 · Поправил: Arnon · Личное сообщение · #11 |
|
Создано: 04 июля 2009 20:06 · Личное сообщение · #12 |
|
Создано: 04 июля 2009 20:40 · Поправил: Arnon · Личное сообщение · #13 |
![]() |
eXeL@B —› Вопросы новичков —› Формат файла |