|
Русификация игр для PS Vita Здесь занимаемся русификацией Vita-игр |
31.08.2016, 10:23
|
Сообщение: #1 (1104934)
|
Модель консоли: slim/lite
Прошивка: 6.60 ME
Другие консоли: N3DS + GW, NDSi, PSV WiFi
Регистрация: 27.11.2006
Адрес: vk.com/lupus_ua
Сообщений: 1,298
Вы сказали Спасибо: 280
Поблагодарили 638 раз(а) в 337 сообщениях
Сила репутации: 1Репутация: 604 
(луч света в тёмном царстве)
|
Поиск указателей на текст в eboot.bin на примере Hotline Miami 2
В разделе для psp Эрик подробно расписывал, как посчитать относительный адрес смещния текстовой строки, зная абсолютный и найти казатель на него.
Интересует аналогичный алгоритм поиска для витовских ибутов с целью перевести некоторые строки, которые туда зашиты.
Для примера можно взять eboot.bin из Hotline Miami 2, которую я русифицировал:
https://mega.nz/#F!E4MAnQAT!yCyQQK2kwzUI_PK1nDIWfQ
Хотелось бы доработать неполный авторский перевод, но для этого, как раз и нужно править eboot, а учитывая, что русский текст будет в utf-8, перемещать строки придётся в пустое место, т.к. их длина получится минимум в 2 раза больше, чем в оригинале.
Для наглядности предлагаю взять строки:
New game
Continue
Options
поскольку они встречаются в самом начале.
Также интересует, какой диапозон адресов можно использовать под текст, если строки могут лежать где угодно, то оптимальным было бы их переносить в область, где есть большие куски 0x00 и собирать в одном месте.
Количество сообщений на форуме далеко не всегда пропорционально умственным способностям человека.
>>> Silent Hill: Genesis<<<
Последний раз редактировалось lupus; 04.09.2016 в 14:17.
|
|
|
31.08.2016, 20:29
|
Сообщение: #2 (1104956)
|
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,672
Вы сказали Спасибо: 27,297
Поблагодарили 42,821 раз(а) в 12,237 сообщениях
Сила репутации: 10Репутация: 42016 
(репутация неоспорима)
|
lupus, пока заметил, что каждая новая секция начинается с заголовка Magik: 2D992982 и в следующей строке 2FF8FFFF
Пока башка не варит, ночью посмотрю - темнота, тишина и луна располагают
|
|
|
31.08.2016, 21:13
|
Сообщение: #3 (1104957)
|
Модель консоли: slim/lite
Прошивка: 6.60 ME
Другие консоли: N3DS + GW, NDSi, PSV WiFi
Регистрация: 27.11.2006
Адрес: vk.com/lupus_ua
Сообщений: 1,298
Вы сказали Спасибо: 280
Поблагодарили 638 раз(а) в 337 сообщениях
Сила репутации: 1Репутация: 604 
(луч света в тёмном царстве)
|
Я пытался простым дедовским способом искать, без декомпиляции - зная абсолютное смещение, вычислить относительное таким макаром:
адрес абсолютного смещения строки -минус- размер заголовка SCE (0xA0) -минус- размер заголовка ELF (0x60)
от полученного результата и отталкивался
NEW GAME 0x0136e3a0 - 0x100 0x0136E29F
Эту последовательность и пытался найти, учитывая Big Endian, но бес толку :/
Не уверен, что данный метод здесь применим.
Теоретически, можно было бы написать софтинку, которая сама будет искать указатели, зная адреса начала 2+ строк, по разнице их смещений, но я совсем не умею кодить :/
Количество сообщений на форуме далеко не всегда пропорционально умственным способностям человека.
>>> Silent Hill: Genesis<<<
Последний раз редактировалось lupus; 31.08.2016 в 22:56.
|
|
|
31.08.2016, 22:12
|
Сообщение: #4 (1104960)
|
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,672
Вы сказали Спасибо: 27,297
Поблагодарили 42,821 раз(а) в 12,237 сообщениях
Сила репутации: 10Репутация: 42016 
(репутация неоспорима)
|
Сообщение от lupus
размер заголовка ELF (0x60)
|
Обрати внимание, что в eboot.bin находится общий ELF-файл, внутри которого лежит ещё один ELF-файл.
Вообще размер заголовка записан по адресу 0х38 в ELF-файле, который начинается по адресу 0xF60, а там я вижу размер заголовка 0x80.
Сообщение от lupus
учитывая Big Endian
|
По-моему Little Endian (задом наперёд).
|
|
|
Этот пользователь сказал Спасибо ErikPshat за это полезное сообщение:
|
|
31.08.2016, 23:08
|
Сообщение: #5 (1104964)
|
Модель консоли: slim/lite
Прошивка: 6.60 ME
Другие консоли: N3DS + GW, NDSi, PSV WiFi
Регистрация: 27.11.2006
Адрес: vk.com/lupus_ua
Сообщений: 1,298
Вы сказали Спасибо: 280
Поблагодарили 638 раз(а) в 337 сообщениях
Сила репутации: 1Репутация: 604 
(луч света в тёмном царстве)
|
Отрезал всё лишнее пред первым эльфом, считаю
NEW GAME 0x0136d3a0 - 80 0136D320
CONTINUE 0x0136d3ac
EDITOR 0x0136d3b8
OPTIONS 0x0136d3c0
QUIT GAME 0x0136d3c8
Тоже, без толку. Спасибо, что поправил, ищу последовательность в обратном порядке.
Количество сообщений на форуме далеко не всегда пропорционально умственным способностям человека.
>>> Silent Hill: Genesis<<<
|
|
|
01.09.2016, 11:15
|
Сообщение: #6 (1104980)
|
Регистрация: 09.08.2008
Сообщений: 1,001
Вы сказали Спасибо: 47
Поблагодарили 345 раз(а) в 205 сообщениях
Сила репутации: 1Репутация: 349 
(как роза среди колючек)
|
С использованием real-time debugger'а в ассемблере такие вещи надо искать. Может там поинтеры, может таблица, а может вообще в инструкцию вшита позиция строки.
|
|
|
Этот пользователь сказал Спасибо riku.kh3 за это полезное сообщение:
|
|
01.09.2016, 15:29
|
Сообщение: #7 (1104985)
|
Модель консоли: slim/lite
Прошивка: 6.60 ME
Другие консоли: N3DS + GW, NDSi, PSV WiFi
Регистрация: 27.11.2006
Адрес: vk.com/lupus_ua
Сообщений: 1,298
Вы сказали Спасибо: 280
Поблагодарили 638 раз(а) в 337 сообщениях
Сила репутации: 1Репутация: 604 
(луч света в тёмном царстве)
|
riku.kh3, т.е. в текущей ситуации это не реально?
Количество сообщений на форуме далеко не всегда пропорционально умственным способностям человека.
>>> Silent Hill: Genesis<<<
|
|
|
01.09.2016, 16:02
|
Сообщение: #8 (1104986)
|
Регистрация: 09.08.2008
Сообщений: 1,001
Вы сказали Спасибо: 47
Поблагодарили 345 раз(а) в 205 сообщениях
Сила репутации: 1Репутация: 349 
(как роза среди колючек)
|
От игры зависит. Если текста очень много и он идет цельным блоком, то скорее всего должна быть таблица. Можно попробовать визуально в хексе поискать нарастающие 4-байтные значения, сравнивая разницу значений с расстояниями между строками.
Такие строки, как NEW GAME может быть трудно найти, если поинтер или инструкция указывающая на нее просто рандомно лежит далеко от таблицы.
Конкретно в этом случае IDA Pro рефференс к этой строке NEW GAME не находит в коде, значит только дебаггером через брейкпоинт отлавливать (нужен DevKit и софт).
|
|
|
02.09.2016, 23:50
|
Сообщение: #9 (1105028)
|
Модель консоли: slim/lite
Прошивка: 6.60 ME
Другие консоли: N3DS + GW, NDSi, PSV WiFi
Регистрация: 27.11.2006
Адрес: vk.com/lupus_ua
Сообщений: 1,298
Вы сказали Спасибо: 280
Поблагодарили 638 раз(а) в 337 сообщениях
Сила репутации: 1Репутация: 604 
(луч света в тёмном царстве)
|
по адресу 0x136e264 начинается блок текста, перед ним, предположительно, лежит пачка указателей по 4 байта, теперь понять бы, откуда начинать отсчёт и какой размер всего этого блока (указатели + текст), тогда, по идее, можно было бы пересчитать начало строк после правки.
Пока не пойму, оно ли это...
Количество сообщений на форуме далеко не всегда пропорционально умственным способностям человека.
>>> Silent Hill: Genesis<<<
|
|
|
03.09.2016, 06:54
|
Сообщение: #10 (1105042)
|
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,672
Вы сказали Спасибо: 27,297
Поблагодарили 42,821 раз(а) в 12,237 сообщениях
Сила репутации: 10Репутация: 42016 
(репутация неоспорима)
|
Сообщение от lupus
по адресу 0x136e264 начинается блок текста
|
Что-то с первым ELF считал и со второго ELF считал, но никак не попал в начало текста.
Вообщем текст идёт блоками.
Каждый текстовой блок начинается с хедера 2D992982 и следом приклеивается следующий текстовой блок с таким же хедером, прямо после последнего слова в предыдущем блоке. И так далее.
Может пригодится... Если отрезать первый заголовок ELF, то в позициях: - 0x18 - записана позиция 012F1144 (без учёта размера заголовка) на начало блока системных модулей, начинающаяся с названия HotlineMiami2.
- 0х38 - размер заголовка.
- 0х44 - записан размер 01389E98 тела ELF-файла (без учёта заголовка) и заканчивается буквами DDDD.
- 0х58 - записана позиция 0138A080 (с учётом заголовка). Здесь лежит RAW-картинка(и) однозначно.
- В позиции 0х01395FC8 - записан хейдер PSP2 - видимо это какой-то файл.
А теперь ещё интереснее... - Если пройти в секцию HotlineMiami2, то сразу можно увидеть смещения 012F11A0, 012F11C0, 012F11D8, 012F1144 - это указатели на позиции модулей.
- А вот после FFFFFFFF, чуть далее идут немного по другому записанные смещения: 822F1A78, 822F1A88, 822F1A98, 822F1C00, 822F2148...
- То есть, можно заметить, что первая цифра адресации 01 сменилась на 82.
Поэтому, адрес позиции, скорее всего, записывается через 82, что и надо искать.
|
|
|
Этот пользователь сказал Спасибо ErikPshat за это полезное сообщение:
|
|
03.09.2016, 11:04
|
Сообщение: #11 (1105048)
|
Модель консоли: PSP-1004
Прошивка: 6.61 PROMOD-C2p
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,745
Вы сказали Спасибо: 819
Поблагодарили 3,857 раз(а) в 2,023 сообщениях
Сила репутации: 1Репутация: 3857 
(репутация неоспорима)
|
Сообщение от lupus
лежит пачка указателей по 4 байта
<…>
Пока не пойму, оно ли это...
|
Меняй значение на 1 в большую сторону, может строка со второй буквы начинаться будет?..
|
|
|
03.09.2016, 11:05
|
Сообщение: #12 (1105049)
|
Модель консоли: slim/lite
Прошивка: 6.60 ME
Другие консоли: N3DS + GW, NDSi, PSV WiFi
Регистрация: 27.11.2006
Адрес: vk.com/lupus_ua
Сообщений: 1,298
Вы сказали Спасибо: 280
Поблагодарили 638 раз(а) в 337 сообщениях
Сила репутации: 1Репутация: 604 
(луч света в тёмном царстве)
|
По разниуе смещений посчитать бы как-то. Руками муторно...
Количество сообщений на форуме далеко не всегда пропорционально умственным способностям человека.
>>> Silent Hill: Genesis<<<
|
|
|
04.09.2016, 23:17
|
Сообщение: #13 (1105100)
|
Модель консоли: slim/lite
Прошивка: 6.60 ME
Другие консоли: N3DS + GW, NDSi, PSV WiFi
Регистрация: 27.11.2006
Адрес: vk.com/lupus_ua
Сообщений: 1,298
Вы сказали Спасибо: 280
Поблагодарили 638 раз(а) в 337 сообщениях
Сила репутации: 1Репутация: 604 
(луч света в тёмном царстве)
|
Количество сообщений на форуме далеко не всегда пропорционально умственным способностям человека.
>>> Silent Hill: Genesis<<<
|
|
|
01.10.2016, 21:58
|
Сообщение: #14 (1105831)
|
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,672
Вы сказали Спасибо: 27,297
Поблагодарили 42,821 раз(а) в 12,237 сообщениях
Сила репутации: 10Репутация: 42016 
(репутация неоспорима)
|
|
|
|
02.10.2016, 03:18
|
Сообщение: #15 (1105842)
|
Модель консоли: slim/lite
Прошивка: 6.60 ME
Другие консоли: N3DS + GW, NDSi, PSV WiFi
Регистрация: 27.11.2006
Адрес: vk.com/lupus_ua
Сообщений: 1,298
Вы сказали Спасибо: 280
Поблагодарили 638 раз(а) в 337 сообщениях
Сила репутации: 1Репутация: 604 
(луч света в тёмном царстве)
|
Ещё не пробовал. Хочу другие проекты (перевод tales from space и перенос русика shovel knight) до ума довести, прежде чем здесь в дебри лезть.
Количество сообщений на форуме далеко не всегда пропорционально умственным способностям человека.
>>> Silent Hill: Genesis<<<
|
|
|
14.09.2018, 13:18
|
Сообщение: #16 (1152425)
|
Модель консоли: PSP-1004
Прошивка: 6.61 PROMOD-C2p
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,745
Вы сказали Спасибо: 819
Поблагодарили 3,857 раз(а) в 2,023 сообщениях
Сила репутации: 1Репутация: 3857 
(репутация неоспорима)
|
Последний раз редактировалось Yoti; 21.09.2018 в 02:33.
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 22:09. Часовой пояс GMT +3.
Powered by vBulletin® Version 3.8.7 Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.
|
|
|