News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Infrid

Pages: [1]
1
Help Wanted Ads / [Japanese Translator][PSX] Ace Combat 3
« on: May 29, 2018, 03:56:09 pm »
We are a group of enthusiasts attempting to translate the game Ace Combat 3
from Japanese to English, Spanish and Italian.

The game was released in Japan featuring a story, anime cutscenes and much
more. Due to budget constraints, what came out in the US and Europe arrived
without that story, and resembles an arcade game.

We've succeeded in hacking the game, understanding the internals and
editing the texts. We are also lucky: the text is displayed via images, so
basically any other language can join the project. It doesn't matter if you
are Russian, Chinese or German: You can translate the game without any
problems.

At the moment we are a group of 8 people with different tasks and also
different languages to work on. Spanish-speakers work on their version,
Italian members work on theirs, testers and hackers are helping with
technical matters.

Managing such project requires organisation. We are coordinating through
telegram, our code and working files are hosted on GitLab and we use the
issue tracker for managing problems in medium-long term.

We are looking for more members that could help us with this project,
especially a Japanese translator, we already have one but sometimes the
real life keep us busy and the project will suffer.

If you are a developer with romhacking knowledge, an Ace Combat fan, you
speak Japanese or you just want to join the project for any other reason,
write me a message.

We also have a website: http://ac3es.infrid.com/

The Italian team published a patch a while ago, and they are working on the
next version. You can find the RHDN project page here:
http://www.romhacking.net/translations/2948/

There is also a Facebook page for the Italian project:
https://www.facebook.com/ac3itaproject/


2
I updated the tool, now we can unpack/repack the ace.bpb and possibly create a toolkit for every version of the game. Header replacer is obsolete too since is now possible to edit a TIM header.

https://github.com/Infrid/ac3es-tools

3
we noticed the bin splitter can pack correctly only files with a size multiple of 4, I update ac3es tools for handling this type of files.

https://github.com/Infrid/ac3es-tools

Also the file list contains relative paths and if you don't have the list at all it can scan a directory.

4
Thanks for testing it, I had time to look up on a debugger and see why my compressor doesn't work with ulz0 and I just found out why!

The formats ulz0 and ulz1 are nearly identical in terms of compression ratio and file structure.

The difference is how the ulz0 is decompressed, the game decompress data until gets a flag with just zero bytes (r11 has to be 0x00000000), that's why it uses 31 bits for the flags, the last one is always 1 until we finish the process.

Ulz2 looks for file size instead, it decompress until the output is big enough. Both formats stores the decompressed file size into the header, I used that information when I decompress in my script. That's why I was able to decompress both formats.

I'll publish the fix soon, I don't know why they adopted two formats, maybe they came from different internal teams.

What method should you use? It's up to you, I consider ulz2 better, it uses all the flags and should produce a smaller ulz file.

Meanwhile if you used ulz2 instead of ulz0 and it's working, it's perfectly fine, you don't have to change anything.


5
You are not alone, we did some tests and we had the same issue but we found a workaround, I haven't had the time to run the debugger and see why the game crashes but I suspect it has to do with some compression optimisations or the flag storage format.

We found the bug only with ulz type 0, if you use type 2 everything should be fine, try it.

The compression algorithm is a bit naive, uses a lot of CPU power and it's quite slow but it works for now. I'll optimise it when it's stable because it's not efficient like the namco's one.

Let me know if you need something else.

6
thanks, I have another news

In the team nemo's patch the search functionality is broken, when you try to access those parts the game crashes.

For example, if you try to access to the search for the mission scylla and charybdis, using the last public English patch, the game crashes.

We fixed that part for the Italian translation and as you can see from the screenshot the game works. I would like to know if the team nemo already managed to fix those bugs.



There is still some text in Japanese too, did you already translate that by chance?

7
Thanks, I had some spare time and try to get the sector, with an hex editor that opens disks I can easy see the sector I am looking for. I also did a bit of math just to double check.

This special version of pcsx can set a breakpoint to any disc sectors, but for some reason the debugger is not fired when the game is supposed to read that part of the disc.

I have double check the correct sector

8
hello!

I am working on a fan translation for the game ace combat 3 and I would explain few issues and find the best solution with your help.

The game stores the text as images in TIM files and it's pretty easy to edit them, but those images are stored in a big container. The files involved are ACE.BPB for storing the actual files, aligned to the sector, and ACE.BPH for the information about the positions in the disk.

We have a tool that reads those 2 files and unpack the content, many files are compressed in a custom ulz format and I manage to work on those files. There is also a tool for pack and rebuild the BPB and BPH.

The TIMs are compressed in lz77 and I wrote a compressor/decompressor for that, the algorithm is working for me, at least the decompressor. I can see all the game content.

I would translate the game menu, there is a file for that compressed in ulz at some offset of ACE.BPB, with psxfin (maybe I should use no$psx) I set a breakpoint for write into the RAM at a specific address and I can see the decompressor algorithm working.

I edited the menu file, I compress it and build the BPB and BPH. The game crashes reading my changed file and I don't understand why, clearly it could be a problem of my compressor but I can't see the decompressor algorithm with the same breakpoint.

I looked inside the executable with a disassembler in order to find the uncompress routine but I cannot see the part where the game reads the ulz's header. I suspect I made a mistake there, in fact if I don't compress the file, the game reads it anyway (at cost of loading speed).

I read the docs on how the console is supposed to control the cd-rom, it stores some values in a memory address and fires an interrupt for reading a sector but I have few problems.

- Get the exact sector where my file is stored
- Set a breakpoint with the emulator

For the first, I could change the unpacker and have an idea where the file is store, but it doesn't seems a nice way to do it, do you know a better technique?

For the breakpoint, is there an emulator where I can set a breakpoint to a sector regardless the way how the psx read it? It could use few API calls and I would avoid to set a breakpoint to a DMA, I could need to investigate for other files in the feature and it would be nice to have a smoother workflow.

Thanks!

9
thanks for sharing your tools, in my spare time I made a real ulz compressor, is still not efficient as the namco's one but we'll get there soon.

https://github.com/Infrid/ac3es-tools

you need at least python 3.2

Bear in mind that even with the most efficient tool you won't get an ulz file that has the same filesize as the original. If you change something the compressor will produce a completely different file.

I tested against my own decompressor, when I have time I'll provide binaries (so you don't have to install python) and optimize the algorithm.

The compressor needs some parameter to compress files, those parameters are the ulz type and the compression level, you can get those information with the "info" command.

You can get information form iso and BPB files too, thanks to orientalcomputer_01 for that :)

10
I'd like to know the reason too please.

11
Hello,

I tried in the past to hack the game in order to retrieve the TIMs files, I realized some kind of compression algorithms was involved and checked with a debugger (it was based on some emulator, I don't remember now), put some breakpoint in memory and try to track the algorithm.

I was a boy and I didn't achieve anything, plus there was the university and personal commitments and in the end I haven't touch the game for a long time.

Now I see someone has managed to uncompress the data, edit and even insert the changed data.

I know it involved many hours of work.

I'd like to make the life more easy for other people who want to translate the game in their language, alas it's hard to be a good translator and a rom hacker.

I am a web developer and an idea come in my mind:

I could write a small web app for help to translate the game, a system will shows a list of TIMs (converted in png because firefox/chrome cannot read the TIM format), you click on it and a form will pop up for inserting the translated text by reading the image.

We can keep track of every changes in every language and then the website creates the patch following some steps:

- extract the file from the original ISO, we could do this step only once
- convert the TIMs to PNGs and show them online

[...] translators use the forms to edit and translate the text by reading the images.

- the system creates the translated PNGs like this one

- a script convert them in TIM again
- create a xdelta/ppf patch

This is just a convert but is not hard to create the web part, many frameworks today can help with that (I would use django by the way)

Dashman and EsperKnight made a great work, I'd like to know more, guys could you share show your discoveries? I am not asking to tell me every detail of your work, I'd like to read the source code of your tools.

It would be give me many aha-moments and it would help me with the web project.

D.O.Eraven showed me their workflow for the first Italian translation and the process is so tedious, too much time consuming and I would make life easier.

For example; why the untouched ACE.BPB contains less TIMs that the english patched version? what did you done to that file? :)

what do you think?

thanks

12
I'm start to think that the hashes on redump.org are wrong or incomplete, my copy of the game is the SLPS-02020-1 version and it has that hash.

13
Here the xdelta file, I' haven't played the game yet, so it isn't tested. My unpatched bin file was exactly 716.240.448 bytes, anyway here the hash of the patched and unpatched iso

30f7dce98b6901290cb26c9baf27268f ac3.bin
3be7f90699da1140b01d3c8c13fff209 ac3PATCHED.bin


Download
Mirror



Pages: [1]