• 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 - Xifanie

News / 1000 Discord Server members!
May 22, 2021, 09:33:02 am
That's right, we finally reached 1000 members!
Actually we did back on the 17th April 2021, and now we're at 1067.

Regardless. Our discord server is extremely active and this is easily the most active FFH has been since its creation!
So, those who felt "Eh." about joining, I ask you to reconsider. See you soon!

Join here 🢂 https://discord.gg/xpXa8VEV2k
Help! / Re: Problem with the Palette editor
March 31, 2021, 10:29:19 pm
Are you running it without extracting it?
That section of the program works with the scripts directory included.
It's not essential, it's just some scripts to generate an image to show off your work, particularly multiple palettes in one image.
Help! / Re: mounts
March 31, 2021, 10:26:28 pm
Through eventing:
You can make a human unit walk to the tile occupied by a chocobo at maximum speed and no one will be able to tell.
All you have to do is assign Unit IDs, especially unique ones for the random battle ones.
The vanilla random battle event is 0x191.
Posting the xml would help, yes.
8 character long strings of hex can get recognized by FFTOrgASM as an opcode instruction.
You can rest assured that a non 8 characters long (i.e. 4 bytes long), meaning 1-2-3 or 5+ bytes long strings will always be parsed correct by the program.

I don't believe you should be unable to patch with this issue though, it should just be a warning.
Help! / Re: Make Ramza or others immortals
January 26, 2021, 03:25:48 am
I don't know if this would interest you, but I do feel it could do what you're trying to accomplish?

Otherwise I'm not sure how to easily achieve what you have in mind and it would likely require ASM hacking.
Help! / Re: Polearms/lances damaging 2 tiles?
December 26, 2020, 09:55:53 am
This was never a feature of FFT. I couldn't say which game you were thinking about though.
War of the Lions Hacking / Re: "Real" Summon?
November 30, 2020, 04:25:17 am
Oh like in FFXII? No, not really. It would be possible to create such a hack but it would take a lot of work and there would still be heavy limitations.
War of the Lions Hacking / Re: "Real" Summon?
November 29, 2020, 04:43:41 pm
Quote from: psiiijay on November 29, 2020, 02:44:46 pmis there a way to actually create a real creature with a skill here or in the psx version (real as in the monsters you fight in game)?
Of course, you just need to replace an existing human/monster sprite and its job.

Quote from: psiiijay on November 29, 2020, 02:44:46 pmI know the summons are a sfx but can they be animated a little? Like make Bahamuth move its wings or something?
Theoretically yes, but with our current knowledge of the game, it's impossible.
Also the VRAM of the Playstation is very limited and you'd have to make Bahamut smaller to free up the space for the animated wings.
War of the Lions Hacking / Re: Raise and charm together?
November 27, 2020, 01:08:35 am
In terms of logistics, it's possible to Cancel: Dead and Add: Charm on the same ability (by hacking the formula through) ASM.
But from what I understand, you'd only get one of the two at a time since the game would simply not attempt to add Charm since when the results are calculated, the unit is still dead. This could be fixed by allowing Charm to stack on top of Dead which sounds messy, to say the least.

It feels like the best would be to have the ability hit twice so that the first time it resurrects, and the second time it charms.

And then you have the problem with AI.. I'm sure the CPU would never use such an ability.

So in essence: Technically possible through a lot of efforts, but messy as hell to implement and would likely cause more harm than good even if you pulled it off.
or you could just use special snowflakes
Ah yeah, sorry. I didn't consider the possibility that is was stored in multiple files.
You can just do a hex edit, but it's making your life harder on yourself.

Just search for each character's byte value and you should be able to find its location in WLDHELP.LZW

Is there any reason you can't use Tactext? Why does it have to be hex editing?
And Tactext uses a DTE compression method, so the data will change a lot.
Mind you I didn't thoroughly test it
I'm not sure what you're talking about... because adding more jobs isn't possible.

I can only think of 2 things:
  • My spreadsheet that detects unused/duplicates entries for many things, including jobs
  • RAD 3, which allows more units on the job wheel, but is, by design, a cheat and not something that can be used in a proper mod
Balmafula and King Delita are also in there and unused IIRC?
It's technically possible, but realistically it would take a lot of effort while having to deal with severe limitations, particularly the VRAM.
Hacking/Patching Tools / Font Character Creator
July 30, 2020, 11:42:21 am
This is really old, but it still works!
Please remember that a lot of ASM hacks use kanji space, so you will have to try patching this at the same time as every other hack to make sure there is no conflict.
I'd want to make it like JSON, or something. It would improve readability and this type of format could also be extended to event conditionals and world map instructions. Also, this probably won't ever happen as I'm sure it's more than my body can handle. 😅


Offset = 0x12A000;

UnitIDs = {
   Ramza: 0x02,
   Alma: 0x30,
   Simon: 0x80,
   DeadKnight: 0x81,
   DeadMonk: 0x82,

Instructions = {

   X: 392, Y: 1272, Z: 1420,
   Angle: 334, Rotation: 480,
   Zoom: 100%,
   Frames: 1
WaitForInstruction( WaitFor: Camera ),

UnitAnim( UnitID: Simon, Animation: Dead ),
UnitAnim( UnitID: DeadKnight, Animation: Dead ),
UnitAnim( UnitID: DeadMonk, Animation: Dead ),
WarpUnit( UnitID: Ramza, X: 4, Y: 11, Facing: East ),
WarpUnit( UnitID: Alma, X: 4, Y: 11, Facing: East ),

SpriteMove( UnitID: Ramza, X: -44 ), WaitSpriteMove( UnitID: Ramza ),
SpriteMove( UnitID: Alma, X: -40 ), WaitSpriteMove( UnitID: Alma ),
ColorUnit( UnitID: Ramza, Preset: Shadows ), Wait( Frames: 2 ),
ColorUnit( UnitID: Alma, Preset: Shadows ), Wait( Frames: 2 ),

UseFieldObject ( ObjectID: 0x02 ), WaitFieldObject()

RotateUnit ( UnitID: Simon, Rotation: 8, Speed: 1 ), WaitRotateUnit( UnitID: Simon ),
ResetPalette( UnitID: Ramza ), ResetPalette( UnitID: Alma ),

LoadEVTCHR( MemoryBlock: 1, Slot: 0x42 ), WaitForInstruction( WaitFor: LoadEVTCHR ), SaveEVTCHR( MemoryBlock: 1 ),

SpriteMove( UnitID: DeadKnight, Z: 8 ),

EVTCHRPalette( UnitID: DeadKnight, MemoryBlock: 1, Palette: 0x02 ),
EVTCHRPalette( UnitID: DeadMonk, MemoryBlock: 1, Palette: 0x02 ),
UnitAnim( UnitID: DeadKnight, Animation: { Type: EVTCHR, MemoryBlock: 1, ID: 2 } ),
UnitAnim( UnitID: DeadMonk, Animation: { Type: EVTCHR, MemoryBlock: 1, ID: 1 } ),
SpriteMove( UnitID: DeadMonk, Z: 8 ), WaitSpriteMove( UnitID: DeadMonk ),

EVTCHRPalette( UnitID: Simon, MemoryBlock: 1, Palette: 0x04 ),
UnitAnim( UnitID: Simon, Animation: { Type: EVTCHR, MemoryBlock: 1, ID: 7 } ),

Instruction_63( UnknownA: 0xC9 ),


   Wait( Frames: 10 ),
   SpriteMove( UnitID: Ramza, Frames: 36 ),
   Wait( Frames: 16 ),
   ColorUnit ( UnitID: Ramza, Preset: 0x08, Frames: 4 ),
   WaitSpriteMove( UnitID: Ramza ),
   UnitAnim ( UnitID: Ramza, Animation: Standing ),
   Wait( Frames: 20 ),
   UnitAnim ( UnitID: Ramza, Animation: Bow ),   


   Type: CloseByScript | Regular | Bottom,
   UnitID: Simon,
   MessageID: 0x0003,
"{font:08}Simon {br}
{font:00}U, ugh...Alma...{br}
Why...are you....here?{end}",
   Y: 12, ArrowX: -4,
   Open: Smooth
WaitForInstruction( WaitFor: Dialog ),

   Type: CloseByScript | Regular | Top,
   UnitID: Alma,
   MessageID: 0x0004,
{font:00}What happened?{end}",
   X: 18, Y: 28, ArrowX: -4,
   Open: Shock
WaitForInstruction( WaitFor: Dialog ),

   DialogID: Bottom,
   MessageID: 0x0005,
{font:00}It's dangerous....here.{br}
Hurry....run.   {br}
They...came for the Holy{br}
Stone 'Virgo'...{end}"
WaitForInstruction( WaitFor: Dialog ),

ChangeDialog( DialogID: Top, MessageID: Close ),