December 27, 2025Dec 27 Localization Even after searching extensively, I couldn't find any game with the same format, or a program or script that would help with this. The game was released in 2004 for the original Xbox; the headers indicate that they are kinda like archives with connected files within inside. If anyone could help, I would appreciate it. i.zip m.zip
December 27, 2025Dec 27 3 hours ago, hohenheim said: Even after searching extensively, I couldn't find any game with the same format, or a program or script that would help with this. The game was released in 2004 for the original Xbox; the headers indicate that they are kinda like archives with connected files within inside. If anyone could help, I would appreciate it. i.zip 1.87 MB · 2 downloads m.zip 22.55 MB · 1 download Just a few initial observations: It's definitely encrypted. The file table and filenames from offset 0x18 are encrypted with the xor key "\xbc\x90\x91\x91", but then the files themslves seem to have a different xor key which varies per file.
December 27, 2025Dec 27 Author Localization 2 hours ago, DKDave said: Just a few initial observations: It's definitely encrypted. The file table and filenames from offset 0x18 are encrypted with the xor key "\xbc\x90\x91\x91", but then the files themslves seem to have a different xor key which varies per file. It seems that the "key" to this format, although it varies from file to file, maintains some consistency, such as being largely structured and repetitive. Perhaps the executable file contains some clues. analyzing it shows that the game uses DDS textures. I only have a prototype localization version with me, but it's very close to the final build, so it may help. default.zip
December 27, 2025Dec 27 I'm not 100% sure how to calculate the xor key for the actual files, but it seems as though there's some blank space at the end of each file where the key is clear, so I've made some assumptions - I haven't checked every single file, but it seems to work for most of them. This QuickBMS script should extract them. I've tested some of the meshes in Model Researcher and they seem ok. tenchu_con.zip
December 27, 2025Dec 27 Supporter Solution 9 hours ago, hohenheim said: It seems that the "key" to this format, although it varies from file to file, maintains some consistency, such as being largely structured and repetitive. Perhaps the executable file contains some clues. analyzing it shows that the game uses DDS textures. I only have a prototype localization version with me, but it's very close to the final build, so it may help. default.zip 1.67 MB · 0 downloads Thank you for the .exe, it was crucial to understand the how the game analyse and take the xor without guesses. Here what i find it. XOR 1: Container Decryption (The Header) function FUN_0001ee20 revealed the initialization logic. The Logic: The game reads the first 4 bytes of the m.con file. It calculates the bitwise NOT (~) of these 4 bytes to create the XOR key. It applies this key to the rest of the header to reveal the file table (offsets, sizes, and filenames). Formula: Decrypted_Byte = Encrypted_Byte ^ (~File_Header[0:4]) So, the XOR 1 is dynamic: XOR 2: File Content Decryption (The Data) Files typically end with Null Padding (00 00 00 00) for memory alignment. The Logic: Since 0x00 XOR Key = Key, the encrypted zeros at the end of the file explicitly reveal the key. Formula: Decrypted_Data = Encrypted_Data ^ (Last_4_Bytes_of_File) Good catch @DKDave attached .py TENCHU-XBOX-XOR.py
December 27, 2025Dec 27 I had a look at the meshes as well, just to make sure the decryption was working correctly. This is an initial attempt of BS00:
December 27, 2025Dec 27 Author Localization 3 minutes ago, DKDave said: I had a look at the meshes as well, just to make sure the decryption was working correctly. This is an initial attempt of BS00: Wow, it worked perfectly so far, thank you all! I thought it would be more of a headache than the compression of the PS2 version. But im glad i was wrong.
December 27, 2025Dec 27 Author Localization 25 minutes ago, DKDave said: I had a look at the meshes as well, just to make sure the decryption was working correctly. This is an initial attempt of BS00: Can you tell me what program you used to view the model?
December 27, 2025Dec 27 40 minutes ago, hohenheim said: Can you tell me what program you used to view the model? I used Noesis. This is my script so far. It doesn't process the textures in the file correctly, I just extracted them manually for testing. It should should the meshes correctly in the .s4 mesh files. tenchu_return_s4.zip
December 28, 2025Dec 28 Author Localization 5 hours ago, DKDave said: I used Noesis. This is my script so far. It doesn't process the textures in the file correctly, I just extracted them manually for testing. It should should the meshes correctly in the .s4 mesh files. tenchu_return_s4.zip 1.02 kB · 1 download The script doesn't seem to work with .s4, .msh, or .bgm files (supposedly 3D models). But I think ill open a thread in the correct topic (2D/3D models).
May 8May 8 Localization Added support for it in my extractor without the "guessing the key from padding" https://github.com/smiRaphi/UniPyX (https://github.com/smiRaphi/UniPyX/commit/04becc39f4b116f76c9f8b8640280fa85bf62c2a)
May 17May 17 I’ve read your message. I’m sorry, but since this post hasn’t received any replies in several months, I decided to message you privately. There are only S4 files here. Using Noesis to open them won’t display the textures. You said the texture data is in a folder, but I couldn’t find it. Please help me out. Thank you.
Create an account or sign in to comment