SEQ & Animation info page

From Final Fantasy Hacktics Wiki
Revision as of 08:48, 8 March 2022 by Talcall (talk | contribs)
Jump to navigation Jump to search
This is a list of the currently discovered SEQ information and quirks, particularly for woosh effects, weapons, and units. Currently, ability effects are unexplored.

0x80094364: Change of animation (Animation - 1 (if away from camera) / 2)
	0x00 + weapon type * 3: Low swing animation
	0x01 + weapon type * 3: Same-height swing animation
	0x02 + weapon type * 3: high swing animation

SEQ data layout:
	0x00 - word, contains a byte of data? (0x78?)
	0x04 - word, contains a byte of data?
	0x08 - Pointers to animations (+ Animation * 4)

TYPE1 : 0x800bfa30
TYPE2 : 0x800bfe38
CYOKO : 0x800c0240
MON   : 0x800c0648
RUKA  : unsure
ARUTE : unsure
KANZEN: unsure

TYPE1 animations: 800a1c84

SEQ data for weapons/effects layout:
	0x00 - Animation pointers

WEP1  : 0x800be74c
WEP2  : 0x800bf38c
EFF1  : 0x800b6edc
EFF2  : 0x800b6edc

Weapon Animations: 800a69d0

   Known SEQ Commands
   -> LoadFrameAndWait (00, 01)
		- Frame (00)
			- Loads the frame of animation from SHP Data
			- for weapons, the weapon type will dictate the 0-frame of animation, and count from there with the value.
			- For units, above a certain value, the second half of the spritesheet is loaded from. Above another value, swimming top half sprites, and then swimming bottom half sprites.
		- Wait Timer (01)
			- Waits to execute the next command by the designated number of frames.
 		- Compatible with Units, Weapons, And Woosh effects.
   -> UnloadMFItem (ffc3)
		- clears Move Find Item graphic trigger
   -> MFItemPos (ffc4, 00, 01)
		- X Pos (00)
			- Sets front/back (+/-) position of item, relative to unit centre
		- Y Pos (01)
			- Sets Down/Up (+/-) position of item, relative to feet of unit
   -> LoadMFItem (ffc5)
		- Sets Move Find Item trigger
   -> WaitForInput (ffc6)
		- waits for controller confirmation before completing the animation
   -> MoveUp2 (ffcb)
 		- Moves the unit upwards by 2 units.
   -> MoveUp1 (ffcc)
		- Moves the unit upwards by 1 unit.
   -> MoveBackward2 (ffcd)
		- Moves the unit backwards by 2 units. 
		- Many weapon strikes use this to save on space, as opposed to 0xffee##, or 0xfffa%%$$##.
   -> MoveBackward1 (ffce)
		- Moves the unit backwards by 1 unit.
   -> MoveDown2 (ffcf)
		- Moves the unit downwards by 2 units.
   -> MoveDown1 (ffd0)
		- Moves the unit downwards by 1 unit.
   -> MoveForward2 (ffd1)
		- Moves the unit forward by 2 units. 
		- Used in conjunction with MoveBackward2
   -> MoveForward1 (ffd2)
		- Moves the unit forward by 1 unit.
   0xffd3##     -> WeaponSheatheCheck1(##)
			- Used by units, but 'functions' for weapons.
			- If used before 0xffde, will loop the last ## command bytes if the target blocks with a shield.
			- If used after 0xffde, will loop the last ## command bytes until damage numbers fade.
   0xffd4##     -> PlayAttackSound(##)
			- Plays an appropriate attack sound when called.
			- 0x00 calls woosh sound, 0x01 calls hit sound.
			- Use for weapons or effects returns an error and deactivates the animation.
   0xffd5       -> IncrementLoop()
			- Used by animations that loop. Will increment some debug counter by 1, and loop the animation indefinitely.
   0xffd6##     -> WeaponSheatheCheck2(##)
			- Used by weapons.
			- Loops last ## command bytes until damage numbers fade.
   0xffd8##     -> SetRotation(##)
			- Sets a constant value to graphic rotation. (weapons)
			- for units, saves the input in misc unit data? (0x14). most values here tend to be erroneous.
   0xffd9####   -> QueueThrowAnimation(####)
			- Queues a hardcoded routine that saves thrown Item ID.
   0xffda       -> ReturnErrorFinishAnim()
			- returns an error. likely not for use with weapons, effects, or units.
   0xffdb       -> SetSlowdown(##)
			- Sets Slow down amount to the input on the tin. persists?
   0xffdc       -> ReloadAnimation()
			- Reloads previously saved information about the last animation (prior to executing 0xffdd##)
   0xffdd##     -> OverrideAnimation(##)
			- Saves all information about the current animation to graphic data, and overrides the current animation.
   0xffde       -> PostGenericAttack()
			- Queues damage numbers to appear at the end of an animation
			- Saves appropriate dodge/block animations to target, if necessary
			- Allows 0xffd3## and 0xffd6## to continue animation.
			- Also hardcoded to set attack woosh colour based on weapon element, only for specific abilities.
			- Unit only
   0xffdf       -> SetYRotation0()
			- Resets graphic rotation to 0.
   0xffe2##     -> SetFrameOffset(##)
			- For weapons, sets current frame offset value based on something in SHP data. does not utilize its input.
			- For units, sets a base frame before the animation starts
				- if the unit is facing the camera, this frame is typically set to + 0x11, away from the camera, + 0x0b.
				- this only seems to be set for weapon swinging animations?
				- does this make up for buffer frames?
   0xffe5####   -> SaveYSpin(####)
			- Saves a value directly to spin.
   0xffeb       -> FlipHorizontal()
			- Flips the graphic horizontally.
   0xffec       -> FlipVertical()
			- Flips the graphic vertically.
   0xffee##     -> MoveUnitFB(##)
			- Moves the unit forward or backward by ## units.
   0xffef##     -> MoveUnitDU(##)
			- Moves the unit up or down by ## units.
   0xfff0##     -> MoveUnitRL(##)
			- Moves the unit right or left by ## units.
   0xfff2$$##   -> QueueSpriteAnim($$,##)
			- Prepares weapon or effect for animation.
			- The graphic to be prepared is the first input, the animation is the second input. Only graphic values of 0x01 or 0x02 are accepted, others return an error.
   0xfffa%%$$## -> MoveUnit(%%,$$,##)
			- Moves the unit in any 3 directions by the inputs. Left/right are the first input, up/down are the second, and forward/backward are the third.
   0xfffc$$##   -> Wait($$,##)
			- Repeats last $$ command bytes until ## frames have past.
   0xfffd##     -> HoldWeapon(##)
			- Has the same looping effect as 0xffd3## or 0xffd6##, but without checking if the animation should continue.
   0xfffe       -> EndAnimation()
			- Finishes the animation, deactivating the graphic and setting most values to 0.
   0xffff       -> PauseAnimation()
			- (Weapons) Sets wait to 0, without deactivating the graphic, pausing the animation until it's ended by another process.
			- (Units) Ends the animation, allowing another process to give a new animation unto the unit without deactivating the graphic.

   Unknown SEQ commands
   0xbe -> clears some unused data. for no reason.
   0xbf -> jumps to somewhere with no routine recorded on the wiki.
   0xc0 -> some kind of conditional wait command? unsure what the condition is. 3 bytes long.
   0xc1 -> no idea. clears some positional/map data, maybe? 4 bytes long.
   0xc2 -> queues next command immediately. no other known purpose.
   0xc6 -> triggers a check for the animation continuing. if post action has completed, repeat last few frames of animation until it is engaged again (?). unit anim only.
   0xc7, 0xc8, 0xc9, 0xca, 0xe3, 0xe4, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xed, 0xd7, 0xf0, 0xf1, 0xf3, 0xf4, 0xf5, 0xf8, 0xfb -> skips over input value. no other known effect.
   0xda -> unused command, ends animation early by deactivating graphic, potentially just unwritten.
   0xe0, 0xe1 -> likely unwritten commands, or used for another purpose. no-op.
   0xf6 -> currently unsure. does something really technical with button inputs.
   0xf7 -> skips 3 input values. other effects are unknown.
   0xf9 -> does something vectory. seems to slide the unit rapidly to the right of the screen.