Final Fantasy Hacktics

General => Archives => Old Project Ideas => Topic started by: LexSeifer on December 13, 2010, 02:02:10 pm

Title: Translation to Brazilian Portuguese
Post by: LexSeifer on December 13, 2010, 02:02:10 pm
There's lots of good romhackers comunities and foruns in Brazil, and there's some eforts to translate this game. But the great major ones are good enthusiast, with some lack in language knowledge and translation, resulting in great mistakes in grammar or semantics.

Me and my brother, and four more friends minor moders are wanting to reunite to translate this game to our language, in an organized way, and after some time we found that this comunity have great tools to help us in our efforts.

I wanted to know if tools like FFTacText is recomended to a project of translation, since there are some issues, like accented words/characters. Other doubt: one column in the application shows "width". This represents the maximum number of characters in that line?

We'll be gladly happier if you people answer our request, and we are translating based on the FFTactics complete patch.

thanks!!! :D
Title: Re: Translation to Brazilian Portuguese
Post by: ffta707 on December 13, 2010, 08:10:02 pm
FFTactext would translate the abilities, characters, weapons, items and things like that. You are going to need Xifanie's event compiler, and decompiler, which can be very hard to get right. It might be easier for translations though.
Title: Re: Translation to Brazilian Portuguese
Post by: LexSeifer on December 13, 2010, 09:37:05 pm
Ill will look for it, but might i ask you where to find this event compiler/decompiler?
Title: Re: Translation to Brazilian Portuguese
Post by: philsov on December 14, 2010, 06:23:59 pm
Quote from: "LexSeifer"Ill will look for it, but might i ask you where to find this event compiler/decompiler?

http://ffhacktics.com/downloads.php?id=9 (http://ffhacktics.com/downloads.php?id=9)
Title: Re: Translation to Brazilian Portuguese
Post by: LexSeifer on December 15, 2010, 03:01:21 pm
Thank you, philsov.

It's a great tool, and we have started our project.

There's only one problem, concerning the accented vowels, like "é" and "á", or the letters like "ç", that are used in our language. The only way to do that is by hex edit, or can i do with some graphic way?
Title: Re: Translation to Brazilian Portuguese
Post by: pokeytax on December 15, 2010, 03:18:11 pm
A topic on how to deal with this: FONT.BIN (help) (http://216.59.2.117/~zodiac/forum/viewtopic.php?f=3&t=2972&p=70608&hilit=portuguese&sid=8eedfe686d24fb4af7e3aa72b82e03c7&sid=8eedfe686d24fb4af7e3aa72b82e03c7#p70608)
Title: Re: Translation to Brazilian Portuguese
Post by: LexSeifer on December 16, 2010, 04:37:37 pm
i always got this mesage when i try to use Event Compiler:

"Access violation at address 00404752 in module 'Event_Compiler_2.01b.exe'. Read of address 102AFFF8."

what could it be?
Title: Re: Translation to Brazilian Portuguese
Post by: philsov on December 16, 2010, 04:40:38 pm
can you copy/paste your config.ini contents and your event.txt?  Please spoiler them.

edit:  config.ini should look something like this:

[Settings]

TESTEVT='TEST.EVT'
TEXTFILE='event.txt'
Offset='00004000'
MultiCompile=0
PSP=0
Rip=1
DisplayText=1
RawText=1
Popup=1
Multi=0
DisplayOffsets=0
OpenChar={
CloseChar=}
PreText=''
Help=1
Title: Re: Translation to Brazilian Portuguese
Post by: LexSeifer on December 17, 2010, 07:46:22 am
Here's my config:

[Settings]

TESTEVT='TEST.EVT'
TEXTFILE='event.txt'
Offset='00004000'
MultiCompile=0
PSP=0
Rip=1
DisplayText=1
RawText=1
Popup=1
Multi=0
DisplayOffsets=0
OpenChar={
CloseChar=}
PreText=''
Help=1

And my "event.txt":

// __________________________________________________________________
//| Event Script x002 | Event Offset: x004000 | Text offset: x0048F9 |
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Offset(x00004000)
//Remove the previous line if you wish not to override the offset in CONFIG.INI.
Text(x000008F9)
//Remove the previous line if you wish text to compile directly after instructions.

{7C}()
LoadEVTCHR(x01,x00,x00)
WaitForInstruction(x34,x00)
SaveEVTCHR(x01)
{6D}(r0000)
WarpUnit(x02,x00,001,003,x00,x03)
WarpUnit(x17,x00,001,004,x00,x03)
WarpUnit(x83,x00,001,005,x00,x03)
WarpUnit(x84,x00,001,004,x00,x03)
ColorUnit(x13,x00,x04,-001,-001,-001,000)
Wait(00002)
Camera(+02040,-00572,+00488,+00750,+03074,+00000,+08192,+00001)
WaitForInstruction(x04,x00)
UnitAnim(x34,x00,x02,x00,x00)
UnitAnim(x13,x00,x02,x00,x00)
Background(000,000,000,000,000,000,000,x00)
UnitAnim(x0C,x00,x58,x02,x01)
{4D}(r80)
ColorField(x04,-004,-004,-004,000)
ColorUnit(x00,x00,x04,-008,-008,-006,000)
{63}(rA8)
{1D}()
Camera(+01528,-00364,+00488,+00510,+03074,+00000,+05952,+00260)
Camera(+01448,-00328,+00488,+00350,+03202,+00000,+04128,+00080)
Camera(+01256,-00328,+00488,+00334,+03314,+00000,+04032,+00068)
Camera(+01000,-00280,+00496,+00318,+03442,+00000,+03808,+00056)
Camera(+00872,-00220,+00500,+00308,+03552,+00000,+04096,+00032)
Camera(+00840,-00220,+00504,+00302,+03584,+00000,+04096,+00048)
{1E}()
{49}()
{45}(r020001)
{45}(r170001)
{45}(r830001)
{45}(r800001)
{45}(r810001)
{4A}()
Wait(00180)
{1A}(r04141F1F04)
DisplayMessage(x10,x09,x0001,x0C,x00,x00,+00000,+00060,+00000,x00)
Wait(00086)
{1A}(r0400000004)
Wait(00148)
UnitAnim(x0C,x00,x59,x02,x01)
WaitForInstruction(x04,x00)
Camera(+00840,-00220,+00504,+00302,+03584,+00000,+04096,+00004)
WaitForInstruction(x04,x00)
WaitForInstruction(x01,x00)
Wait(00030)
ColorUnit(x00,x00,x04,+000,+000,+000,004)
ColorField(x04,+000,+000,+000,004)
Wait(00060)
DisplayMessage(x10,x12,x0002,x34,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
Wait(00030)
UnitAnim(x0C,x00,x5A,x02,x01)
Wait(00030)
DisplayMessage(x10,x91,x0003,x0C,x00,x00,+00000,+00000,+00008,x02)
WaitForInstruction(x01,x00)
CloseDialog(x01,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00050)
UnitAnim(x0C,x00,x59,x02,x01)
Wait(00070)
UnitAnim(x34,x00,x5B,x02,x00)
DisplayMessage(x10,x92,x0004,x34,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
UnitAnim(x34,x00,x5C,x02,x00)
CloseDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
UnitAnim(x13,x00,x03,x00,x00)
Wait(00016)
SpriteMove(x13,x00,+00028,+00000,+00000,x00,x01,+00040)
{6F}(r1300)
UnitAnim(x13,x00,x02,x00,x00)
Wait(00030)
DisplayMessage(x10,x92,x0005,x13,x00,x00,+00000,-00008,+00012,x02)
WaitForInstruction(x01,x00)
CloseDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00080)
{4B}()
{6D}(r0000)
ResetUnitColor(x02,x00)
ResetUnitColor(x17,x00)
Wait(00001)
ResetUnitColor(x80,x00)
ResetUnitColor(x81,x00)
ResetUnitColor(x83,x00)
Sound(x0048)
Wait(00010)
UnitAnim(x34,x00,x02,x00,x00)
RotateUnit(x34,x00,x04,x02,x01,000)
Wait(00020)
RotateUnit(x13,x00,x02,x01,x00,000)
{63}(rCA)
Camera(+00616,-00220,+00504,+00302,+04432,+00000,+04096,+00064)
BlockStart()
ColorUnit(x17,x00,x01,+000,+000,+000,000)
UnitAnim(x17,x00,x03,x00,x00)
SpriteMove(x17,x00,-00028,+00000,+00000,x00,x01,+00001)
{6F}(r1700)
Draw(x17,x00)
ColorUnit(x17,x00,x08,+000,+000,+000,002)
Wait(00017)
SpriteMove(x17,x00,+00000,+00000,+00000,x00,x01,+00028)
{6F}(r1700)
WalkTo(x17,x00,003,004,x00,x00,+008,x00)
WaitWalk(x17,x00)
UnitAnim(x17,x00,x02,x00,x00)
BlockEnd()
BlockStart()
Wait(00020)
ColorUnit(x02,x00,x01,+000,+000,+000,000)
SpriteMove(x02,x00,-00028,+00000,+00000,x00,x01,+00001)
{6F}(r0200)
ColorUnit(x02,x00,x08,+000,+000,+000,002)
Wait(00017)
Draw(x02,x00)
SpriteMove(x02,x00,+00000,+00000,+00000,x00,x01,+00028)
{6F}(r0200)
WalkTo(x02,x00,002,003,x00,x00,+008,x01)
MovementAnim(r02000200)
BlockEnd()
BlockStart()
Wait(00040)
ColorUnit(x83,x00,x01,+000,+000,+000,000)
SpriteMove(x83,x00,-00028,+00000,+00000,x00,x01,+00001)
{6F}(r8300)
ColorUnit(x83,x00,x08,+000,+000,+000,002)
Wait(00017)
Draw(x83,x00)
SpriteMove(x83,x00,-00014,+00000,+00000,x00,x01,+00028)
{6F}(r8300)
WalkTo(x83,x00,002,005,x00,x00,+005,x01)
MovementAnim(r83000200)
WaitWalk(x83,x00)
BlockEnd()
Wait(00020)
UnitAnim(x0C,x00,x5D,x02,x00)
Wait(00014)
UnitAnim(x0C,x00,x5E,x02,x00)
WaitForInstruction(x08,x00)
{1C}(r02)
DisplayMessage(x10,x91,x0006,x17,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x92,x0007,x34,x00,x00,+00000,+00000,+00001,x00)
WaitForInstruction(x01,x00)
CloseDialog(x01,xFFFF,x00,x00)
Wait(00004)
CloseDialog(x02,xFFFF,x00,x00)
Wait(00010)
UnitAnim(x02,x00,x61,x02,x00)
Wait(00005)
UnitAnim(x83,x00,x63,x02,x00)
Wait(00025)
UnitAnim(x17,x00,x5F,x02,x00)
Wait(00025)
DisplayMessage(x10,x11,x0008,x17,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
Wait(00024)
DisplayMessage(x10,x92,x0009,x34,x00,x00,+00000,+00000,+00001,x00)
WaitForInstruction(x01,x00)
Wait(00005)
UnitAnim(x17,x00,x60,x02,x00)
Wait(00005)
DisplayMessage(x10,x91,x000A,x17,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
Wait(00003)
CloseDialog(x02,x000B,x00,x00)
WaitForInstruction(x01,x00)
CloseDialog(x02,xFFFF,x00,x00)
Wait(00003)
CloseDialog(x01,xFFFF,x00,x00)
Wait(00013)
UnitAnim(x0C,x00,x65,x02,x00)
Wait(00003)
UnitAnim(x0C,x00,x02,x00,x00)
Wait(00015)
DisplayMessage(x10,x11,x000C,x0C,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
Wait(00003)
UnitAnim(x02,x00,x62,x02,x00)
Wait(00003)
UnitAnim(x83,x00,x64,x02,x00)
{1C}(r01)
Camera(+00616,-00220,+00616,+00302,+04608,+00000,+04096,+00060)
Wait(00030)
WaitForInstruction(x04,x00)
UnitAnim(x34,x00,x02,x00,x00)
RotateUnit(x34,x00,x09,x01,x00,000)
Wait(00012)
UnitAnim(x13,x00,x02,x00,x00)
RotateUnit(x13,x00,x0D,x00,x00,000)
Wait(00030)
UnitAnim(x0C,x00,x02,x00,x00)
RotateUnit(x0C,x00,x04,x02,x00,000)
{64}(r0C00)
WalkTo(x0C,x00,006,004,x00,x00,+004,x00)
Wait(00075)
RotateUnit(x13,x00,x00,x00,x00,000)
WaitWalk(x0C,x00)
UnitAnim(x0C,x00,x02,x00,x00)
Wait(00008)
RotateUnit(x0C,x00,x08,x01,x00,000)
Wait(00030)
DisplayMessage(x10,x91,x000D,x13,x00,x00,+00026,+00014,+00000,x03)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x92,x000E,x0C,x00,x00,+00000,+00000,+00001,x03)
WaitForInstruction(x01,x00)
CloseDialog(x01,xFFFF,x00,x00)
Wait(00008)
CloseDialog(x02,xFFFF,x00,x00)
{49}()
{45}(r840001)
{4A}()
Wait(00070)
{4B}()
{6D}(r8400)
ResetUnitColor(x84,x00)
Wait(00001)
ColorUnit(x84,x00,x04,-001,-001,-001,000)
Wait(00002)
Sound(x0048)
ColorField(x04,+000,+002,+002,000)
Wait(00002)
ColorField(x04,+000,+001,+001,000)
Wait(00002)
UseFieldObject(x01,x00)
Wait(00006)
Sound(x0048)
ColorField(x04,+000,+000,+000,001)
Wait(00009)
BlockStart()
ColorUnit(x84,x00,x01,+000,+000,+000,000)
Wait(00002)
SpriteMove(x84,x00,-00030,+00000,+00000,x00,x01,+00001)
{6F}(r8400)
UnitAnim(x84,x00,x6A,x02,x00)
Draw(x84,x00)
ColorUnit(x84,x00,x08,+000,+000,+000,004)
SpriteMove(x84,x00,+00000,+00000,+00000,x02,x0E,+00046)
{6F}(r8400)
SpriteMove(x84,x00,+00024,+00000,+00000,x02,x0E,+00062)
{6F}(r8400)
SpriteMove(x84,x00,+00032,+00000,+00000,x01,x0C,+00026)
{6F}(r8400)
UnitAnim(x84,x00,x21,x00,x00)
Wait(00006)
Sound(x0028)
UnitAnim(x84,x00,x24,x00,x00)
BlockEnd()
Camera(+00440,-00204,+00600,+00302,+04608,+00000,+04096,+00064)
UnitAnim(x17,x00,x02,x00,x00)
RotateUnit(x17,x00,x00,x01,x00,000)
SpriteMove(x17,x00,-00014,+00000,+00034,x00,x01,+00040)
Wait(00010)
{60}(r001E)
FaceUnit(x84,x00,x0C,x00,x00,x00,x00)
RotateUnit(x13,x00,x04,x01,x01,000)
UnitAnim(x83,x00,x02,x00,x00)
RotateUnit(x83,x00,x00,x01,x00,000)
SpriteMove(x83,x00,-00014,+00000,+00022,x00,x01,+00032)
Wait(00010)
{8C}(r020006020000)
UnitAnim(x02,x00,x02,x00,x00)
SpriteMove(x02,x00,+00000,+00000,-00016,x00,x01,+00040)
RotateUnit(x34,x00,x04,x00,x01,000)
Wait(00022)
UnitAnim(x13,x00,x03,x00,x00)
SpriteMove(x13,x00,-00064,-00001,-00021,x02,x0C,+00100)
Wait(00040)
RotateUnit(x02,x00,x08,x00,x01,000)
{6F}(r1300)
UnitAnim(x13,x00,x67,x02,x00)
Sound(x0041)
Wait(00030)
Music(x01,+096,000)
Wait(00030)
DisplayMessage(x10,x91,x000F,x84,x00,x00,-00011,+00014,+00032,x12)
WaitForInstruction(x01,x00)
CloseDialog(x01,xFFFF,x00,x00)
DisplayMessage(x10,x12,x0010,x13,x00,x00,-00031,-00006,-00032,x00)
WaitForInstruction(x01,x00)
SpriteMove(x34,x00,+00000,+00000,+00000,x00,x01,+00001)
{6F}(r3400)
Wait(00010)
UnitAnim(x34,x00,x04,x00,x00)
Sound(x0030)
SpriteMove(x34,x00,-00012,-00002,+00001,x00,x01,+00008)
{6F}(r3400)
SpriteMove(x34,x00,-00025,+00000,+00002,x00,x01,+00008)
{6F}(r3400)
SpriteMove(x34,x00,-00039,-00002,+00003,x00,x01,+00007)
{6F}(r3400)
SpriteMove(x34,x00,-00054,+00000,+00004,x00,x01,+00007)
{6F}(r3400)
SpriteMove(x34,x00,-00070,-00003,+00006,x00,x01,+00006)
{6F}(r3400)
SpriteMove(x34,x00,-00086,+00000,+00008,x00,x01,+00006)
{6F}(r3400)
RotateUnit(x17,x00,x02,x00,x00,000)
RotateUnit(x02,x00,x04,x00,x01,000)
SpriteMove(x34,x00,-00102,-00003,+00009,x00,x01,+00006)
{6F}(r3400)
SpriteMove(x34,x00,-00118,+00000,+00010,x00,x01,+00006)
{6F}(r3400)
ColorUnit(x34,x00,x01,+000,+000,+000,002)
SpriteMove(x34,x00,-00134,-00004,+00010,x00,x01,+00006)
{6F}(r3400)
SpriteMove(x34,x00,-00150,+00000,+00012,x00,x01,+00006)
{6F}(r3400)
SpriteMove(x34,x00,-00166,+00000,+00012,x00,x01,+00006)
{6F}(r3400)
Erase(x34,x00)
Wait(00015)
ZERO(x0057)
ADD(x0057,x0000)
BlockStart()
{7E}(r57001C00)
RotateUnit(x02,x00,x08,x00,x00,000)
{7E}(r57001E00)
RotateUnit(x17,x00,x00,x00,x00,000)
BlockEnd()
DisplayMessage(x10,x91,x0011,x17,x00,x00,+00020,+00000,+00000,x00)
WaitForInstruction(x01,x00)
WaitForInstruction(x08,x00)
DisplayMessage(x10,x92,x0013,x02,x00,x00,+00000,+00000,-00006,x00)
WaitForInstruction(x01,x00)
CloseDialog(x01,x0014,x00,x00)
WaitForInstruction(x01,x00)
CloseDialog(x02,xFFFF,x00,x00)
Wait(00008)
CloseDialog(x01,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
RotateUnit(x17,x00,x04,x01,x01,001)
BlockStart()
SpriteMove(x17,x00,-00014,+00000,+00034,x00,x01,+00001)
{6F}(r1700)
UnitAnim(x17,x00,x03,x00,x00)
SpriteMove(x17,x00,-00057,+00000,+00012,x00,x01,+00040)
{6F}(r1700)
RotateUnit(x17,x00,x04,x01,x01,000)
UnitAnim(x17,x00,x03,x00,x00)
SpriteMove(x17,x00,-00090,+00000,-00008,x00,x01,+00040)
Wait(00020)
ColorUnit(x17,x00,x01,+000,+000,+000,002)
Wait(00021)
Erase(x17,x00)
BlockEnd()
BlockStart()
Wait(00060)
SpriteMove(x02,x00,+00000,+00000,-00016,x00,x01,+00001)
{6F}(r0200)
RotateUnit(x02,x00,x04,x02,x00,000)
{64}(r0200)
Wait(00020)
UnitAnim(x02,x00,x03,x00,x00)
SpriteMove(x02,x00,-00062,+00000,+00008,x00,x01,+00080)
Wait(00060)
ColorUnit(x02,x00,x01,+000,+000,+000,002)
Wait(00021)
Erase(x02,x00)
BlockEnd()
BlockStart()
Wait(00030)
UnitAnim(x83,x00,x03,x00,x00)
SpriteMove(x83,x00,-00031,+00000,-00006,x00,x01,+00060)
{6F}(r8300)
RotateUnit(x83,x00,x04,x00,x01,001)
SpriteMove(x83,x00,-00060,+00000,-00036,x00,x01,+00060)
Wait(00040)
ColorUnit(x83,x00,x01,+000,+000,+000,002)
Wait(00021)
Erase(x83,x00)
BlockEnd()
UnitAnim(x13,x00,x68,x02,x00)
Wait(00060)
WaitForInstruction(x08,x00)
RemoveUnit(x83,x00)
Wait(00002)
{49}()
{45}(r820001)
{82}()
{4A}()
Wait(00080)
DisplayMessage(x10,x11,x0012,x0C,x00,x00,+00003,+00000,-00002,x00)
WaitForInstruction(x01,x00)
Wait(00020)
{63}(rAA)
Camera(+00680,-00204,+00600,+00430,+04656,+00000,+02656,+00133)
Wait(00070)
ColorField(x00,-031,-031,+000,004)
ColorUnit(x00,x00,x00,-031,-031,+000,004)
Wait(00033)
ColorUnit(x00,x00,x00,-031,-031,-031,004)
ColorField(x00,-031,-031,-031,004)
Wait(00033)
RemoveUnit(x13,x00)
{4B}()
EventEnd()

//INSTRUCTION SECTION END -  TEXT START
//Message x01
{delay:05}Pai,{delay:0F} {delay:05}nao  abandona teus filhos rebeldes de Ivalice{br}
mas livrai-nos de nossos pecados, para que possamos conhecer a salvacao.{delay:3C}.{delay:01}{end}

//Message x02
{font:08}Cavaleira{br}
{font:00}Lady Ovelia, ja e hora.{end}

//Message x03
{font:08}Ovelia{br}
{font:00}Não vou demorar, Agrias.{end}

//Message x04
{font:08}Agrias{br}
{font:00}Vossa escolta ja chegou,{br}
Majestade.{end}

//Message x05
{font:08}Priest{br}
{font:00}Por favor, atenta-te as palavras da boa senhora, Alteza.{br}
Deves te apressar.{end}

I have made just a bit editing, to test.
Title: Re: Translation to Brazilian Portuguese
Post by: ffta707 on December 21, 2010, 07:21:26 pm
My best assumption would be the accented letter "a" at display message 03.