Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - ReeDeR

Страницы: [1] 2 Далее
1
А как вместить столько букв?  :lol: Дигимонами проще называть. Да и вообще во всех фан сайтах люди дигимонами называют. Даже в вики так.
http://ru.digimon.wikia.com/wiki/%D0%94%D0%B8%D0%B3%D0%B8%D0%BC%D0%BE%D0%BD

2
Ого а тему то подняли! Выложу русифицированную титлу. ^_^

3
Если не переводить в ргб то и слои не станут доступны. Эффекты как делать? Я рисую в ргб режиме, готовые с картинки цвета использую. А потом как обратно перейти в режим индексированных цветов и подставить палитру оригинала.  И фотошоп подменит цвета. Поом сохранаешь в png и png вставляешь в tim.

4
Если бы он был нормальным, не было бы Tim2View.
Если нужно, именно в том формате, в котором оно хранится в тиме, или отдельном .clt, я могу сделать. Только цель? Всё равно фотошоп .clt не понимает.
Да clt не нужно наверно. Вот фотошоп act. понимает. Я просто с этими палитрами намучился. Не мог понять почему у меня картинки не отображаются или цвета кривятся. Потом понял что нужно при редактировании использовать ту палитру цветов те что идут в оригинальной картинке.  Может для разных игр по разному.

5
Ну да я фотошопом выдираю палитру из оригинала png. Можно и так конечно.

6
Сделайте позязя функцию выдирания палитры CLUT в отдельный файл. Вроде .clt или .alt. Чтобы можно было выдирать цвета из тим и вставлять эту палитру в фотошоп например.

7
Чтобы делать нормальный вывод текста нужно разбираться со скриптом.
Так это и есть скрипт.

Поинтеры на скрипт грузятся инструкцией I>800ee004 в регистр v0 из адреса в s0+2:
Затем поинтер v0 складывается с базовым адресом s1 инструкцией I>800ee00c, и в регистре v0 мы получаем реальный адрес скрипта.
Пример:
$8015abf4 базовый адрес для диалогов двух покемонов с которыми можно поговорить в начале игры:
Yuraman "OK, I'll explain to you the surrounding of this city."
Tanemon "Wold you like some Meat?"

Скрипт диалога Yuraman индексируется двумя байтами из адреса $8015ac20  =0x1620
Скрипт диалога Tanemon индексируется двумя байтами из адреса $8015ac1c  =0x0b68

Базовый адрес $8015abf4+0x1620  =реальный адрес скрипта $8015c214 Yuraman "OK, I'll explain to you the surrounding of this city."
Базовый адрес $8015abf4+0x0b68  =реальный адрес скрипта $8015b75c Tanemon "Wold you like some Meat?"

Чтобы отслеживать код загрузки поинтера, в дебаггере напротив "PC" впиши 800ee004 и нажми кнопку "set".

Сами поинтеры находятся в файле со скриптом.
Yuraman  $8015ac20 f$7782c  =0x1620
Tanemon  $8015ac1c f$77828  =0x0b68
$ - адрес поинтера на скрипт в оперативной памяти
f$ - адрес поинтера на скрипт в файле DG0.SCN.

Для проверки в файле DG0.SCN поменял поинтеры на скрипт местами.
Yuraman f$7782c =0x0b68
Tanemon f$77828 =0x1620
И покемоны поменялись диалогами.

Mr2,
В пух и прах :thumbup:

8

Пираты практически никогда не заморачивались и не копали глубоко. Если места для переведённого текста недостаточно было, то они либо впихивали как есть, либо урезали текст так,чтобы он влез в отведённое для него пространство (при этом теряя смысл и т.д.). Кудос так вообще ложил на всё. Ни палитра, ни форматирование текста, ни тем более поинтеры его не заботили.

А касаемо отсутствия поинтеров на определённые диалоги, то вспоминается ситуация с Vandal Hearts I, где диалоги сидели в отдельных файлах. Там реплики персонажей разделялись управляющими байтами, а сама игра ориентировалась лишь на их количество - то есть считала количество управляемых байтов и исходя из этого выводила нужный диалог. По мне, так очень толковый и удобный способ.

В дигимонах вроде всё сюжетные диалоги в одном файле. Но в этом файле не только диалоги. А даже некоторые действия, переходы между локациями  ,  движения персонажей. Т.е там все сценические действия которые проиходят в сюжете игры. Ну не зря у файла расширение SCN - SCENE.

9
Покопал я код, похоже нет в игре никаких поинтеров(в игровых диалогах), всё работает по скрипту.
Далее нужно изучать скрипт и эксперементировать. ReeDeR, в каком редакторе нормально отображается игровой текст?

Что значит нормально? В принципе в любом. Если в нем можно кодировку shift jis ставить. Или возьми редактор и вставь таблицу которую я кидал. Я вот использую редактор в CrystalTile2 , там и кодировка есть такая и таблицу можно вставить если надо.
Цитата
Покопал я код, похоже нет в игре никаких поинтеров(в игровых диалогах), всё работает по скрипту.
Мне на одном испанском форуме тоже так сказали. Текст имеет вид компилированного скрипта и поинтеры не легко найти. Перед каждым блоком теста идёт скрипт его видно.
Таблицу прикрепил если надо.

10
Поверь, есть много других интересных дел. :facepalm:
Я тебя не заставляю отрываться от любимых интересных дел. Отказал помощь ,спасибо. Просто я подумал что дойдём до конечного результата. :-\

11
Если тут почитаешь - будешь знать всё.
Вот тут кое что по русски.
А оно нам надо? :lol:
Мне его быстрей самому найти, чем писать 10 страниц на форуме. :cool:

Люди совсем обленились. Уже нажимать на кнопочки, лень. :lol:

12
Не имеет смыла дебажить код, если ты не знаешь инструкций R3000A.
Вся тема превратится в Санта Барбару. ;)
Да. Но тебе нужна не она, а инструкции перед ней, чтобы понять  как в v0 получился адрес 8015C104.
Ну вот теперь несколько знаю. В будущем может кому пригодится эта тема. ^_^

Добавлено позже:
Не имеет смыла дебажить код, если ты не знаешь инструкций R3000A.
Вся тема превратится в Санта Барбару. ;)
Да. Но тебе нужна не она, а инструкции перед ней, чтобы понять  как в v0 получился адрес 8015C104.

В общем суть поиска поинтеров через дебаггер я разжевал, а дальше эксперементы и подъём скила на новый уровень, удачи. :debile:
Погоди мы поитер то нашли? :blush:

13
Да, поинтер строки $8015C104 = "Have you heard?".
Ну вот.Поставил я бряк на V0=8015C104.  Теперь тут сработало на новой инструкции. Я такой еще не видел ^_^ 800ee5f0 ADDI v0,v0 0002 Я так понял она складывает 8015C104 +0002? и записывает это в 8013bf54. Да теперь по этому адресу адрес 80 15 C1 02.

14
А он не сработал. 80142bf4 это gp , v0 же не будет равен gp. :neznayu: V0  может равен 8015с104?

15

Указатель это полный адрес 0x8015c104, просто в дампе он перевёрнут. Читай про порядок байт.
А-а-а, вон оно чё. Тогда указатель строки будет 0x8015c104 а не 0x8015c108, как ты писал ранее " [1ba0] [1a00] Текст диалога",
перед строкой 4 командных байта. Теперь тебе нужно узнать кто пишет указатель в адрес $8013BF54, для этого ставим бряк:
write $адрес  =0x значение
write $8013BF54  =0x8015c104
Бряк сработает когда в наш адрес впишется поинтер строки, далее по коду отслеживаем откуда грузится поинтер перед записью.
В дампе что ты мне дал поинтер $8015c104 только один, скорее всего он создаётся а не копируется.

Тю блин точно. Это же адрес начала строки получился :wacko: Короче поставил я запись на чтение значения в адресе 8013BF54. Сработало на инструкции 800ee5f0 SW v0, 9360 (gp) .Инструкция Store word как работает?

Если поинтер создаётся значит его не существует в постоянном виде? И игра его создаёт сама находу? Это же капец :'(

16

Там то что ты искал. 0x04c11580 переворачиваем и получаем указатель который вызвал бряк 0x8015c104.(только у тебя там был $8015C108)
В любом случае, в дампе вобще нет строчки "Have you heard?".
По адресу $8015C108 какието другие данные.(.g.......@.......@)

Получается указатель в файле с диалогами указатель будет как с1 04? Ладно я завтра попроверяю всё это. А насчет строчки, ты таблицу то примени которую я вложил. Или поставь кодировку shift-jis , если есть в редакторе такая. И всё увидишь.

17
Посмотри по адресу $8013BF54, если там тоже нет поинтера выкладывай дамп "ram.bin".(делай его во время срабатывания бряка)
Перед дампом сделай папку "dump" в папке эмулятора.


По 8013BF54 чтото есть. Там значения меняются даже в зависимости от диалога но изменения их никак не отобразились в игре. :wall: Хотя может не то менял. Вот дамп

https://yadi.sk/d/mPwFmsdzhLQzz

18
Тебе нужен адрес первого байта строки в оперативной памяти. Бряк должен сработать в момент вывода диалога в игре.

Судя по скрину бряк сработал на инструкции I>8000f19d0.(адрес инструкции написан под колонкой CP0)
$8000f19d0 = LW v1, 9360(gp) ; инструкция грузит поинтер из адреса $8014BF54
$80142bf4+9360 = $8014BF54 ;адрес поинтера строки диалога в оперативной памяти.

По этому адресу в памяти 00 ff 00 00 07 и тд :-\

19
Хотя это не то. Твои указатели идут в самом начале файла. Посмотри, явно видна арифметическая прогрессия старших частей пойнтеров.
Очень рад что ты тоже взял лопату со мной копать :lol: Может ты видел что каждый диалоговой блок персонажей разделен в хексе кодом типо FE00 1900 0100 5000 1800 8A16 1900 1C00 5000. Так вот! В самом диске файлов DG несколько. Потому что игра мультиязыковая. Там еще французкий и испанский язык есть. Я сравнил эти байты с фр. версией и всё было одинаково кроме байтов 8A16. Я менял эти байты на другие с аналогичных блоков сверху и игра мне выдавала диалог другого перса! Но всеравно не понятно как игра выбирает какой именно диалог выдавать. Потому что эти диалоги выводятся в разное игровое время.

Ну и как их искать? Нулями корруптить?

20
Заставил я работать это дебаггер.  :) Шиндовс дофига защищается. Вот окно после брейка диалога.

8015с108 - это адрес первого символа в диалоге на диске. В окне регистров v0 80158408 - это адрес куда записывается в память отображаемый диалог, точнее это заголовок диалога, имя того кто говорит.  A0 80133a2b адрес хранения на диске имени того кто говорит. А еще в регистрах s0 80158458 - Это адрес записи самих слов диалога в памяти во время отображения его. КУда копать дальше? Если я введу в окне дизасамблера адрес первого символа строки 8015с108 то там высвечивается иструкция LB v0 8267 (t4). 8267 в иструкции я смотрю это сам код первого символа,в игре это буква H.  Что это может значить? :neznayu:

21

Работает он спокойно и на win 8.1 x64. Что-то у тебя там с системой. А дебаггер в PSX жутко неудобный и менее продвинутый.
У тебя он есть? Может скинешь архивчик?

22
Только с Digimon World PSX или с другими играми тоже?
В любом случае эмулятор модульный, пробуй другие плагины. Смени Internal HLE Bios на любой другой.По коду смотри откуда читается адрес первого символа строки.
Пример:
Бряк срабатывает на этой строчке кода.
LB v0, 0000(v1) ; v0 =первый символ строки, v1 =адрес первого символа строки.
Далее тебе нужно отлавливать загрузку поинтера в v1, она естественно идёт раньше загрузки самого символа строки.

Эмуль не работает. Видимо староват он. Может несовместимость, у меня w7x64. Биос сразу ставил нормальный а не хле.  С другими играми не пробывал. Другие то мне не нужны. Буду использвать pSX там есть дебаг хоть и не такой навороченный чтоли. Я помню что первая же интрукция у меня вылетает на NOP т.е там ничего.

23

А чего гадать то? Берёшь и проверяешь - ставишь брейк на чтение по предполагаемым адресам. Вариантов не много, так что быстро найдёшь с какого адреса стартует диалог.

Надо же всё так просто :lol: Делал такое. Пытался найти какието связи и чтото не получилось. Вот поставил бряк на чтение первого байта в диалоге.
Куда копать.


24
ReeDer, прикрепи файл с диалогами и английскую таблицу.
Вот посмотри. https://yadi.sk/d/SCqOmMj2hGkBB

Добавлено позже:
Тут можно немножко почитать.pcsx 1.5 with debugger

Кстати не могу заставить его работать. Все плагины засунул в него ,настроил.Вылетает сразу при загрузке диска. Я нашел pSX 1.13 с r3000 деббагером. Этот вроде пашет.

25
Есть у кого идеи как может работать игровой скрипт в диалогах? Какие указатели выводят текст. Нужно изменить диалоговое пространство. Но изменяя длину слов увеличится длина диалога и стартовые коды диалогов сместятся и не будут работать.  Скрипт диалога выглядит так

 [1ba0] [1a00] Текст диалога [0d00] Текст в новой строке [0d00] [0000]

1ba0 - это код названия диалога. В игре это выглядит как имя того кто говорит
1a00 - Это код СТАРТА диалога
0d00 - Это код переноса строки в диалоговом окне
0000 - Это код КОНЦА диалога.



Мне нужно найти указатель который даёт команду старту диалога. Например если я изменяю адрес расположения 1ba0 , то диалог просто не стартует. Т.е Диалог похоже начиннается именно с Названия персонажа диалога 1da0. С дебаггером много провозился но понял мало. :neznayu:



26
ReeDeR,
большие буквы - соседи "Ы" - местами перепутаны.
да :lol: И шрифт надо подправить. Но то всё фигня, надо разобраться с диалогами.

Добавлено позже:
Ставь бряк на чтение поинтера "only if read" =0x80046855.
Или анализируй код чтения строки, тогда поймёшь откуда берутся поинтеры. Код отлавливай по чтению первого символа строки "MemRead" =0x80046855.


Ты можешь подробнее о бряках?Какой дебаггер использовать?Вот у уменя эмуль Psx 1.13 там есть отладчик вроде.

27
Отличная игра. когда был еще сопляком, проходил ее вместе с друзьями, фана было хоть отбавляй. Афтар, оч прошу, переводи лучше USA версию. Все-таки 50fps не тру.
Так же могу дать наводку на хакера, который разберет тебе игру под ключ. Только он за спасибо не работает. Обойдется в районе 4к. :)
Нет юса не катит.Там символов мало.В идеале вообще нужно японку переводить.

28
Он еще тут однажды засветился, кошмарище.
http://www.emu-land.net/forum/index.php/topic,65832.msg1044803.html#msg1044803
Да не надо мне показывать :) Я этот перевод знаю и проходил эту игру с этим переводом. Весьма забавный перевод на самом деле. Много улыбок доставили корявые словечки. Игра казалась сложная и я часто не знал куда идти и что делать.А всё потому что я просто не мог понять что мне говорят персонажи.Когда персонаж говорит чтото типо "ИД В К С ТАМ ТЫ НАЙД ЦВ " :lol: Вот я и решил исправить ситуацию.И как видишь менюшки я уже подправил.Так же переведены названия локаций ,Вещи ,дигимоны,техники.Дальше нужно браться за основное,диалоги то бишь.И тут проблемс.

29
Давно люблю эту игру.Но на неё нет нормального русского перевода. Тот что есть он от Кудос с кривыми шрифтами и абсолютным наплевательством на длину слов. Буквально там русские слова были написаны английскими буквами плюс умещали всё это в длину оригинального текста. Т.е пираты на поинтеры вообще забили.


 Дело в том что игры я никогда не переводил,но как то интересовался этим. Вообщем взялся за эту игру и кое что уже получается. Я узнал таблицу символов.Кодировка текста в игре использует Shift JIS японскую кодировку. Нашел и перерисовал шрифты под русский алфавит. И начал перевод с системных сообщений. И вот успехи.




 Узнал про смещения поинтеров. Гдето используются смещение A0000 гдето 90000. Например в названии техник 90000 а в названии локаций а0000. Я дампил память и вычитал разницу между файлом и памятью и легко находил поинтеры. Таблицы поинтеров во многих случаях видны не вооруженным глазом в хексе. Чтото типо 1234 FFFF 1234 FFFF 3455 FFFF и тд. Использовал Круптар для перевода.Устанавливал там область с поитерами и устанавливал смещения и Круптар легко выдирал тест из файла по поитером.Но тут я взялся за игровые диалоги персонажей. И тут возникли проблемы. Я знаю что диалоги лежал в одном файле DG0.SCN. Но у меня возникли проблемы с поиском поинтеров. Способ с вычитание разницы не сработал. Вот вижу эти диалоги в хексе по буквенно но поинтеры на него найти не могу. Хотя и есть чтото похожее на таблицу поинтеров,но смещения не работают.Вернее для одного диалога получилось правильное смещение и он отображается верно а другой диалог отображается не с начала,такое ощущение что разные смещения. Есть тут спецы которые могут описать процесс поиска поинтеров с помощью дебаггера например? А то не хотелось бы запнуться на диалогах и забрасывать игру. :neznayu:


30
HoRRoR Нужна твоя помощь. Как найти и рассчитать поинтеры в играх для гба (в именно в этой игре)? И еще у меня не получилось вместить в шрифт  все русские заглавные и строчные буквы . В шрифте вроде место есть, там нарисованы неиспользуемые символы , им присвоен код . Но видимо они как бы пустые , в игре при замене кода какой нибудь буквы на код этих символов они просто не отображаются. Зачем тогда они незнаю.

Страницы: [1] 2 Далее