ROM Hack [Translation] Ace Attorney Trilogy

Status
Not open for further replies.

onepiecefreak

Kuriimu 2 Developer
OP
Member
Joined
Aug 12, 2015
Messages
526
Trophies
0
XP
1,740
Country
Germany
Ace Attorney Trilogy
(English to spanish translation)

bd01fc10d8.png


Demo
This is the first patch of the game. It includes only the first case of the first game.

It's a xdelta patch included with the patcher:
https://drive.google.com/open?id=0B_1lyUjGUKi2Y3Q5NjhHS0pVS2s
Have Fun!

Join our Discord

The discord is no longer active, due to the project being completed. I do not have the final patch at hand, since I wasn't part of the project when it concluded. Therefore I can not share it here.


Information

Release: 09 Dec 2014
Genre: Adventure
Publisher: Capcom

Goal of the project
Our goal is it to translate the whole game from english to spanish. We want to translate all pictures, dialogues and sound effects.

Team

Leader: @mister_gamer
Programmer/Hacker: @onepiecefreak
Translation in general: CTPache, Teolicht, DaniFey, Angelo, Kamikaze11

Progress:

Hacking: 100%
Graphics: 40%
Text: 10%
Sound: 100%

Screenshots/Proof of concept:
The images are expired and no longer available.

Files and information
Filetree:
sound/
A folder which contains very clearly all the background music and sound effects. The voices are packed in the GS123.bcsar and the GS123.xml is used to map the data in the .bcsar. To extract and repack this Sound Archive use bcsar.py in our tools folder.

pack.dat

This file contains all files excluding sounds and music used by the game. Textures, animations, scripts, dialogues, fontsheets etc. The file itself is compressed with lz11.
pack.inc
This is the index for the pack.dat. This file contains 20 Byte of information for every file in the pack.dat.
  • first 4 Bytes: Contains the offset at which the lz11-compressed file begins in the pack.dat
  • second 4 Bytes: Is always 0 and maybe irrelevant for this game.
  • third 4 Bytes: The uncompressed size of the file in Bytes
  • fourth 4 Bytes: The compressed size of the file in Bytes
  • fifth 4 Bytes: The hash of the original file name. It's a custom hashing algorithm for this game. You can use it for example to switch japanese with english graphics. So you can have japanese textures but the text is in english.
Then there begins the next 20 bytes for the next file.
Until now we found these file types in the extracted pack.dat:
  • BCH: Contains textures. It includes a header with information for the file, a footer with unknown purpose and the texture itself compressed with 1 of 4 picture compressions. The 4 compressions are ETC1, ETC1A4, RGB565 and another unknown compression for the 3D evidences.
  • CFNT: These files are the font-sheets. As of now we can convert these fontsheets with an already written tool. A documentation and the tool to convert them can be found here: https://www.3dbrew.org/wiki/BCFNT
  • ANS: It seems like some kind of animation file. It's used to let a texture move on the screen. Examples for that are the "Objection", "Hold it", "Take that"-textures. They have one ANS-file set before them, with most of the same content, because they move nearly exactly the same on screen. We don't know if these files are compressed or not.
  • MCOL: A file found very rarely, but it exists. It's purpose and possible compression is unknown.
  • DLG: A file containing the dialogues.
  • All other files don't have a specific header. We assume that these files may contain scripts for both, japanese and english. But there is no need for understanding them.
  • 48.bin: This file is just empty. In compressed or decompressed state it's just 0's and it seems it has no purpose for now.

Tools
All tools we use can be found here:
https://mega.nz/#F!ZtJmXYzD!1XgA_iO4B6Tm2kef1kSUxQ
  • BchPngConv2.py: Can convert nearly every BCH file found in the pack.dat to an editable PNG and inject it back to it's original BCH file. It can convert all 4 used picture compressions.
  • etc1tool.exe: The main tool written in C++. It's used by the python scripts to compress raw pixels to BCH-data and to decompress BCH-data to raw pixels. It can de/compress ETC1 and ETC1A.
  • packTool.py: Can extract the pack.dat to all it's contents. After that it can repack all files to a new working pack.dat and pack.inc
  • dsdecmp.exe: A tool to de/compress the lz11-compression of the pack.dat files.
  • bffnt.py: A tool originally written by @ObsidianB and edited by @onepiecefreak . This tool is used to extract .cfnt files into a .json and a .png file and repack them back to a .cfnt.
  • dlgTool2.py: A tool that extracts a .dlg file into separate txt files to edit them. It can convert these files back to a new .dlg file.
  • dlgComp.exe: Used in dlgTool.py to compress the converted txt files with lz10.
  • bcsar.py: Used to extract and repack the .bcsar. It will create a bunch of binary files and .bcwav files. You can use the audacity version included in our tools folder to open bcwav files and to export other audio formats to bcwav.
  • codePatcher.py: Patches the uncompressed code.bin for better glyph widths in the universal font.

Requisites
In order to use the tools, you have to install the following:
  • Python 2.7 (not 3.0+)
  • Python Image Library 1.1.17
  • Python PNG Module (for bffnt.py)
  • .NET Framework 4.6.1+
  • Visual Studio 2015
  • Visual C++ Redistributable

Help needed

All dialogues, pictures and voices are no longer a problem. If there are any questions, don't hesitate to ask in this thread or with PM.
 
Last edited by onepiecefreak,

onepiecefreak

Kuriimu 2 Developer
OP
Member
Joined
Aug 12, 2015
Messages
526
Trophies
0
XP
1,740
Country
Germany
@Gurumeditation The game's main content is packed into 2 files, the pack.dat and pack.inc. In the pack.dat there are all these "BIN-Files". They are only named .bin because the purpose weren't clear. If you use the packTool.py mentioned in the thread you can extract the pack.dat and get all files from it.

@matheus abreu Does this program extract the dialogues as plain text, so that you can read and edit them? Or just as a .bin file? The repack part comes if we could edit the text successfully. Then I can write a tool for that.
 

Gurumeditation

Member
Newcomer
Joined
May 18, 2016
Messages
19
Trophies
0
Age
37
XP
776
Country
Gambia, The
3DS trilogy.

You can split bin files in more scripts and then convert they in .txt.

Nice to know.
The question I ask myself: Are the files identical with the dialog-files to the NDS Files? If yes,
it would be very simple to make the translation for the dialoges. But its only a dream. From the perspective of the developers i would have implemented this way to save money in the development.
 
Last edited by Gurumeditation,

onepiecefreak

Kuriimu 2 Developer
OP
Member
Joined
Aug 12, 2015
Messages
526
Trophies
0
XP
1,740
Country
Germany
As I can see it is indeed just the 3 games packed in this. The dialogue files are, as far as I can tell for now, very similar or maybe really the same. They seem the to use the same commands and mostly the same text. As well as the same encoding for the letters.
 

onepiecefreak

Kuriimu 2 Developer
OP
Member
Joined
Aug 12, 2015
Messages
526
Trophies
0
XP
1,740
Country
Germany
We now solved our last graphics problem. With that we're now able to edit everything needed in order to translate the game.
 

Asia81

Yuri Lover ~
Member
Joined
Nov 15, 2014
Messages
6,656
Trophies
3
Age
29
XP
3,495
Country
France
I'm interested in trying from English to French, thanks for translation hacking infos and tools.
Let's see
 

Asia81

Yuri Lover ~
Member
Joined
Nov 15, 2014
Messages
6,656
Trophies
3
Age
29
XP
3,495
Country
France
If there are any questions, don't hesitate to ask in this thread or with PM.
Ok so I have 1 ->
Code:
C:\Users\Asia81\Desktop\Test1\ExtractedRomFS>packTool.py -e pack.dat pack.inc
Extracting and decompressing files... 48/12942Traceback (most recent call last):
  File "C:\Users\Asia81\Desktop\Test1\ExtractedRomFS\packTool.py", line 152, in <module>
    pref = readu32(bin)
  File "C:\Users\Asia81\Desktop\Test1\ExtractedRomFS\packTool.py", line 24, in readu32
    return struct.unpack("<I",inF.read(4))[0]
struct.error: unpack requires a string argument of length 4

What is this error?
 
Status
Not open for further replies.

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    OctoAori20 @ OctoAori20: Nice nice-