Jump to content

Recommended Posts

  • Supporter
Posted
6 hours ago, CTHULHU said:

Hello everyone, I need help with unpacking localization files
BMS scripts do not help
The file format is unknown

translate_words_map_en.zip 15.18 MB · 3 downloads

I have uploaded the link to this file in discord, but I am dealing with the cn version. I downloaded your file and it should be similar. You can try this script. My script can only decompress and re-merge. I don’t know much about localization.

https://drive.google.com/file/d/1SgG59QqW4qTxM1m5W7HoKo3VeZ6mbyQZ/view?usp=sharing

Posted
22 hours ago, wq223 said:

I have uploaded the link to this file in discord, but I am dealing with the cn version. I downloaded your file and it should be similar. You can try this script. My script can only decompress and re-merge. I don’t know much about localization.

https://drive.google.com/file/d/1SgG59QqW4qTxM1m5W7HoKo3VeZ6mbyQZ/view?usp=sharing

hi sorry, new to these stuff, how do i use this? im trying to get a hold of the sound files of this game, its so epiccc like the sfx and music thanks for your help in advance!

Posted
On 11/18/2025 at 9:25 AM, wq223 said:

Tôi đã tải lên liên kết đến tệp này trong bất hòa, nhưng tôi đang xử lý phiên bản cn. Tôi đã tải xuống tệp của bạn và nó sẽ tương tự. Bạn có thể thử tập lệnh này. Tập lệnh của tôi chỉ có thể giải nén và hợp nhất lại. Tôi không biết nhiều về bản địa hóa.

https://drive.google.com/file/d/1SgG59QqW4qTxM1m5W7HoKo3VeZ6mbyQZ/view?usp=sharing

did you find the game .ttf font in any mpk file?

  • Supporter
Posted
19 minutes ago, unokiller said:

did you find the game .ttf font in any mpk file?

ttf fonts I think they should be in the engine folder, maybe not packaged

 

Posted
5 minutes ago, wq223 said:

ttf fonts I think they should be in the engine folder, maybe not packaged

 

<Root>
<!-- Usage domestic oversea oversea_en oversea_kr oversea_ja oversea_zh_tw... -->
<Font>
<!-- normal text, in China mainland -->
<Name>FZSKBXKJW.TTF</Name>
<File>FZSKBXKJW.TTF</File>
<Usage>domestic|oversea_zh_cn</Usage>
</Font>
<Font>
<!-- title text, in China mainland, plus HongKong/TaiWan -->
<Name>AaShiSongTi-2.ttf</Name>
<File>AaShiSongTi-2.ttf</File>
<Usage>domestic|oversea_zh_cn|oversea_zh_tw</Usage>
</Font>
<Font>
<!-- normal text (mobile), in China mainland -->
<Name>FZSKBXKJW_mobile.TTF</Name>
<File>FZSKBXKJW_mobile.TTF</File>
<Usage>domestic|oversea_zh_cn</Usage>
</Font>
<Font>
<!-- art text, in China mainland -->
<Name>ZHJB-Xiangjiahong.TTF</Name>
<File>ZHJB-Xiangjiahong.TTF</File>
<Usage>domestic|oversea_zh_cn</Usage>
</Font>
<Font>
<!-- ShouJinTi, another art text, in China mainland -->
<Name>ZH-cjxkt.ttf</Name>
<File>ZH-cjxkt.ttf</File>
<Usage>domestic|oversea_zh_cn</Usage>
</Font>
<Font>
<!-- numbers, in all regions -->
<Name>yyslsnumeral.ttf</Name>
<File>yyslsnumeral.ttf</File>
<Usage>domestic|oversea</Usage>
</Font>
<Font>
<!-- normal text, in HongKong/TaiWan -->
<Name>HanYiQuanTangShiS.ttf</Name>
<File>HanYiQuanTangShiS.ttf</File>
<Usage>oversea_zh_tw</Usage>
</Font>
<Font>
<!-- art text, in HongKong/TaiWan -->
<Name>ZHJB-Xiangjiahong_fanti.TTF</Name>
<File>ZHJB-Xiangjiahong_fanti.TTF</File>
<Usage>oversea_zh_tw</Usage>
</Font>
<Font>
<!-- title text, in Janan -->
<Name>FOTTsukuMinPr6-D.ttf</Name>
<File>FOTTsukuMinPr6-D.ttf</File>
<Usage>oversea_ja</Usage>
</Font>
<Font>
<!-- normal text, in Janan -->
<Name>FOTTsukuMinPr6-RB.ttf</Name>
<File>FOTTsukuMinPr6-RB.ttf</File>
<Usage>oversea_ja</Usage>
</Font>
<Font>
<!-- art text, in Janan -->
<Name>NEWRPGGAMEH72_ManyoGyoshoN-E.ttf</Name>
<File>NEWRPGGAMEH72_ManyoGyoshoN-E.ttf</File>
<Usage>oversea_ja</Usage>
</Font>
<Font>
<!-- title text, in Korea -->
<Name>SunBatang-Medium.ttf</Name>
<File>SunBatang-Medium.ttf</File>
<Usage>oversea_ko</Usage>
</Font>
<Font>
<!-- normal text, in Korea -->
<Name>SunBatang-Light.ttf</Name>
<File>SunBatang-Light.ttf</File>
<Usage>oversea_ko</Usage>
</Font>
<Font>
<!-- art text, in Korea -->
<Name>GowunBatang-Bold.ttf</Name>
<File>GowunBatang-Bold.ttf</File>
<Usage>oversea_ko</Usage>
</Font>
<Font>
<!-- title text, in Europe -->
<Name>AlegreyaSans-Medium.ttf</Name>
<File>AlegreyaSans-Medium.ttf</File>
<Usage>oversea_en|oversea_es|oversea_de|oversea_fr</Usage>
</Font>
<Font>
<!-- normal text, in Europe -->
<Name>AlegreyaSans-Regular.ttf</Name>
<File>AlegreyaSans-Regular.ttf</File>
<Usage>oversea_en|oversea_es|oversea_de|oversea_fr</Usage>
</Font>
<Font>
<!-- art text, in Europe -->
<Name>MrsEavSmaCap.ttf</Name>
<File>MrsEavSmaCap.ttf</File>
<Usage>oversea_en|oversea_es|oversea_de|oversea_fr</Usage>
</Font>
</Root>

I found the contents of a file like this when I extract resources.mpk

  • Supporter
Posted
6 minutes ago, unokiller said:
<Root>
<!-- Usage domestic oversea oversea_en oversea_kr oversea_ja oversea_zh_tw... -->
<Font>
<!-- normal text, in China mainland -->
<Name>FZSKBXKJW.TTF</Name>
<File>FZSKBXKJW.TTF</File>
<Usage>domestic|oversea_zh_cn</Usage>
</Font>
<Font>
<!-- title text, in China mainland, plus HongKong/TaiWan -->
<Name>AaShiSongTi-2.ttf</Name>
<File>AaShiSongTi-2.ttf</File>
<Usage>domestic|oversea_zh_cn|oversea_zh_tw</Usage>
</Font>
<Font>
<!-- normal text (mobile), in China mainland -->
<Name>FZSKBXKJW_mobile.TTF</Name>
<File>FZSKBXKJW_mobile.TTF</File>
<Usage>domestic|oversea_zh_cn</Usage>
</Font>
<Font>
<!-- art text, in China mainland -->
<Name>ZHJB-Xiangjiahong.TTF</Name>
<File>ZHJB-Xiangjiahong.TTF</File>
<Usage>domestic|oversea_zh_cn</Usage>
</Font>
<Font>
<!-- ShouJinTi, another art text, in China mainland -->
<Name>ZH-cjxkt.ttf</Name>
<File>ZH-cjxkt.ttf</File>
<Usage>domestic|oversea_zh_cn</Usage>
</Font>
<Font>
<!-- numbers, in all regions -->
<Name>yyslsnumeral.ttf</Name>
<File>yyslsnumeral.ttf</File>
<Usage>domestic|oversea</Usage>
</Font>
<Font>
<!-- normal text, in HongKong/TaiWan -->
<Name>HanYiQuanTangShiS.ttf</Name>
<File>HanYiQuanTangShiS.ttf</File>
<Usage>oversea_zh_tw</Usage>
</Font>
<Font>
<!-- art text, in HongKong/TaiWan -->
<Name>ZHJB-Xiangjiahong_fanti.TTF</Name>
<File>ZHJB-Xiangjiahong_fanti.TTF</File>
<Usage>oversea_zh_tw</Usage>
</Font>
<Font>
<!-- title text, in Janan -->
<Name>FOTTsukuMinPr6-D.ttf</Name>
<File>FOTTsukuMinPr6-D.ttf</File>
<Usage>oversea_ja</Usage>
</Font>
<Font>
<!-- normal text, in Janan -->
<Name>FOTTsukuMinPr6-RB.ttf</Name>
<File>FOTTsukuMinPr6-RB.ttf</File>
<Usage>oversea_ja</Usage>
</Font>
<Font>
<!-- art text, in Janan -->
<Name>NEWRPGGAMEH72_ManyoGyoshoN-E.ttf</Name>
<File>NEWRPGGAMEH72_ManyoGyoshoN-E.ttf</File>
<Usage>oversea_ja</Usage>
</Font>
<Font>
<!-- title text, in Korea -->
<Name>SunBatang-Medium.ttf</Name>
<File>SunBatang-Medium.ttf</File>
<Usage>oversea_ko</Usage>
</Font>
<Font>
<!-- normal text, in Korea -->
<Name>SunBatang-Light.ttf</Name>
<File>SunBatang-Light.ttf</File>
<Usage>oversea_ko</Usage>
</Font>
<Font>
<!-- art text, in Korea -->
<Name>GowunBatang-Bold.ttf</Name>
<File>GowunBatang-Bold.ttf</File>
<Usage>oversea_ko</Usage>
</Font>
<Font>
<!-- title text, in Europe -->
<Name>AlegreyaSans-Medium.ttf</Name>
<File>AlegreyaSans-Medium.ttf</File>
<Usage>oversea_en|oversea_es|oversea_de|oversea_fr</Usage>
</Font>
<Font>
<!-- normal text, in Europe -->
<Name>AlegreyaSans-Regular.ttf</Name>
<File>AlegreyaSans-Regular.ttf</File>
<Usage>oversea_en|oversea_es|oversea_de|oversea_fr</Usage>
</Font>
<Font>
<!-- art text, in Europe -->
<Name>MrsEavSmaCap.ttf</Name>
<File>MrsEavSmaCap.ttf</File>
<Usage>oversea_en|oversea_es|oversea_de|oversea_fr</Usage>
</Font>
</Root>

I found the contents of a file like this when I extract resources.mpk

Font files should have specific file headers, maybe look for

Posted
On 11/18/2025 at 9:25 AM, wq223 said:

I have uploaded the link to this file in discord, but I am dealing with the cn version. I downloaded your file and it should be similar. You can try this script. My script can only decompress and re-merge. I don’t know much about localization.

https://drive.google.com/file/d/1SgG59QqW4qTxM1m5W7HoKo3VeZ6mbyQZ/view?usp=sharing

thanks for the script, but seems like the output is not really usable at this stage

the text is kinda mess up (string get connected to each other with no delimiter or new line), and each of the .dat file got some unknown binary text as well (prob some kind of padding or header)

guess we need to research more on how to decompress these translation file

  • Supporter
Posted
2 hours ago, KenUaena said:

thanks for the script, but seems like the output is not really usable at this stage

the text is kinda mess up (string get connected to each other with no delimiter or new line), and each of the .dat file got some unknown binary text as well (prob some kind of padding or header)

guess we need to research more on how to decompress these translation file

Maybe some kind of custom serialization structure, in other games most use bindict, but this one doesn't look like it

Posted

Here my analysis:

Header: 24 bytes: [
  Int64 EntryCount
  Int64 ValueCount
  Int32 Timestamp
  Int32 Padding
]
Buckets: [24-528] bytes, based on allocated bucket
TableEntries: EntryCount * [
  8 Bytes Hash(or id?),
  Int32 RelativeOffset, (formula: text_start = current_entry_offset + 8 + value)
  Int32 TextLength
]
Values: ValueCount * [
  Byte[ValueLength] Data
]

Null value have zero length and no hash. Successfully unpack and pack, the game load new text normally.

  • Like 1
  • Supporter
Posted
1 hour ago, user854221 said:

Here my analysis:

Header: 24 bytes: [
  Int64 EntryCount
  Int64 ValueCount
  Int32 Timestamp
  Int32 Padding
]
Buckets: [24-528] bytes, based on allocated bucket
TableEntries: EntryCount * [
  8 Bytes Hash(or id?),
  Int32 RelativeOffset, (formula: text_start = current_entry_offset + 8 + value)
  Int32 TextLength
]
Values: ValueCount * [
  Byte[ValueLength] Data
]

Null value have zero length and no hash. Successfully unpack and pack, the game load new text normally.

A bit similar to bindict

Bindict also has a bucket part, and it is also 8 bytes

but they are

int32 hash

int32 value index offset

Posted
3 hours ago, user854221 said:

Here my analysis:

Header: 24 bytes: [
  Int64 EntryCount
  Int64 ValueCount
  Int32 Timestamp
  Int32 Padding
]
Buckets: [24-528] bytes, based on allocated bucket
TableEntries: EntryCount * [
  8 Bytes Hash(or id?),
  Int32 RelativeOffset, (formula: text_start = current_entry_offset + 8 + value)
  Int32 TextLength
]
Values: ValueCount * [
  Byte[ValueLength] Data
]

Null value have zero length and no hash. Successfully unpack and pack, the game load new text normally.

Did you succeed? any method?

Posted
16 hours ago, user854221 said:

Ecco la mia analisi:

Intestazione: 24 byte: [
  Int64 EntryCount
  Int64 ValueCount
  Int32 Timestamp
  Int32 Padding
]
Bucket: [24-528] byte, in base al bucket allocato
TableEntries: EntryCount * [
  8 Byte Hash(o id?),
  Int32 RelativeOffset, (formula: text_start = current_entry_offset + 8 + value)
  Int32 TextLength
]
Valori: ValueCount * [
  Byte[ValueLength] Data
]

I valori nulli hanno lunghezza zero e nessun hash. Una volta decompressi e compressi correttamente, il gioco carica normalmente il nuovo testo.

Were you able to create a script to extract and replace the text files?

Posted (edited)
2 hours ago, dest1yo said:

Thanks for some info from here and made a tool for unpacking and packing localize map files, if someone is interested in it.
https://github.com/dest1yo/wwm_utils

VirusTotal detected it as a Trojan

https://www.virustotal.com/gui/file/2b3a35a72096a0564c6f439fffed55449d7a366bb8d5094549b2f0d06d2de7a0/detection

Microsoft
Trojan:Script/Wacatac.B!ml

Edit: It is probably a false positive, since it is only detected by Microsoft.

Edited by Unlock777
Posted
2 minutes ago, Dipzzzy said:

btw
whats the different with this two file
translate_words_map_en & translate_words_map_en_diff

`diff` is a patch, basically used to update strings for the main one. I haven't compared in detail what aspects it typically modifies, but the structure is the same, you can unpack them to check. Theoretically, our tool should merge the two files into main one when packing and set the `diff` file as a default file that doesn't include entries, but I haven't started working on that yet. If it's one like `_cn` version, it's very suitable for direct editing.

Posted
3 minutes ago, dest1yo said:

`diff` is a patch, basically used to update strings for the main one. I haven't compared in detail what aspects it typically modifies, but the structure is the same, you can unpack them to check. Theoretically, our tool should merge the two files into main one when packing and set the `diff` file as a default file that doesn't include entries, but I haven't started working on that yet. If it's one like `_cn` version, it's very suitable for direct editing.

Also I guess it is easy to handle the merging for them, might check that at some point when I am free.

Posted
55 minutes ago, dest1yo said:

https://github.com/dest1yo/wwm_utils/issues/1
Reference for new people see this later

I updated the comment, writing that it is probably a false positive, so as not to cause alarm.
Can you tell me if it extracts the text files and packages them? 
(They should be: \Where Winds Meet\Package\HD\oversea\locale\translate_words_map_en and translate_words_map_en_diff)

Posted
42 minutes ago, Unlock777 said:

I updated the comment, writing that it is probably a false positive, so as not to cause alarm.
Can you tell me if it extracts the text files and packages them? 
(They should be: \Where Winds Meet\Package\HD\oversea\locale\translate_words_map_en and translate_words_map_en_diff)

Check README, it has the info

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...