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 - _Ombra_

Pages: [1] 2 3 4 5
FF7 Tools / Re: [1.5.1] Makou Reactor - a FF7 field editor
« on: 2013-01-20 01:59:12 »
I'm going nuts trying to compile it xD

While i try... what about mass import? Is it too much? :P

Btw, thanks for modifying the soft

FF7 Tools / Re: [1.5.1] Makou Reactor - a FF7 field editor
« on: 2013-01-19 21:13:48 »
What about a parameter switch? That way it won't affect how the program works

FF7 Tools / Re: [1.5.1] Makou Reactor - a FF7 field editor
« on: 2013-01-19 15:40:12 »
Here are a few from fship scene:

FF7 Tools / Re: [1.5.1] Makou Reactor - a FF7 field editor
« on: 2013-01-18 17:30:14 »
Hey myst6re,

i'm working on porting our translation of FF7 psx to the 2012 PC version but for some reason when i open the patched ISO or the FIELD folder but it doesn't work. all the translated fields just don't open, not even the preview of the bg.

Do you think you can look at it? Our patch for the us version is

Hope you can figure out what's wrong

BTW, if you try to open the FIELD folder directly from the CD it says nothing found... guess because the files are hidden. Just wanted to let you know but probably you know already :P

By looking a little harder at it...


0400 0000        // Numer of sections?
E803 0000 - 000003E8 // Incremental?
A089 0000 - 000089A0 // Size of Section EN
E903 0000 - 000003E9 // Incremental?
5691 0000 - 00009156 // Size of Section FR
EA03 0000 - 000003EA // Incremental?
A491 0000 - 000091A4 // Size of Section DE
EB03 0000 - 000003EB // Incremental?
3691 0000 - 00009136 // Size of Section ES

About each section i figured out how the text is organized and it starts at offset 0x5FE in the file (for the english part):

0x01 = Beginning of String/Type of String // Always 03?
0x04 = Size of String
0xXX = String // Translated string
0x02 = End of String/Type of String? // Always 08 00?
0x04 = Unknown // Always 00 00 00 06?
0x04 = Size of String
0xXX = String // Reference string
0x01 = End of String/Type of String? // Always 07?
0x04 = Size of String
0xXX = String //Screen where the text goes
0x01 = End of String/Type of String? // Always 01?

88 // Unknown
00 00 00 02 // Unknown

Now the pointers... can't figure them out

3C B864 18CA EF9C 95CD 211C BF60 A1BD DD42 // Unknown 17 bytes but always the same

00000F20 //Pointer to first line of text
0000055B //Unknown

0000174A //Unknown
0000055B //Unknown

00001775 //Unknown
0000055B //Unknown


Hey dziugo,

first of all sorry for posting here after so long but it is related to the same topic so opening a new post seemed redundant. I haven't been able to look at it further but i finally did so here it is:

FF7Launcher.exe contains the text in english which is supposed to use as a reference for translation. Once the EXE loads there is a routine that checks lang.dat for the language code and then it is supposed to load the text itself from strings.dat. Now here is an interesting fact. If the locale is set to ENG no matter what the text is loaded from the FF7Launcher itself instead of loading the strings for EN locale already inside strings.dat. As soon as you switch the locale to something else (fr, de, es) it loads the text from strings.dat the way it is supposed to be.

Now my objective is to add a check to the main routine for another language and include all the translated text to strings.dat but i can't figure out the format of it. The way the exe is structured looks like a "case" option (if en then, else if fr then...) so adding a check for another locale shouldn't be hard. Real problem is how to modify the strings.dat. Do you think you can look at it?

for example es locale in strings.dat starts at offset 0x01ACBC til EOF, problem is i can't figure out how the file reads each part and how it points to each string

Hey dziugo, i don't think that this is related but it has to do with the launcher. There is a file (lang.ini) with text strings for the launcher that includes almost all languages but for some reason even if i replace the whole english entry the text in the launcher is still in english almost if the text is hardcoded and not read from the text... do you think you can check that out to see what's going on? Even if you change the lang.dat to a code of a language that is not included in the game but is included in the launcher it won't change

Scripting and Reverse Engineering / Re: Mini-game Fixes
« on: 2012-08-28 17:49:03 »
DLPB, i meant compare it to the english one to understand how to expand it... if there is an easy way...

Scripting and Reverse Engineering / Re: Mini-game Fixes
« on: 2012-08-28 14:42:25 »
DLPB, we had the text locations figured out a long ago. It was freaking hard to find how it worked but we never got around to translate it in our work. What we did tough is use the spanish version of the exe for the italian translation which had longer text. You might want to poke around that to see how they implemented it. Just my 2 cents :P

Hey Aali,

i set up a mirror if you want to post it in the official thread: NONE

Done. Sorry about that. I was just trying to help  ;)

indrema... nice work. Just to let you know we used the 1.02 Spanish EXE as a base for our translation (you can notice by the fact that the submarine minigame wasn't translated and it's in Spanish).

It might be easier for you to integrate the patches knowing what you are dealing with but i guess that Aali's driver is not going to work because it checks the sum of the EXE.

Nice work nonetheless

Q-Gears / Re: What's left to be done?
« on: 2010-05-16 22:17:47 »
Hey Akari, long time no see! I can't believe you still have that tool :D Good to see it was helpful but i think it's a bit outdated. Somebody should step up and update it

Hey Aali,

you should create a hacked out or brand new version of FF7Config.exe which contains the third option to use your driver and takes care of modifying the registry based on the windows version, and maybe the possibility to set all extra options trough simple check marks or drop down menus inside it. And to make it perfect even autodetect older graphic cards and set the use_shaders option on know gfx that needs it, detect current resolution, wine and so on.

I know it sounds like a lot of work but that will make it the perfect driver. Easy and powerful. Just right for a 1.0 release (even with an installer) ;)

Almost forgot, it will solve the problem where FF7Config, if opened after the reg file is imported, will set the Driver value back to 1 and screw everything up :P

Aali, our team worked on the Italian translation of the game but we use a modified EXE from the spanish version. Since i know that your driver does checks on the executable, is there a way you could add those checks in the config file? let's say, a list of the various CRCs or whatever other check you do on them?

I know you don't want people to use nocd versions of the EXE so you could somehow check the specific offsets for the typical instructions and still be able to accept any other EXE.

Aali, backface culling is the term used in D3D and OpenGL since it's a technique similar to clipping. In 3D programs like 3dmax and blender they are called normals. In 3dmax you are able to see these normals and determine which side is facing the camera and drawn on screen. Like Blender, you are able to set the surface to be double sided... problem is, i don't know if current programs that convert models to P are able to recognize that option.

Your best bet is draw the same surface twice and put them as close as possible (but not too close or some "clipping" will occur)

If there is another way i hope somebody can help you since this is not the best solution.

The driver works beautifully. Never seen FF7 so smooth. I'm running on OpenGL 2.0 @ 1680x1050 with original aspect ratio.

Nope, we don't need to modify the 3D part of the game so we never looked into it. I guess is either the first compressed file on one of the others. That "scanlined" looking image i think is the background sky during the race.

I still can't find the index so if somebody still feels like he can help, you are welcome

We have done that already for our PC translation. We are porting it to PSX now so we need to be able to change the PSX version too


CHOCOBO.DAT is the same for NTSC and PAL-E versions

First file is LZS compressed. The size of it is the first 4 bytes of the file + 4. It ends at 0x0004C063

-GFX Automatic/Manual Sequence, Long race: from 0x04C800 to 0x055026 (1024x256, 4bpp)

palettes for Automatic starts at 0x10100 (65792, 32 bytes)
                 Manual starts at 0x10300 (66304, 32 bytes)

-GFX Automatic/Manual Sequence, Short race: from 0xx97000 to 0x09D6C9 (1024x256, 4bpp)

-GFX Race A CLASS, etc.: starts at 0x0C2000 ends at 0x0CF8ED (1536x256, 4bpp)

-GFX Race B Class: starts at 0x0D0000 ends at 0x0E2860 (1536x256, 4bpp)

-GFX Race C Class: starts at 0x0E3000 ends at 0x10409B (1536x256, 4bpp)

-GFX Race S Class: starts at 0x104800 ends at 0x119D59 (1536x256, 4bpp)

We where able to modify the graphics and luckily the new compressed files where smaller but we are still missing the index which might be inside CHOCOBO.BIN. If somebody is willing to explore it i'll appreciate it

Ok, 50 watches and no reply. Anyway, looks like they were compressed after all.

So far a member of our team managed to extract some of the graphics:

so far extracted in raw format. As soon as i can i'll post more info. If somebody knows a bit more about the structure of this file please feel free to post.

Hi guys,

i've been trying to understand how the chocobo mini game graphics are compressed in the PSX version of the game. For what i can tell, CHOCOBO.DAT contains the graphics but i can't seem to understand the file format. It looks different from all of the other formats in the game. One thing i can tell is that the file is not compressed, or at least that's what it looks like.

I hope somebody can help me shed some light on this mystery

This is a old ass post but i figured it's information that has never been posted. Quoting a PM from dziugo:

Text is coded into the exe, and it's not even in a data block, it's in code section. In assembly it looks like this:

Code: [Select]
00796347  |> 66:C705 908DE9>MOV WORD PTR DS:[E98D90],0FF90           ;  text1[0].posX = -112; // +320
00796350  |. 66:C705 928DE9>MOV WORD PTR DS:[E98D92],0FF70           ;  text1[0].posY = -144; // +270
00796359  |. 66:C705 948DE9>MOV WORD PTR DS:[E98D94],19              ;  text1[0].sizeX = 25;
00796362  |. 66:C705 968DE9>MOV WORD PTR DS:[E98D96],13              ;  text1[0].sizeY = 19;
0079636B  |. 66:C705 988DE9>MOV WORD PTR DS:[E98D98],0DF             ;  text1[0].srcX = 223;
00796374  |. 66:C705 9A8DE9>MOV WORD PTR DS:[E98D9A],0               ;  text1[0].srcY = 0;
0079637D  |. 66:C705 9C8DE9>MOV WORD PTR DS:[E98D9C],5               ;  text1[0].color = 5;
00796386  |. C705 A08DE900 >MOV DWORD PTR DS:[E98DA0],3C23D70A       ;  text1[0].fract = 0.01f;
00796390  |. 8B15 6891E900  MOV EDX,DWORD PTR DS:[E99168]
00796396  |. 8915 A48DE900  MOV DWORD PTR DS:[E98DA4],EDX            ;  text1[0].texta = texta_reference;
0079639C  |. A1 B485E900    MOV EAX,DWORD PTR DS:[E985B4]
007963A1  |. A3 A88DE900    MOV DWORD PTR DS:[E98DA8],EAX            ;  text1[0].textb = textb_reference;
007963A6  |. 8B0D 788BE900  MOV ECX,DWORD PTR DS:[E98B78]
007963AC  |. 890D AC8DE900  MOV DWORD PTR DS:[E98DAC],ECX            ;  text1[0].textc = textc_reference;
007963B2  |. 8B15 1C8BE900  MOV EDX,DWORD PTR DS:[E98B1C]
007963B8  |. 8915 B08DE900  MOV DWORD PTR DS:[E98DB0],EDX            ;  text1[0].textd = textd_reference;

Or in C-language:

Code: [Select]
// M:
text1[0].posX = -112; // +320
text1[0].posY = -144; // +270
text1[0].sizeX = 25; // width of the image to copy
text1[0].sizeY = 19; // height of the image to copy
text1[0].srcX = 223; // x-pos in the text.tim
text1[0].srcY = 0; // y-pos in the text.tim
text1[0].color = 5;
text1[0].fract = 0.01f;
text1[0].texta = texta_reference;
text1[0].textb = textb_reference;
text1[0].textc = textc_reference;
text1[0].textd = textd_reference;

Size is hardcoded in at least 2 places, each text has it's own display function  - for MISSIONINCOMPLETE it looks like this:

Code: [Select]
00791BD8  /$ 55             PUSH EBP                                 ;  void draw_text_MISSIONINCOMPLETE();
00791BEE  |> 837D FC 11      CMP DWORD PTR SS:[EBP-4],11             ;  // size of the text == 17

There are plenty of space for modifications since that's how the FF7 was compiled.


All of this is referring to the PC version of the game

Q-Gears / Re: First release of renewed QGears.
« on: 2008-01-08 12:42:48 »
Hey Akari, what about the change log or the version number? We all curious :P

Hey Kruci,

i haven't checked the forum in a while but i saw your priveta message and decided to take a look. Good one with the Chocobo Genders.

About the submarine text the only thing i'm sure of is that is in the EXE but i couldn't find the exact location/structure (and i got tired of searching) and that's about it. If you ask why am i so sure then just try to swap the original EXE with one from a foreign release (spanish, german or french). After a bit of replacing strings here and there you can anctually use them with the english data (and that's our dirty little secret reveald :P)

Hope you can find it.

Q-Gears / Re: Q-Gears 0.13
« on: 2007-05-20 17:37:06 »
amazizizing!!! Keep it up guys, can't wait to see more feature working and even better port our translation to the new improved engine :wink:

btw, i think that you should focus on a subprogram to extract and convert the content of the original cd/iso and work with that. I don't want you guys to get in trouble for including (C) material. For all unknown opcodes and files just "skip" temporarily the function until you guys add the routines.

FF7 Tools / Re: Highwind 1.15 - .net FF7 LGP-Editor
« on: 2007-05-20 14:11:48 »
Great man! It's nice to see that you are still working on this great program.

Btw, the window caption still says 1.13 and the link on the first page of the post is missing (and points to version 1.13)

Pages: [1] 2 3 4 5