• Welcome to Final Fantasy Hacktics. Please login or sign up.
 

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 - Magic Gladii

1
Unfortunately, I'm not able to translate the rest of the Japanese dialog. At the moment, I'm kind of at a loss when it comes to the rest of the story-related text (Brave Story, Rumors, etc).

Everything I have re-written thus far (besides events) is related to the game's mechanics. Some of the game's help messages and explanations are.. less than helpful, and I personally don't think an exact translation is required here.

If anyone knows of the existence of accurate translations for the rest of the game's dialog, I would very much appreciate being made aware of them.
2
As of right now, I've kept most of the PSX character names. I really only changed the names of the Lucavi demons, following what is now the standard.

I've avoided using 'Aquilor' and 'Austeron' because they are not really a direct translation of 'Hokuten' and 'Nanten.' I've stuck with the original names here as well.

There definitely is no mention of any Knights of the Western Skies, but I don't recall any mention of the Knights of the Eastern Skies either... Or maybe there is in Rumours? I never really paid too much attention to them because some are... difficult... to read
3
I've already started working on this mod. You can find the WIP thread here: http://ffhacktics.com/smf/index.php?topic=11984.0

This mod has nothing to do with the WotL script. Its a completely separate translation of the original Japanese text. It can be found here: https://gamefaqs.gamespot.com/ps/197339-final-fantasy-tactics/faqs/48627
4
Oh... Agrias needed to hit 50% hp...

Well then... Resolved...
5

Offset(x0016C000)

{63}(rAA)
Focus(x1E,x00,x1E,x00,x00)
Camera(+17920,+00122,+31558,+00302,+03584,+00000,+04096,+00032)
WaitForInstruction(x04,x00)
Wait(00016)
InflictStatus(x1E,x00,x00,x01,x00)
WaitForInstruction(x43,x00)
FaceUnit(x11,x00,x1E,x00,x00,x01,x00)
WaitRotateUnit(x1E,x00)
Wait(00010)
DisplayMessage(x10,x70,x0001,x1E,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
InflictStatus(x11,x00,x00,x01,x00)
WaitForInstruction(x43,x00)
FaceUnit(x1E,x00,x11,x00,x00,x01,x00)
WaitRotateUnit(x11,x00)
Focus(x11,x00,x11,x00,x00)
Camera(+00000,+00000,+00256,+00302,+03584,+00000,+04096,+00032)
WaitForInstruction(x04,x00)
Wait(00010)
DisplayMessage(x10,x70,x0002,x11,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
Focus(x1E,x00,x1E,x00,x00)
Camera(+00002,-32751,+27136,+00302,+03584,+00000,+04096,+00032)
WaitForInstruction(x04,x00)
Wait(00010)
DisplayMessage(x10,x70,x0003,x1E,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
Focus(x11,x00,x11,x00,x00)
Camera(+03584,+00000,+04096,+00302,+03584,+00000,+04096,+00032)
WaitForInstruction(x04,x00)
Wait(00010)
DisplayMessage(x10,x70,x0004,x11,x00,x00,+00000,+00000,+00000,x01)
WaitForInstruction(x01,x00)
Wait(00010)
Focus(x69,x00,x69,x00,x00)
Camera(+00402,+04352,+01024,+00302,+03712,+00000,+04096,+00034)
RotateUnit(x1E,x00,x14,x00,x01,x00)
RotateUnit(x11,x00,x14,x00,x01,x00)
March(x00,x00,000)
ZERO(x007D)
ADD(x007D,x0001)
WaitForInstruction(x04,x00)
{63}(rA0)
EventEnd()

//INSTRUCTION SECTION END -  TEXT START
//Message x01
{font:08}Agrias{br}
{font:00}What you plan to do{br}
with the Princess!?{end}

//Message x02
{font:08}Gafgarion{br}
{font:00}My orders are to take{br}
Ovelia to Gallione.{br}
What Prince Larg has in{br}
mind for her after that{br}
is no business of mine!{end}

//Message x03
{font:08}Agrias{br}
{font:00}Ovelia is not a pawn in this mad{br}
game that the Princes play!{br}
Does it not shame you to be a cur{br}
of Dycedarg and Larg? Do dignity{br}
and honour mean nothing to you!?{end}

//Message x04
{font:08}Gafgarion{br}
{font:00}Ground to dust and abandoned{br}
to the wind, long ago...!{end}


What exactly triggers this event?

I can't seem to trigger this event at all. Agrias is present, and the event where Agrias, Gafgarion and Ramza talk does take place...
6
Help! / Re: Alazlam's Speech
May 15, 2018, 04:53:48 pm
It works perfectly, thanks!
7
Help! / Re: Alazlam's Speech
May 14, 2018, 09:45:52 pm
Thanks! I don't have enough time to use this now, but I should be able to within the next couple of days... hopefully. I'll post any questions I might have here.
8
Help! / Alazlam's Speech
May 14, 2018, 08:14:46 pm
Is it possible to edit how the game displays the fourth and fifth images from OPNTEX.BIN (Alazlam's speech) during the New Game opening sequence? I've made changes to the individual images and imported them to OPNTEX.BIN. However, these changes do not fit within the boundaries set by the game. They are not centered correctly, and some of the lines cut off too soon.

The only relevant information I've found so far is an outdated tutorial that shows how to edit the images. General forum searches don't return anything of value either.
9
Sure.

Quote from: XifanieDialog box sizes are based on future ChangeDialogs as well; the game scans for those to determine the max width needed, so if x0022 is too wide, x0022 being a ChangeDialog of x0020, then yeah, when x0020 tries to draw it won't work.


When I fixed the the line Xifanie referred to earlier, I missed a {br} tag and just didn't notice it, causing the above to take place.
10
Yes, I did. Still not working.

I checked that right before I opened the topic.

**Edit : I found the issue, resolved**
11
Sorry, guess I wasn't specific enough. My issue is that Message x20 isn't ever displayed.

I fixed the issue in Message x22 already in the most up to date version of the event.

I can't figure out why this line:
DisplayMessage(x10,x92,x0020,x30,x00,x00,+00000,+00000,+00000,x03)

doesn't actually display the message...
12
Here is the event as of right now:

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

{7C}()
Camera(+00504,-00268,+01400,+00446,+03744,+00000,+04096,+00001)
WaitForInstruction(x04,x00)
WarpUnit(x04,x00,007,002,x00,x00)
WarpUnit(x01,x00,006,002,x00,x00)
WarpUnit(x07,x00,007,001,x00,x02)
WarpUnit(x08,x00,004,012,x00,x00)
WarpUnit(x1C,x00,003,012,x00,x00)
WarpUnit(x30,x00,002,011,x00,x00)
LoadEVTCHR(x01,x06,x00)
{63}(rC9)
Reveal(060)
Camera(+00064,-00432,+00000,+00318,+03616,+00000,+04096,+00160)
Wait(00008)
BlockStart()
WalkTo(x04,x00,002,002,x00,x4C,+004,x01)
WalkToAnim(x04,x00,x0002)
WaitWalk(x04,x00)
Wait(00020)
RotateUnit(x04,x00,x0C,x01,x00,x00)
WaitRotateUnit(x04,x00)
BlockEnd()
BlockStart()
WalkTo(x01,x00,001,002,x00,x9C,+004,x01)
WalkToAnim(x01,x00,x0002)
WaitWalk(x01,x00)
Wait(00022)
RotateUnit(x01,x00,x0C,x02,x00,x00)
WaitRotateUnit(x01,x00)
BlockEnd()
WalkTo(x07,x00,004,002,x01,x80,+003,x01)
WalkToAnim(x07,x00,x0002)
Wait(00150)
WaitForInstruction(x34,x00)
SaveEVTCHR(x01)
Wait(00004)
AddUnitStart()
AddUnit(x08,x00,x01)
AddUnitEnd()
BlockStart()
Wait(00020)
UnitAnim(x07,x00,x0258,x00)
BlockEnd()
DisplayMessage(x10,x11,x0001,x07,x00,x00,+00000,+00000,+00006,x02)
WaitForInstruction(x01,x00)
{39}()
Wait(00030)
UnitAnim(x07,x00,x0002,x00)
Wait(00010)
RotateUnit(x07,x00,x00,x00,x00,x00)
WaitRotateUnit(x07,x00)
Wait(00040)
WaitAddUnitEnd()
AddUnitStart()
AddUnit(x1C,x00,x01)
AddUnit(x30,x00,x01)
AddUnitEnd()
BlockStart()
Wait(00020)
UnitAnim(x07,x00,x0259,x00)
BlockEnd()
DisplayMessage(x10,x11,x0002,x07,x00,x00,+00000,+00000,+00008,x02)
WaitForInstruction(x01,x00)
Wait(00030)
WarpUnit(x08,x00,002,001,x00,x00)
SpriteMove(x08,x00,+00056,-00038,+00025,x00,x01,+00001)
WaitSpriteMove(x08,x00)
EVTCHRPalette(x08,x00,x01,x02)
UnitAnim(x07,x00,x027C,x00)
Wait(00103)
UnitShadow(x08,x00,x01)
BlockStart()
Draw(x08,x00)
UnitAnim(x08,x00,x0282,x00)
SpriteMove(x08,x00,+00056,-00042,+00005,x00,x01,+00016)
WaitSpriteMove(x08,x00)
SpriteMove(x08,x00,+00056,-00021,-00015,x00,x01,+00016)
WaitSpriteMove(x08,x00)
SpriteMove(x08,x00,+00056,+00034,-00034,x03,x08,+00016)
WaitSpriteMove(x08,x00)
Sound(x0023)
UnitAnim(x08,x00,x0283,x00)
Wait(00004)
Sound(x0025)
UnitAnim(x08,x00,x0284,x00)
Wait(00008)
UnitAnim(x08,x00,x0285,x00)
Wait(00008)
BlockEnd()
WaitForInstruction(x08,x00)
Erase(x08,x00)
Wait(00130)
EVTCHRPalette(x08,x00,x01,x05)
SpriteMove(x08,x00,+00000,+00000,+00000,x00,x01,+00001)
WaitSpriteMove(x08,x00)
WarpUnit(x08,x00,004,012,x00,x00)
UnitShadow(x08,x00,x00)
UnitAnim(x07,x00,x0259,x00)
Wait(00030)
DisplayMessage(x10,x11,x0003,x07,x00,x00,+00000,+00000,+00008,x02)
WaitForInstruction(x01,x00)
Wait(00030)
UnitAnim(x07,x00,x0002,x00)
Wait(00012)
UnitAnim(x07,x00,x0258,x00)
Wait(00058)
ZERO(x0057)
ADD(x0057,x0000)
BlockStart()
WaitValue(x0057,x000A)
RotateUnit(x04,x00,x08,x00,x01,x00)
Wait(00008)
RotateUnit(x01,x00,x08,x00,x01,x00)
UnitAnim(x07,x00,x0002,x00)
Wait(00016)
RotateUnit(x07,x00,x08,x00,x00,x00)
BlockEnd()
DisplayMessage(x10,x92,x0004,x07,x00,x09,-00105,-00070,-00136,x11)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x92,x0005,x04,x00,x00,+00036,+00005,-00022,x11)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x92,x0006,x01,x00,x00,+00022,+00005,-00014,x11)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
WaitAddUnitEnd()
Draw(x08,x00)
Draw(x1C,x00)
Draw(x30,x00)
UnitAnim(x30,x00,x0002,x00)
UnitAnim(x1C,x00,x0002,x00)
UnitAnim(x08,x00,x0002,x00)
Wait(00020)
Camera(+00064,-00560,+00688,+00318,+03616,+00000,+04096,+00128)
UnitAnim(x30,x00,x027D,x00)
Wait(00072)
UnitAnim(x30,x00,x027D,x00)
Wait(00072)
UnitAnim(x30,x00,x027D,x00)
Wait(00100)
WalkTo(x30,x00,000,003,x00,x00,+010,x01)
WalkToAnim(x30,x00,x0002)
BlockStart()
Wait(00060)
WalkTo(x08,x00,001,004,x00,xB4,+005,x01)
WalkToAnim(x08,x00,x0002)
BlockEnd()
BlockStart()
Wait(00020)
WalkTo(x1C,x00,002,004,x00,x00,+006,x01)
WalkToAnim(x1C,x00,x0002)
WaitWalk(x1C,x00)
RotateUnit(x1C,x00,x02,x00,x01,x00)
WaitRotateUnit(x1C,x00)
BlockEnd()
BlockStart()
WalkTo(x07,x00,003,002,x00,x00,+006,x01)
WalkToAnim(x07,x00,x0002)
WaitWalk(x07,x00)
RotateUnit(x07,x00,x06,x00,x01,x00)
WaitRotateUnit(x07,x00)
BlockEnd()
Wait(00060)
{63}(rCA)
Camera(+00064,-00304,+00176,+00366,+03632,+00000,+04096,+00176)
WaitWalk(x30,x00)
RotateUnit(x04,x00,x06,x00,x01,x00)
RotateUnit(x30,x00,x0E,x00,x01,x00)
WaitRotateUnit(x30,x00)
LoadEVTCHR(x00,x15,x00)
WaitForInstruction(x34,x00)
SaveEVTCHR(x00)
WaitForInstruction(x04,x00)
DisplayMessage(x10,x12,x0007,x30,x00,x00,+00000,+00008,+00004,x03)
WaitForInstruction(x01,x00)
WaitForInstruction(x08,x00)
DisplayMessage(x10,x92,x0008,x01,x00,x00,+00024,+00000,-00016,x10)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x91,x0009,x08,x00,x00,+00000,+00000,-00006,x10)
WaitForInstruction(x01,x00)
ChangeDialog(x02,x000A,x00,x00)
WaitForInstruction(x01,x00)
ZERO(x0057)
ADD(x0057,x0000)
BlockStart()
WaitValue(x0057,x0029)
UnitAnim(x08,x00,x026D,x00)
Wait(00008)
UnitAnim(x08,x00,x026E,x00)
Wait(00016)
RotateUnit(x1C,x00,x00,x00,x01,x00)
WaitRotateUnit(x1C,x00)
BlockEnd()
ChangeDialog(x01,x000B,x00,x00)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
Wait(00008)
ChangeDialog(x01,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00008)
Camera(+00064,-00368,+00176,+00366,+03632,+00000,+04096,+00080)
UnitAnim(x08,x00,x026F,x00)
Wait(00006)
UnitAnim(x01,x00,x0278,x00)
Wait(00006)
UnitAnim(x30,x00,x026B,x00)
Wait(00008)
UnitAnim(x30,x00,x026C,x00)
Wait(00012)
RotateUnit(x04,x00,x08,x00,x01,x00)
WaitRotateUnit(x04,x00)
WaitForInstruction(x04,x00)
Wait(00012)
DisplayMessage(x10,x91,x000C,x1C,x00,x00,-00008,+00000,+00006,x10)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x92,x000D,x04,x00,x00,+00000,+00006,+00006,x10)
WaitForInstruction(x01,x00)
ChangeDialog(x01,x000E,x00,x00)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
Wait(00008)
ChangeDialog(x01,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00012)
UnitAnim(x08,x00,x026E,x00)
Wait(00004)
UnitAnim(x08,x00,x026D,x00)
Wait(00004)
UnitAnim(x08,x00,x0002,x00)
BlockStart()
Wait(00028)
UnitAnim(x01,x00,x0002,x00)
Wait(00004)
UnitAnim(x04,x00,x0209,x00)
RotateUnit(x1C,x00,x04,x00,x00,x00)
BlockEnd()
DisplayMessage(x10,x91,x000F,x08,x00,x00,+00000,-00004,-00010,x13)
WaitForInstruction(x01,x00)
WaitForInstruction(x08,x00)
DisplayMessage(x10,x92,x0010,x01,x00,x00,+00018,+00000,-00009,x10)
WaitForInstruction(x01,x00)
ChangeDialog(x01,xFFFF,x00,x00)
Wait(00008)
ChangeDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00008)
RotateUnit(x08,x00,x08,x00,x00,x00)
WaitRotateUnit(x08,x00)
Wait(00008)
UnitAnim(x08,x00,x027E,x00)
Wait(00068)
UnitAnim(x08,x00,x0002,x00)
Wait(00014)
WalkTo(x08,x00,001,006,x00,x00,+006,x01)
WalkToAnim(x08,x00,x0002)
WaitWalk(x08,x00)
Wait(00050)
RotateUnit(x1C,x00,x06,x00,x02,x00)
WaitRotateUnit(x1C,x00)
UnitAnimRotate(x30,x00,x0A,x0002,x00)
Wait(00008)
MirrorSprite(x30,x00,x01)
UnitAnim(x30,x00,x0277,x00)
Wait(00030)
UnitAnim(x08,x00,x0002,x00)
Wait(00008)
UnitAnim(x08,x00,x0274,x00)
Wait(00020)
DisplayMessage(x10,x91,x0011,x08,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x92,x0012,x07,x00,x00,+00024,+00004,-00021,x11)
WaitForInstruction(x01,x00)
ChangeDialog(x01,xFFFF,x00,x00)
Wait(00008)
ChangeDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00010)
UnitAnim(x08,x00,x0002,x00)
RotateUnit(x08,x00,x00,x02,x00,x00)
WaitRotateUnit(x08,x00)
Wait(00016)
DisplayMessage(x10,x91,x0013,x08,x00,x00,+00000,+00000,+00000,x02)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x92,x0014,x07,x00,x00,+00000,+00006,+00006,x11)
WaitForInstruction(x01,x00)
ChangeDialog(x01,xFFFF,x00,x00)
Wait(00008)
ChangeDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00020)
UnitAnim(x08,x00,x0276,x00)
Wait(00080)
UnitAnim(x08,x00,x0002,x00)
Wait(00008)
DisplayMessage(x10,x91,x0015,x08,x00,x00,+00000,+00000,+00000,x00)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x92,x0016,x01,x00,x00,+00024,+00000,-00014,x10)
WaitForInstruction(x01,x00)
ZERO(x0057)
ADD(x0057,x0000)
BlockStart()
WaitValue(x0057,x0025)
RotateUnit(x08,x00,x06,x00,x00,x00)
WaitRotateUnit(x08,x00)
BlockEnd()
ChangeDialog(x01,x0017,x00,x00)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
Wait(00008)
ChangeDialog(x01,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00020)
RotateUnit(x08,x00,x08,x00,x00,x00)
WaitRotateUnit(x08,x00)
Wait(00040)
BlockStart()
WalkTo(x08,x00,002,013,x00,x00,+006,x01)
WalkToAnim(x08,x00,x0002)
BlockEnd()
Wait(00064)
UnitAnim(x04,x00,x0002,x00)
Wait(00064)
BlockStart()
RotateUnit(x07,x00,x0C,x00,x00,x00)
WaitRotateUnit(x07,x00)
WalkTo(x07,x00,005,002,x00,x00,+004,x01)
WalkToAnim(x07,x00,x0002)
WaitWalk(x07,x00)
RotateUnit(x07,x00,x04,x00,x00,x00)
WaitRotateUnit(x07,x00)
BlockEnd()
BlockStart()
Wait(00020)
RotateUnit(x1C,x00,x00,x00,x00,x00)
WaitRotateUnit(x1C,x00)
BlockEnd()
DisplayMessage(x10,x92,x0018,x04,x00,x00,+00024,+00004,-00016,x13)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
Wait(00008)
UnitAnimRotate(x30,x00,x0A,x0002,x00)
Wait(00010)
UnitAnimRotate(x30,x00,x08,x0002,x00)
Wait(00008)
WalkTo(x04,x00,002,003,x00,x00,+006,x01)
WalkToAnim(x04,x00,x0002)
WaitWalk(x04,x00)
UnitAnim(x1C,x00,x01F4,x00)
Wait(00006)
UnitAnim(x1C,x00,x01F5,x00)
Wait(00008)
UnitAnim(x1C,x00,x01F6,x00)
Wait(00008)
UnitAnim(x1C,x00,x01F7,x00)
Wait(00006)
UnitAnim(x1C,x00,x01F8,x00)
Wait(00006)
UnitAnim(x1C,x00,x01F9,x00)
Wait(00008)
UnitAnim(x1C,x00,x01F8,x00)
Wait(00006)
UnitAnim(x1C,x00,x01FA,x00)
Wait(00010)
BlockStart()
UnitAnim(x1C,x00,x01F8,x00)
Wait(00006)
UnitAnim(x1C,x00,x01F9,x00)
Wait(00010)
UnitAnim(x1C,x00,x01F8,x00)
Wait(00006)
UnitAnim(x1C,x00,x01F7,x00)
Wait(00010)
UnitAnim(x1C,x00,x01F6,x00)
BlockEnd()
DisplayMessage(x10,x91,x0019,x1C,x00,x00,+00000,+00000,+00000,x10)
WaitForInstruction(x01,x00)
ChangeDialog(x01,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
WaitForInstruction(x08,x00)
Wait(00008)
WalkTo(x04,x00,002,003,x00,x00,+004,x01)
WalkToAnim(x04,x00,x0002)
WaitWalk(x04,x00)
SpriteMove(x1C,x00,+00000,+00000,-00004,x02,x0A,+00028)
SpriteMove(x04,x00,+00000,-00001,+00008,x02,x0A,+00028)
WaitSpriteMove(x04,x00)
Wait(00010)
SpriteMove(x04,x00,+00000,+00000,+00010,x02,x0A,+00001)
WaitSpriteMove(x04,x00)
UnitAnim(x1C,x00,x01FB,x00)
UnitAnim(x04,x00,x0204,x00)
Wait(00010)
SpriteMove(x1C,x00,+00000,+00002,-00007,x02,x0A,+00001)
WaitSpriteMove(x1C,x00)
UnitAnim(x1C,x00,x01FC,x00)
UnitAnim(x04,x00,x0205,x00)
Sound(x0041)
Wait(00008)
SpriteMove(x1C,x00,+00000,+00003,-00010,x02,x0A,+00001)
WaitSpriteMove(x1C,x00)
UnitAnim(x1C,x00,x01FD,x00)
UnitAnim(x04,x00,x0206,x00)
Wait(00008)
UnitAnim(x1C,x00,x01FE,x00)
UnitAnim(x04,x00,x0207,x00)
Wait(00030)
DisplayMessage(x10,x92,x001A,x04,x00,x00,+00024,+00004,-00016,x13)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00010)
UnitAnim(x1C,x00,x01FF,x00)
Wait(00010)
UnitAnim(x1C,x00,x01FE,x00)
Wait(00060)
UnitAnim(x04,x00,x0206,x00)
UnitAnim(x1C,x00,x01FD,x00)
Wait(00012)
SpriteMove(x1C,x00,+00000,+00002,-00008,x02,x0A,+00001)
WaitSpriteMove(x1C,x00)
UnitAnim(x1C,x00,x01FC,x00)
UnitAnim(x04,x00,x0205,x00)
Wait(00010)
SpriteMove(x04,x00,+00000,+00000,+00002,x02,x0A,+00006)
UnitAnim(x04,x00,x0204,x00)
SpriteMove(x1C,x00,+00000,+00000,-00002,x02,x0A,+00006)
UnitAnim(x1C,x00,x01FB,x00)
Wait(00010)
SpriteMove(x1C,x00,+00000,+00000,+00000,x02,x0A,+00010)
UnitAnim(x1C,x00,x01F5,x00)
SpriteMove(x04,x00,+00000,+00000,+00000,x02,x0A,+00008)
UnitAnim(x04,x00,x0002,x00)
Wait(00011)
UnitAnim(x1C,x00,x01F4,x00)
Wait(00010)
UnitAnim(x1C,x00,x0002,x00)
Wait(00070)
Wait(00024)
RotateUnit(x04,x00,x00,x01,x00,x00)
WaitRotateUnit(x04,x00)
WalkTo(x04,x00,003,002,x00,x00,+004,x01)
WalkToAnim(x04,x00,x0002)
Wait(00030)
BlockStart()
WalkTo(x1C,x00,002,002,x00,x00,+005,x01)
WalkToAnim(x1C,x00,x0002)
WaitWalk(x1C,x00)
RotateUnit(x1C,x00,x0C,x00,x00,x00)
WaitRotateUnit(x1C,x00)
BlockEnd()
Wait(00016)
RotateUnit(x01,x00,x0C,x00,x00,x00)
WaitRotateUnit(x01,x00)
Wait(00016)
WaitWalk(x04,x00)
DisplayMessage(x10,x12,x001B,x04,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
BlockStart()
RotateUnit(x07,x00,x0C,x02,x01,x00)
WaitRotateUnit(x07,x00)
WalkTo(x07,x00,007,000,x00,x00,+007,x01)
WalkToAnim(x07,x00,x0002)
WaitWalk(x07,x00)
BlockEnd()
BlockStart()
WalkTo(x04,x00,007,000,x00,x00,+006,x01)
WalkToAnim(x04,x00,x0002)
WaitWalk(x04,x00)
BlockEnd()
BlockStart()
WalkTo(x1C,x00,007,000,x00,xB0,+005,x01)
WalkToAnim(x1C,x00,x0002)
WaitWalk(x1C,x00)
BlockEnd()
Wait(00030)
BlockStart()
Wait(00062)
WalkTo(x01,x00,003,002,x00,x00,+006,x01)
WalkToAnim(x01,x00,x0002)
WaitWalk(x01,x00)
RotateUnit(x01,x00,x04,x00,x00,x00)
WaitRotateUnit(x01,x00)
BlockEnd()
Wait(00080)
BlockStart()
Wait(00010)
UnitAnim(x30,x00,x0264,x00)
Wait(00010)
UnitAnim(x30,x00,x0265,x00)
BlockEnd()
DisplayMessage(x10,x12,x001C,x30,x00,x00,+00000,+00000,+00000,x02)
WaitForInstruction(x01,x00)
WaitForInstruction(x08,x00)
Wait(00030)
DisplayMessage(x10,x11,x001D,x01,x00,x00,+00000,+00000,+00000,x00)
WaitForInstruction(x01,x00)
Wait(00030)
UnitAnim(x30,x00,x0264,x00)
Wait(00008)
UnitAnim(x30,x00,x0002,x00)
Wait(00030)
DisplayMessage(x10,x92,x001E,x30,x00,x00,+00000,+00000,+00000,x02)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x91,x001F,x01,x00,x00,+00000,+00000,+00000,x02)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
Wait(00008)
ChangeDialog(x01,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00060)
DisplayMessage(x10,x92,x0020,x30,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
DisplayMessage(x10,x91,x0021,x01,x00,x00,+00000,+00000,+00000,x03)
WaitForInstruction(x01,x00)
ChangeDialog(x02,x0022,x00,x00)
WaitForInstruction(x01,x00)
ChangeDialog(x01,x0023,x00,x00)
WaitForInstruction(x01,x00)
ChangeDialog(x02,xFFFF,x00,x00)
Wait(00008)
ChangeDialog(x01,xFFFF,x00,x00)
WaitForInstruction(x01,x00)
Wait(00030)
RotateUnit(x01,x00,x0C,x00,x00,x00)
WaitRotateUnit(x01,x00)
FadeSound(x00,120)
WalkTo(x01,x00,007,000,x00,x00,+006,x01)
WalkToAnim(x01,x00,x0002)
Wait(00100)
BgSound(x05,+000,+024,x00,240)
WaitWalk(x01,x00)
Erase(x01,x00)
Erase(x04,x00)
Erase(x07,x00)
Erase(x08,x00)
Erase(x1C,x00)
Wait(00020)
UnitAnim(x30,x00,x027F,x00)
Wait(00074)
UnitAnim(x30,x00,x0281,x00)
DisplayMessage(x10,x11,x0024,x30,x00,x00,+00000,+00000,+00000,x02)
WaitForInstruction(x01,x00)
Wait(00080)
UnitAnim(x30,x00,x027F,x00)
Wait(00075)
UnitAnim(x30,x00,x0281,x00)
Wait(00050)
UnitAnim(x30,x00,x0281,x00)
EditBGSound(x05,+035,+000,x00,x5F)
ColorScreen(x02,000,000,000,255,255,255,+00096)
WaitForInstruction(x0C,x00)
ZERO(x006E)
ADD(x006E,x0004)
ZERO(x006F)
ADD(x006F,x0002)
ZERO(x01BF)
ADD(x01BF,x0001)
ZERO(x01C0)
ADD(x01C0,x0001)
ZERO(x0269)
ADD(x0269,x0001)
ZERO(x03EF)
ADD(x03EF,x0001)
EventEnd()

//INSTRUCTION SECTION END -  TEXT START
//Message x01
{font:08}Algus{br}
{font:00}... There was a time when my family was{br}
once respected like the Beoulves.{end}

//Message x02
{font:08}Algus{br}
{font:00}But my grandfather was captured during the{br}
Fifty Years' War...{br}
To save his own skin he traded in those of his{br}
comrades.{br}
{br}
But, as he left the enemy castle, he was{br}
stabbed in the back, by none other than a{br}
squire just like myself.{br}
One of my grandfather's ex{D11D}comrades escaped{br}
and spread the story around.{br}
{br}
Of course, my dad didn't believe a word of it,{br}
but everyone else did. He was deserted...{end}

//Message x03
{font:08}Algus{br}
{font:00}Rank, status...{br}
{br}
By myself, the likes of me{br}
would have never had an{br}
audience with Lord Dycedarg...{end}

//Message x04
{font:08}Voice of a young girl{br}
{font:00}Deliiitaaa!!!{end}

//Message x05
{font:08}Delita{br}
{font:00}Teta!{end}

//Message x06
{font:08}{Ramza}{br}
{font:00}Alma, Zalbag!{end}

//Message x07
{font:08}Alma{br}
{font:00}{Ramza}, you're finally back!{end}

//Message x08
{font:08}{Ramza}{br}
{font:00}It's been a while, Zalbag.{end}

//Message x09
{font:08}Zalbag{br}
{font:00}I hear you lambasted an entire band{br}
of criminals in Gariland to a pulp!{br}
A task worthy of a Beoulve!{br}
No question, father would've{br}
been pleased.{end}

//Message x0A
{font:08}{Ramza}{br}
{font:00}... Thank you.{end}

//Message x0B
{font:08}Zalbag{br}
{font:00}Ha, ha... you haven't changed a bit,{br}
have you?{br}
Still uncomfortable with words like that.{br}
{br}
{br}
And Delita, you've certainly grown into{br}
a strong young man. I heard about your{br}
role in repelling the rebels too.{br}
Just look how happy Teta is, isn't that{br}
right?{end}

//Message x0C
{font:08}Teta{br}
{font:00}Delita, I'm glad you're{br}
doing so well.{end}

//Message x0D
{font:08}Delita{br}
{font:00}And I'm equally happy to{br}
see you doing well.{br}
How goes school? Are you{br}
getting used to it?{end}

//Message x0E
{font:08}Teta{br}
{font:00}Mm-hm! Everyone is so{br}
nice to me...{end}

//Message x0F
{font:08}Zalbag{br}
{font:00}Alas, I'd love to stay to stay and chat,   {br}
but criminals are everywhere these days,{br}
and so my work has no end.{br}
{br}
{br}
Do pardon me, as I go back to hunting.{end}

//Message x10
{font:08}{Ramza}{br}
{font:00}I pray for your victory, brother.{end}

//Message x11
{font:08}Zalbag{br}
{font:00}...The Death Corps have{br}
demanded a ransom.{end}

//Message x12
{font:08}Algus{br}
{font:00}What!?{end}

//Message x13
{font:08}Zalbag{br}
{font:00}'Tis beyond my ken.{br}
{br}
The Death Corps rebels preach death to{br}
noblility and their followers, and that their{br}
wrath does not extend beyond these.{br}
It seems unusual that they would{br}
kidnap the Marquis simply for the{br}
sake of money.{end}

//Message x14
{font:08}Algus{br}
{font:00}Absurd! They're no more than{br}
common criminals, I say!{end}

//Message x15
{font:08}Zalbag{br}
{font:00}The winds carry nothing from the "weeds"{br}
planted in their midst.{br}
I'm given to think that they've met with{br}
trouble or other serious business.{br}
{br}
But the nobles think the circumstances do{br}
not warrant further investigation.{end}

//Message x16
{font:08}{Ramza}{br}
{font:00}Zalbag, where was communication lost?{end}

//Message x17
{font:08}Zalbag{br}
{font:00}East of Gallionne, in the trade city of{br}
Dorter...{br}
I dare say, guarding a castle is such boring{br}
work.{br}
{br}
Wouldn't you agree, {Ramza}?{end}

//Message x18
{font:08}Delita{br}
{font:00}Teta, I'm sorry.{br}
We must go.{end}

//Message x19
{font:08}Teta{br}
{font:00}Don't worry about me, Delita.{br}
Just take care of yourself.{end}

//Message x1A
{font:08}Delita{br}
{font:00}Needn't worry, Teta, we're not{br}
going to do anything stupid.{br}
Be a good girl while I'm away,{br}
alright?{end}

//Message x1B
{font:08}Delita{br}
{font:00}Well, we ought to get going, Algus.{end}

//Message x1C
{font:08}Alma{br}
{font:00}What Teta said about school{br}
is not true, actually...{end}

//Message x1D
{font:08}{Ramza}{br}
{font:00}Something troubles her?{end}

//Message x1E
{font:08}Alma{br}
{font:00}Many mock her at school{br}
for being a commoner...{end}

//Message x1F
{font:08}{Ramza}{br}
{font:00}...{end}

//Message x20
{font:08}Alma{br}
{font:00}I'm sorry. I shouldn't have{br}
worried you like that.{br}
Teta will be alright.{br}
I'll be there for her.{br}
Trust me.{end}

//Message x21
{font:08}{Ramza}{br}
{font:00}I'm not worried. But you shouldn't{br}
overstrain yourself, either.{end}

//Message x22
{font:08}Alma{br}
{font:00}You're the one going too far to meet{br}
the expectations of others, {Ramza}.{br}
Be yourself. Don't feel so bounded{br}
by your name.{end}

//Message x23
{font:08}{Ramza}{br}
{font:00}Ha, ha, ha, you sound just like mother...{end}

//Message x24
{font:08}Alma{br}
{font:00}{Ramza}...{end}


I have only made changes to the event messages. I have not touched anything else.

Everything runs fine up until Message x20. Alma's dialog is entirely skipped here. Her next message is printed in Ramza's dialog box via a ChangeDialog command...

This error only occurs when Ramza's name is above a certain length. I first encountered this when testing with Ramza's name at max length.
13
Actually, the names in the survey are from Sugnuf's translation, not WoTL. Some of the names are similar if not identical to those in WoTL.

I could make two seperate patches though.

**edit for context: I created a survey to ask about people's preferences about the names of characters. This has since been removed from the original post.**
14
I do agree. As of right now, everything I have done keeps the original PS1 names intact. Besides names, this mod follows Sugnuf's script with only a few minor changes.

I still haven't decided on what do do with the Lucavi job titles though...
15
Final Fantasy Tactics: Sugnuf's Translation


This mod is essentially a glorified text edit. It implements Sugnuf's Translation of the original Japanese text into the game's events. I also plan to rewrite the tutorials, the Brave Story, 'SELECT' hint dialog, menus and any other piece of text I can get my hands on.


(This spoiler will gradually be filled over time as I progress)

- Chapter 1 Events -> Complete!
- Chapter 2 Events -> Complete!
- Chapter 3 Events -> Written, currently being tested...
- Chapter 4 Events -> Written, to be tested...
- Everything Tactext -> In progress...
- Everything Image-based -> In progress...



All credit goes to Sugnuf for this translation of the original Japanese text.
Final Fantasy, and Final Fantasy Tactics are copyrights of Square-Enix Inc.

The translation may be found here: https://gamefaqs.gamespot.com/ps/197339-final-fantasy-tactics/faqs/48627


Any and all criticism, suggestions, bug reports, etc. are encouraged and greatly appreciated.

That being said, here is a (slightly broken) demo of Chapter 1:

To apply this patch, insert a *clean* Final Fantasy Tactics image file and the .ppf file into ppf-o-matic3.
16
New Project Ideas / Re: Sugnuf's Translation Patch?
April 25, 2018, 02:44:55 pm
Even 3-5 responses would be more than enough to decide.

I feel the same about the original translation. However, I am surprised about the immense number of plot details I missed considering how many times I've played through the game. :P

I am fully aware of the amount of time I would need to commit to this... I just need to relearn event editing.

Are there other translations I can use for Tutorials, Brave Story, Spell Quotes and all of the SELECT menus? Sugnuf's only covers the story and sidequest events.
17
New Project Ideas / Re: Sugnuf's Translation Patch?
April 25, 2018, 08:15:32 am
I'll take it on then. :P

I plan to keep the PS1 names (I mean come on, who would choose "Knights of the Northern Sky" over "Hokuten Knights"?). Or I could create a poll and get people to vote...

Probably not my business, but... what is it you didn't like about it?
18
New Project Ideas / Sugnuf's Translation Patch?
April 24, 2018, 02:53:09 pm
I was wondering if a patch has been previously posted that exclusively changes the game's dialog to that of Sugnuf's translation. If it doesn't, this will likely be my next project.

A quick search of the forum using 'Sugnuf' as the search term doesn't return any results, but there might be something I missed. Thanks!

(P.S. It's been a while since I was last here, I've got some reading to do...)
19
Quote from: Lionheart537 on August 01, 2017, 08:19:43 pm
I was wondering peoples' views on stat growths for generic jobs. Should they be the same with only multipliers giving variation, or slight differences for each job/job tree (warrior, thief, and mage paths)? Either letting them change jobs hassle free or allowing optimal stat building for dedicated players.


There are many arguments for and against setting equal stat growth. I personally prefer setting them all to be equal between jobs. However, the pros and cons on either side balance out. Ultimately it comes down to personal preference.

Using equal growth values across all jobs promotes using avoided and/or all jobs as you unlock them and creating different teams for different battles rather than leveling each character for a specific build and limiting them to that single build the entire playthrough. Jobs like Bard, Dancer or Oracle (Worst growth in the game) are no longer avoided entirely by players that want to actually increase their stats as they level.

It also makes Degenerators and Level Blast an extremely relevant and permanent debuff since the formula that calculates the Raw Stat value you lose involves Growth (If you dislike this, it can be prevented by an ASM hack that makes the stat decrease at level down equal to the previous stat increase at level up; its one of the default hacks you get with OrgASM). As an added bonus, this prevents Level Down abuse.

However, if you decide to take this approach, make sure that the growth values are not too high or too low. You don't really want every single job to be at 999 HP and be able to one-shot kill everything, all before level 50, do you?

It is highly recommended that you also make changes to balance the multipliers for each class. If you don't, stats between different jobs tend to similar (if not equal) in some cases (not including bonuses from armour). Just so you know...

People probably disagree with the above, but honestly (being the completely OCD "Gotta be maxed w/ every single ability unlocked" player that I am) I think that removing this extra annoying detail from the game can be really great and can add an extra layer of difficulty to many battles by balancing the playing field between the player and the AI (if done correctly... gotta do it right :P ...).
20
Help! / Re: AI Ability Learning
July 18, 2017, 05:35:28 pm
Perfect, thanks!

That saves me a bit of time since I've been quite busy lately. I haven't been able to mess around to figure these types of things out on my own these past few months.

Making challenging and interesting battles has been on the top of my list for a while, and this makes things easier.