![]() |
Ответ: О переводах игр
хм, приспичило что-нибудь перевести.
скачал megaman x5, поставил Hex Workshop Hex Editor.потыкал все файлы у образа, ничего похожего на текст не обнаружил, сплошная абракадабра. я что-то не так делаю или текст там, как я где-то читал, закодирован и просто так его не достать? |
Ответ: О переводах игр
Ты выше почитай и тогда поймёшь, что перевод игры не такое уж и простое занятие. Сложность перевода зависит от игры (независимо от количества текста).
1. Надо вначале найти текст, его местонахождение не всегда очевидно, точнее почти всегда не очевидно, а иногда его и вовсе не найти. Текст может быть запакован, может быть в графике и тексте, а дальше уже от фантазии разработчиков зависит. Так чтобы текст был в знакомом всем формате почти не бывает. 2. Для большинства игр нужны уникальные распаковщики/запаковщики ресурсов игры, т.к текст, графика, видео не всегда лежит там где ей бы следовало лежать и выглядит не так, как следовало бы выглядеть. Иногда инструменты можно найти (редко и как правило для популярных игр над которыми уже прежде работали), но чаще их пишут сами хакеры. Соответственно, знание хакинга игр хотя бы начального уровня обязательно. 3. Чтобы русский был русским обычно надо ещё найти шрифт (или несколько шрифтов) игры и перерисовать на русские буквы алфавита. 4. Даже если ты найдёшь текст, то переводить его в Хекс-редакторе ты будешь до конца жизни, ещё и потомкам достанется. 5. Некоторые игры имеют привязку LBA (механизм адресации и доступа к блоку данных), где любые изменения и смещения в байт делают игру неработоспособной (игра будет зависать в проблемных местах, либо вообще не будет работать). 6. Перевод текста игры самое простое, а порой и приятное занятие, единственное, для него надо иметь свободное время, желание, знание языка оригинала игры, хорошо владеть родным языком, включая обороты речи и грамматику. |
Ответ: О переводах игр
Цитата:
Еще один способ: найди уже переведенную версию игры, либо другую локализацию (скажем, только Французскую, только Немецкую и т.д.), и сравни с оригинальной тем же HexCmp, например. Попробуй найти, в каких участках файла были внесены изменения и работай только с ними. Можно попробовать изменить байты на этих участках, а затем посмотреть изменилось ли чего в игре. Можно попробовать через HxD открыть процесс эмулятора в оперативной памяти и попробовать найти текст там. Если в оперативной памяти адекватные слова находятся, а просто в игровых файлах - нет, значит текст - закодирован и декодируется только при загрузке в ОЗУ. |
Ответ: О переводах игр
Цитата:
Пробовал забаговать шрифты с Save Stat'е - в игре они также изменились. Получается, что шрифты в нашем понимании используются, а текст - нет. |
Ответ: О переводах игр
Цитата:
|
Ответ: О переводах игр
Цитата:
Вообще, я нашел больше туториалов во-первых намного позже, когда ретрогейминг стал трендом, во вторых когда сам стал разбираться глубже и правильно гуглить вопросы. |
Ответ: О переводах игр
Цитата:
Цитата:
|
Ответ: О переводах игр
MFS, я думаю игры, где три строчки на вражьем языке, можно вообще не переводить :) Но насколько я помню в Мегамэне текста хватает, он же бормочет с персонажами и в начале игры и по ходу игры, сюжет есть, игра японского происхождения, а в играх японцы самые говорливые. Диалоги представлены всплывающими субтитрами в окне.
|
Ответ: О переводах игр
Цитата:
|
Ответ: О переводах игр
Кто-нибудь может помочь мне найти пойнтеры в EXE-шнике Looney Tunes Racing? Игру как-то между делом переводил, но там такая вещь: названия трасс на загрузочных экранах отличаются, в зависимости от того, из какого файла происходит переход. Например, если я запускаю трассу из меню (файл SHELL.DAT, пожатый Deflate'ом), то текст с названием трассы берется из SHELL.DAT, но если в режиме чемпионата после первой трассы загружается вторая, текст с названием трассы берется из EXE-шника (там уже сжатия нет). Плюс для некоторых слов (LAP) в EXE-шнике нет свободных байтов.
|
Ответ: О переводах игр
SlavaVlasov, так сам elf выложил бы
|
Ответ: О переводах игр
Цитата:
|
Ответ: О переводах игр
Чисто на глаз какой то блок поинтеров с адреса 0xa924
|
Ответ: О переводах игр
Цитата:
[h00] WELL DONE!.. [h0C] BAD LUCK.... [h18] TO CONTINUE. Высматриваю разницу между другими значениями, но совпадений не нахожу. UPD: Обнаружил, что там два текстовых блока: один - на 0x7858, второй - на 0xB22D0. В первом обнаружил интересную закономерность: большинство строк имеют размер C (если считать вместе с нулевыми байтами). Во втором блоке размер коротких строк - 4, средних - 8 (тоже с нулевыми байтами). |
Ответ: О переводах игр
SlavaVlasov, в исполняемом файле поинтеры могут идти где угодно и как угодно, могут повторяться по 10 раз. совсем не обязательно они идут по порядку, я бы даже сказал что в большинстве случаев они идут не по порядку.
искать их конечно надо не в самом файле, а в дампе памяти, а потом уже смотреть где они находятся в файле. я бы тебе помог, но совсем нет времени. |
Ответ: О переводах игр
Цитата:
|
Ответ: О переводах игр
Небольшое отступление: выяснил, что файл титров в игре (0004901f.dat, извлекаемый из сжатого SHELL.DAT) не должен превышать исходный размер - 6 834 байта (1AB2), иначе игра перестает отображать титры. И это не смотря на то, что даже оригинальный файл после повторного сжатия имеет меньший размер структуры данных.
|
Ответ: О переводах игр
SlavaVlasov, скорее всего где то есть поинтер указывающий на размер текстового блока. Часто такое бывает. Получается если после сжатия ориг файл меньшего размера и пашет, значит все манипуляции происходят в самом сжатом файле SHELL.DAT
|
Ответ: О переводах игр
Вложений: 1
Еще в SHELL.DAT обнаружил любопытные INI-файлы (пока не проверял, задействованы они в игре или нет), вроде:
Нажмите
[Desktop]
width = 320 height = 240 onBack = goBack [button] id = Background x = 0 y = 10 width = 320 height = 240 image = "MMLogo" at(5,5) plane(100) image = "trackBack1" at 0,0 tint(40,40,250) plane 3000 image = "trackBack2" at 64,0 tint(40,40,250) plane 3000 image = "trackBack3" at 128,0 tint(40,40,250) plane 3000 image = "trackBack4" at 192,0 tint(40,40,250) plane 3000 image = "trackBack5" at 256,0 tint(40,40,250) plane 3000 [button] id = Title x = 0 y = 10 width = 320 height = 240 text = string(PCHS) centered (200, 26) font(Big) color(10,130,200) bgcolor(0,0,210) plane(10) [button] id = player1Button x = 0 y = 90 width = 320 height = 40 hasfocus = yes focustype = highlight text = string(pOne) id (btnText) centered 192,0 font (Big) color (180,130,10) plane (50) onFocus = setIndex onFocusP = 1 action = loadscript aparam = CtrlCfg.afw onup = setfocus onupP = btnAccept ondown = setfocus ondownP = player2Button [button] id = player2Button x = 0 y = 120 width = 320 height = 40 focustype = highlight text = string(pTwo) id (btnText) centered 192,0 font (Big) color (180,130,10) plane (50) onFocus = setIndex onFocusP = 2 action = loadscript aparam = CtrlCfg.afw onup = setfocus onupP = player1Button ondown = setfocus ondownP = btnVib [button] id = btnVib x = 0 y = 150 width = 320 height = 40 focustype = highlight text = string(NULL) id (txt) centered 192,0 font (Big) color (180,130,10) plane (50) onFocus = setIndex onFocusP = 3 onup = setFocus onupP = player2Button ondown = setFocus ondownP = btnAccept onleft = ToggleVib onright = ToggleVib [button] id = btnAccept x = 0 y = 180 width = 320 height = 40 focustype = highlight text = string(Ok) id (txt) centered 192,0 font (Big) color (180,130,10) plane (50) action = Accept onFocus = setIndex onFocusP = 4 onup = setfocus onupP = btnVib ondown = setfocus ondownP = player1Button [button] id = btnOK x = 100 y = 70 focustype = highlight rect = coords(0,0,190,110) bgcolor(0,0,0) plane(20) blend(half) textWindow = string(null) id (txt) centered(95,20) font(Micro) color(180,130,10) plane(10) width(150) height(100) text = string(OK) centered(95,95) font(Big) color(180,130,10) plane(10) isVisible = no isModal = yes action = hidepopup [menu] id = popup item = btnOK (ewt) IMPORTANT! Leave this button here at the BOTTOM of the file. [button] id = dummy setValue = activeController, both Прикреплю на всякий случай архив с ними (может потом как-нибудь понадобится). |
Часовой пояс GMT +3, время: 19:58. |
Перевод: zCarot
Права | Copyright ©
© PSX Planet Community 2003-2024