Hyrule Warriors: Age of Calamity + HW: Definitive Edition
|
|
Anton | Дата: Понедельник, 07.12.2020, 20:48 | Сообщение # 1 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Выложу тут, что накопал в ресурсах этой игры и как это вскрыть.
Для начала, ссылки на тему.
Общая "вода": https://gbatemp.net/threads/age-of-calamity-modding-rnd.577536/ Там есть ссылка на набор утилит (касается, вроде, больше 3D-моделей): http://modderbase.com/showthread.php?tid=766
Утилиты для игр Koei Tecmo (игра сделана на этом движке) – Cethleann - The Koei Swiss Army Knife: https://forum.xentax.com/viewtopic.php?f=10&t=21679
---------------------------------
Эмулятором Yuzu можно сдампить из образа игры папку Romfs (все потроха). В ней, в romfs\data, лежат два файла — "LinkData.bin" и "LinkInfo.bin". В "LinkData.bin" находятся тексты и, возможно (?) шрифт и другая графика (?) Файл "LinkInfo.bin" - судя по всему, просто список контента (где что лежит в "LinkInfo.bin").
Для распаковки "LinkData.bin" прогой Cethleann нужно LinkInfo.bin переименовать в LinkData.idx (не спрашивайте, почему... Догадался, погуглив. Иначе прога ничего не распакует).
Синтаксис для распаковки вроде такой:
Код Cethleann.DataExporter.exe --game AgeOfCalamity --linkdata "H:\TRANSLATIONS_ZELDA\HW_Age_of_Calamity\_bin_extract" "H:\TRANSLATIONS_ZELDA\HW_Age_of_Calamity\01002B00111A2000\romfs\data" pause
Cethleann.DataExporter.exe --game [название] --linkdata [путь КУДА распаковывать] [путь ОТКУДА распаковывать]
Когда прога Cethleann.DataExporter отработает (с кучей красных ошибок в окне выполнения про overflow и т.п., но вроде бы все распакует), в целевой папке создастся папка "LinkData\misc", в которой будут еще две папки: "Formats" и "Unknown". Нас интересует "Unknown". Внутри лежат пронумерованные файлы .bin в количестве 2035 штук. =)
Английский текст в файлах (пока не всё):
7910.bin (основной сюжетный текст) 7940.bin (слово Tips) 7955.bin (название игры, копирайт) 8090.bin (предметы и их описание) 8035.bin (надписи интерфейса?) 8050.bin (слова ON и OFF)
В других языках найдены тексты с названиями атак, склонениями (типа: враги/врагов, рупия/рупий)... В английском это пока не найдено.
Файл с основным текстом имеет разные размеры. Английский, немецкий и нидерландский - весят примерно 606 Кб. Французский и итальянский - около 35. Это из-за того, что в первых трех интервал между указателями на текст 108 байт, а в остальных - 0.
Инфа для круптара (взлетело на версии 7.1.1.10) - английский скрипт, основной текст и предметы.
Kruptar 7.1.1.10
Main Text ------------------ text: 08F963-097F18 pointers: h160-h8F8F0 size: 4 interval: 108 PtReference: h160 auto_reference = true
Items Text: -------------------- text: 1292-773b pointers: h18-h128C size: 4 interval: 0 PtReference: h18 auto_reference = true
------------------------------ Кто-нибудь хочет переводить? =)
|
|
| |
timartinelli | Дата: Понедельник, 22.03.2021, 09:11 | Сообщение # 2 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| Olá Anton, nosso grupo do Brasil fará a tradução, vou tentar montar o projeto kruptar usando as configurações que você passou. você sabe se Hyrule Warriors: Definitive Edition é possível extrair os textos também?
|
|
| |
Anton | Дата: Понедельник, 22.03.2021, 09:31 | Сообщение # 3 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) Olá Anton, nosso grupo do Brasil fará a tradução, vou tentar montar o projeto kruptar usando as configurações que você passou. você sabe se Hyrule Warriors: Definitive Edition é possível extrair os textos também?
English, please.
|
|
| |
timartinelli | Дата: Понедельник, 22.03.2021, 12:33 | Сообщение # 4 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| Hello Anton, our group from Brazil will do the translation, I will try to set up the kruptar project using the settings you passed. do you know if Hyrule Warriors: Definitive Edition is possible to extract the texts too?
|
|
| |
timartinelli | Дата: Понедельник, 22.03.2021, 12:36 | Сообщение # 5 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| I managed to extract the texts, but I need to clean and the table I used was one of Zelda Oot, I need to adjust
|
|
| |
Anton | Дата: Понедельник, 22.03.2021, 13:03 | Сообщение # 6 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) I managed to extract the texts This is just a part of text, not all of it. As for Hyrule Warriors: Definitive Edition - I don't know, I don't have that game. Maybe it's engine is the same as HW:AoC (tons of .bin files, etc...)
The table file I used from Link's Awakening Switch, there are all characters (incl. european, russian, etc). (attached). But I did not find fonts for HW:AoC, so.... maybe LA's table is not completely correct (special codes are 100% incorrect for HW:AoC - those "0E00xxxxxx...", just remove them).
|
|
| |
timartinelli | Дата: Понедельник, 22.03.2021, 13:22 | Сообщение # 7 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| Anton, is this blanket that is empty normal?
Can I delete the entry in List Pointers?
did you repackage the .bin to find out if it works?
Сообщение отредактировал timartinelli - Понедельник, 22.03.2021, 13:23 |
|
| |
Anton | Дата: Понедельник, 22.03.2021, 13:50 | Сообщение # 8 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) Anton, is this blanket that is empty normal?
Yes, just blank space (maybe for future text update).
Цитата timartinelli ( ) Can I delete the entry in List Pointers?
In theory - yes, but better just leave it as is.
Цитата timartinelli ( ) did you repackage the .bin to find out if it works? No. )
I don't translate this game, just tried to see the texts... for bare interest.
|
|
| |
timartinelli | Дата: Понедельник, 22.03.2021, 13:52 | Сообщение # 9 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| Ok.
I understand, some of those that are blank mainly in 8090.bin, not all texts are coming.
Добавлено (22.03.2021, 14:25) --------------------------------------------- I was doing the wrong thing. now I must make it.
Добавлено (22.03.2021, 14:37) --------------------------------------------- This is a sad one.
Добавлено (22.03.2021, 15:25) --------------------------------------------- I'm looking for how to repack to test the translation.
Сообщение отредактировал timartinelli - Понедельник, 22.03.2021, 14:38 |
|
| |
Anton | Дата: Понедельник, 22.03.2021, 15:45 | Сообщение # 10 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) This is a sad one. just remove 3 bytes from text ) or expand text range (if there is a free space in .bin) also check in Kruptar ptSeek Same = TRUE.
in 8090 there are lot of free space (00's at the end)
BTW, I don't have this error in project that you're attached above and in 8090, too.
|
|
| |
timartinelli | Дата: Понедельник, 22.03.2021, 15:48 | Сообщение # 11 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| I think I understand, I'm not good with Kruptar, my projects must be strange. Добавлено (22.03.2021, 15:50) --------------------------------------------- ptSeek Same = TRUE - seems to solve.
|
|
| |
Anton | Дата: Понедельник, 22.03.2021, 16:26 | Сообщение # 12 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) ptSeek Same = TRUE - seems to solve. it combines equal strings to one, and their pointers now points to this one string. some kind of optimisation, which gives you more space for text if there are equal strings.
|
|
| |
timartinelli | Дата: Понедельник, 22.03.2021, 16:41 | Сообщение # 13 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| really cool, I didn't understand that.
|
|
| |
Anton | Дата: Понедельник, 22.03.2021, 16:50 | Сообщение # 14 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) really cool, I didn't understand that. https://romhack.github.io/doc/kruptarPlugins/ some info in English.
ptSeekSame: During insertion, same strings will have the same pointer. No redundancy in text space.
|
|
| |
timartinelli | Дата: Понедельник, 22.03.2021, 17:06 | Сообщение # 15 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| I will look carefully.
|
|
| |
timartinelli | Дата: Вторник, 23.03.2021, 02:11 | Сообщение # 16 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| Anton, while looking for an option to repackage the .bin, I have this .bin that is not a compactor, he has more than one language.
is from Hyrule Warriors Definitive Edition msgdata.bin seems to have most of the texts. can perceive some parameter for editing the texts?
I also attached a template from the 010 editor, it has the addresses of the text files. any day will be welcome.
|
|
| |
timartinelli | Дата: Вторник, 23.03.2021, 15:24 | Сообщение # 17 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| I’m managing to get a part of the text, but I’m not sure what I’m doing.
|
|
| |
Anton | Дата: Вторник, 23.03.2021, 17:13 | Сообщение # 18 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| timartinelli, I fugured out pointers and I'll make projects for you, but later. msgdata is ready (but without some phrases like "Loading...", "PRESS START" etc - can't find pointers for that at all. Now doing project for MovieSubtitle.bin.
Just wait... ok?
|
|
| |
timartinelli | Дата: Вторник, 23.03.2021, 17:21 | Сообщение # 19 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| perfect Anton, take your time.
I updated the post to see that I am making my attempts at the kruptar. it is not very successful but I am learning.
Thank you so.
"Loading ...", "PRESS START" are graphics, I found them in a g1t file. I am testing how to edit.
|
|
| |
Anton | Дата: Вторник, 23.03.2021, 19:01 | Сообщение # 20 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) "Loading ...", "PRESS START" are graphics
There are such texts in msgdata.bin. Just search on HEX-editor. Maybe they're not used, who knows...
Some info (but I'll send you projects later):
Код msgdata.bin (1 byte text encoding) UTF8.tbl / plugin: NULL.kpl ==================================
group 1: ----------- text: 918A8-92983
pointers: h91718-h918A4 ptReference=h91718 size=4 interval=0 multiply=2 big_endian=false
group 2: ----------- text: 92B28-93C03
pointers: h92998-h92B24 ptReference=h92998 size=4 interval=0 multiply=2 big_endian=false
group 3: ----------- text: 93D58-9466F
pointers: h93C18-h93D54 ptReference=h93C18 size=4 interval=0 multiply=2 big_endian=false
group 4: ----------- text: 949A4-9555B
pointers: h94684-h949A0 ptReference=h94684 size=4 interval=0 multiply=2 big_endian=false
group 5: ----------- text: 97668-B4303
pointers: h95570-h97664 ptReference=h95570 size=4 interval=0 multiply=2 big_endian=false
group 6: ----------- text: C1C14-DD46F
pointers: hB4318-hC1C10 ptReference=hB4318 size=4 interval=0 multiply=2 big_endian=false
group 7: ---------------- text: EDE68-101623
pointers: hDD488-hEDE64 ptReference=hDD488 size=4 interval=0 multiply=2 big_endian=false
/////////////////////////////////////////////////////////////
msgdata.bin (2 byte text encoding) UTF16.tbl / plugin: Standart.kpl ==================================
group 1: ---------------- text: 1017D0-102FEF
pointers: h101638-h1017CC ptReference= h101638 size=4 interval=0 multiply=2 aligh=2 big_endian=false
group 2: ---------------- text: 354BB0-3563A9
pointers: h354A18-h354BAC ptReference=h354A18 size=4 interval=0 multiply=2 aligh=2 big_endian=false
Код MovieSubtitle.bin (1 byte text encoding) UTF8.tbl / plugin: NULL.kpl ==================================
group 1: ----------- text: 6C98-6F1F
pointers: h6C32-h6C94 ptReference=h6C28 size=4 interval=10 multiply=2 big_endian=false
group 2: ----------- text: 706C-752B
pointers: h6F42-h7068 ptReference=h6F38 size=4 interval=10 multiply=2 big_endian=false
group 3: ------------ text: 76E8-7987
pointers: h754E-h76E4 ptReference=h7544 size=4 interval=10 multiply=2 big_endian=false
group 4: ------------ text: 7A64-7B73
pointers: h79AA-h7A60 ptReference=h79A0 size=4 interval=10 multiply=2 big_endian=false
...more will be later.
|
|
| |
timartinelli | Дата: Вторник, 23.03.2021, 19:05 | Сообщение # 21 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| Great, see a texture edition still testing. Добавлено (23.03.2021, 20:31) --------------------------------------------- Anton, from what I saw has 2 times the text in English, must be European English and Amarican English. what we changed was the American one because it didn’t reflect the changes in the tests that I did.
or must be in that part msgdata.bin (2 byte text encoding) UTF16.tbl / plugin: Standart.kpl
|
|
| |
Anton | Дата: Вторник, 23.03.2021, 21:35 | Сообщение # 22 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Here's the projects. Based on English text.
https://we.tl/t-f6kydWfdRm (link will be active 7 days)
MovieSubtitle is unfinished (about 13 groups to do). VoiceMes/VoiceMesChange sems to have 1 or 2 groups, but I didn't started it yet.
Pointers in "MovieSubtitle.bin": Search for "XL.." (58 4C 13 00), this is the header for pointer tables in every file. (There are a lot of it, but see those which right before the [English]text block).
For "MovieSubtitle" - skip h20 bytes to the right (32 in decimal) from "XL" letters - here's your first 4-byte pointer. After h0A (10 bytes in decimal) - second one, and so on. Last pointer is just before text (but sometimes text may start from 00 (stop-byte -> empty string).
h20 bytes after "XL" = 1-st pointer (4 bytes). Then 10 byte interval, 2-nd pointer, 10 bytes interval - 3-rd pointer, etc.
To calculate pointer reference: "text start address" -minus- "reversed pointer VALUE" = ptReference. Example (group 08 in MovieSubtitle project): First pointer at A19E, it's VALUE = 05 01 00 00 Text starts at A2E4. A2E4-0150=A194 So, your ptReference=hA194.
|
|
| |
Anton | Дата: Вторник, 23.03.2021, 21:36 | Сообщение # 23 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) Anton, from what I saw has 2 times the text in English, must be European English and Amarican English. what we changed was the American one because it didn’t reflect the changes in the tests that I did. or must be in that part msgdata.bin (2 byte text encoding)
There are slight difference. I made both in Kruptar.
|
|
| |
timartinelli | Дата: Вторник, 23.03.2021, 21:48 | Сообщение # 24 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| thank you very much Anton, it is a delicate job I'm sorry for making you work. I will try to make the missing ones. and I share the result here.
|
|
| |
timartinelli | Дата: Вторник, 23.03.2021, 21:49 | Сообщение # 25 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| I am doing the accents of accents for Portuguese in the table.
|
|
| |
Anton | Дата: Вторник, 23.03.2021, 21:52 | Сообщение # 26 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) I am doing the accents of accents for Portuguese in the table. This should be 2 bytes encoding, no?
C3A1=á C3E7=ç C3A9=é
|
|
| |
timartinelli | Дата: Вторник, 23.03.2021, 21:56 | Сообщение # 27 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| I don't think so, see.
example:
original á = 00E1 improve E1
table UTF8 á = C3A1Добавлено (23.03.2021, 21:59) --------------------------------------------- I see in the source of the text in Italian
Сообщение отредактировал timartinelli - Вторник, 23.03.2021, 21:58 |
|
| |
Anton | Дата: Вторник, 23.03.2021, 22:04 | Сообщение # 28 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| E1 00 - it's LE (little endian) in this game.
I didn't see the font. Maybe it has all Unicode, so C3A1=á C3E7=ç C3A9=é makes sence.
Those values are from LA:Switch (but maybe romhacker didn't check the font file, I don't know). It sould be by order in font table.
Anyway, you should adjust your tables correctly, yeah.
|
|
| |
timartinelli | Дата: Вторник, 23.03.2021, 22:04 | Сообщение # 29 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| olha ... ignora os outros.
Vou acertar os que preciso. deve ser uma paz de espírito.
Сообщение отредактировал timartinelli - Вторник, 23.03.2021, 22:11 |
|
| |
Anton | Дата: Вторник, 23.03.2021, 22:07 | Сообщение # 30 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| still, it's E100, not 00E1. )
And could you please attach JPG, not PNG? Png's are too heavy in weight.
|
|
| |
timartinelli | Дата: Вторник, 23.03.2021, 22:11 | Сообщение # 31 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| I understood about LE.
oops I'm sorry. I'm going to delete some.
Добавлено (24.03.2021, 05:46) --------------------------------------------- Using your magic formula I'm getting it.
group 10: ------------ size 8C 00 text: A7B8-A89F
pointers: hA73A-hA7B8 ptReference = A7BC - 8C = hA730 size = 4 interval = 10 multiply = 2 big_endian = false
grupo 11 ---------------- text: A908-A9D3
pointers: hA8C2-hA908 ptReference= A90C - 54 = A8B8 size=4 interval=10 multiply=2 big_endian=false
grupo 12 ---------------- text: AAE0-AE07
pointers: hAA46-hAAE0 ptReference= AAE4 - a8 = AA3C size=4 interval=10 multiply=2 big_endian=false
Сообщение отредактировал timartinelli - Среда, 24.03.2021, 06:01 |
|
| |
Anton | Дата: Среда, 24.03.2021, 13:00 | Сообщение # 32 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) multiply=2 should be =1 figured that after recalculating pointers.
|
|
| |
timartinelli | Дата: Среда, 24.03.2021, 13:08 | Сообщение # 33 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| I did not understand. In which file?
Yesterday I did until 12 because it took me a while to get it myself. LOL
I will continue now.
|
|
| |
Anton | Дата: Среда, 24.03.2021, 13:59 | Сообщение # 34 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) In which file? everywhere, except this with 2 bytes encoding, I guess.
Here's all projects, just correct tables if needed and reload them into Kruptar. (Don't forget: Table 1 - reads text / Table 2 - inserts text). Enjoy.
|
|
| |
timartinelli | Дата: Среда, 24.03.2021, 14:22 | Сообщение # 35 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| perfect Anton.
Great job indeed.
|
|
| |
timartinelli | Дата: Четверг, 25.03.2021, 05:12 | Сообщение # 36 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| Anton, in that case why is 0A still in the text?Anton,
now Age of Calamity
in this case why is 0A still in the text?
I'm using the NULL.kpl plugin
|
|
| |
Anton | Дата: Четверг, 25.03.2021, 09:37 | Сообщение # 37 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) why is 0A still in the text? This is line break code.
Select project name and change kpFlags to h01:
|
|
| |
timartinelli | Дата: Четверг, 25.03.2021, 12:39 | Сообщение # 38 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| Perfect. Thanks, I'm managing to pack his files too, some still with Hex editing, but it seems to be a success. if you are going to translate and need help with that let me know. Добавлено (13.04.2021, 14:51) --------------------------------------------- Abount Age of Calamity
just for the sake of knowledge, I was able to find 311 text files in English.
I started to set up projects on the kruptar.
|
|
| |
Anton | Дата: Вторник, 13.04.2021, 20:43 | Сообщение # 39 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Цитата timartinelli ( ) 311 text files in English
Oh, no... Good luck. )
|
|
| |
timartinelli | Дата: Среда, 14.04.2021, 04:05 | Сообщение # 40 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| Thanks.
This file you could help me, in the pointers after 3 sequences of 4 bytes. I see the values 01 00 00 00.
it gets in the end, I don't get all the texts.
Сообщение отредактировал timartinelli - Среда, 14.04.2021, 04:13 |
|
| |
Anton | Дата: Среда, 14.04.2021, 19:10 | Сообщение # 41 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| timartinelli, sorry, I have no time for that now...
|
|
| |
timartinelli | Дата: Среда, 14.04.2021, 21:52 | Сообщение # 42 |
Кокири
Группа: Пользователи
Сообщений: 55
Статус: Оффлайн
| without problems Anton. I'm trying.
|
|
| |
SonicSlayer | Дата: Понедельник, 11.03.2024, 16:40 | Сообщение # 43 |
Миниш
Группа: Пользователи
Сообщений: 2
Статус: Оффлайн
| всем привет, знаю что не по теме форума, но возможно ли таким методом изменить текст в персона 5 страйкерс?
делаем руссификатор и последняя надежда на вас ребят)))
|
|
| |
Anton | Дата: Вторник, 12.03.2024, 10:02 | Сообщение # 44 |
Triforce keeper
Группа: Администраторы
Сообщений: 8932
Статус: Оффлайн
| Я давно переводами не занимаюсь, но, думаю, Круптар поможет. Изучайте руководство (на сайте есть), ищите шрифты, перерисовывайте их (если в оригинальном нет кириллицы), переводите... А лучше обратитесь с вопросами на шеф-нет, одна из немногих до сих пор активных групп переводчиков.
|
|
| |
SonicSlayer | Дата: Вторник, 12.03.2024, 14:07 | Сообщение # 45 |
Миниш
Группа: Пользователи
Сообщений: 2
Статус: Оффлайн
| Anton, окей, понял, спасибо большое!!
|
|
| |