SEQ & Animation info page

From Final Fantasy Hacktics Wiki
Revision as of 04:19, 11 November 2021 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 - Pointers to animations (+ Animation * 4)

TYPE1 : 0x800bfa30
TYPE2 : 0c800bfe38
CYOKO : unsure
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
   0x$$##       -> LoadFrameWait($$,##)
   			- Loads a particular frame of animation from SHP, and waits to execute the next command by the designated number of frames.
			- For units, there are certain frames that will switch loading between the first half and the second half of the spritesheet, and likewise trigger riding/swimming sprites.
			- for weapons, the weapon type will dictate the 0-frame of animation, and count from there with the input.
   0xffcb       -> MoveUp2()
			- Moves the unit upwards by 2 units.
   0xffcc       -> MoveUp1()
			- Moves the unit upwards by 1 unit.
   0xffcd       -> MoveBackward2()
			- Moves the unit backwards by 2 units. 
			- Many weapon strikes use this to save on space, as opposed to 0xffee##, or 0xfffa%%$$##.
   0xffce       -> MoveBackward1()
			- Moves the unit backwards by 1 unit.
   0xffcf       -> MoveDown2()
			- Moves the unit downwards by 2 units.
   0xffd0       -> MoveDown1()
			- Moves the unit downwards by 1 unit.
   0xffd1       -> MoveForward2()
			- Moves the unit forward by 2 units. 
			- Used in conjunction with 0xffcd
   0xffd2       -> MoveForward1()
			- 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##     -> SaveRotation(##)
			- Sets a constant value to graphic rotation. 
   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       -> ResetWait1()
			- Sets wait to a certain value from SEQ data. probably don't touch this.
   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##     -> ResetWait2(##)
			- For weapons, resets current wait value based on something in SHP data. does not utilize its input.
			- For units, sets a layer priority before the animation starts.
   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.
   0xc3 -> saves 0 to item display (clears?). 2 bytes long
   0xc4 -> similarly no idea. saves some data related to items. 4 bytes long.
   0xc5 -> saves 1 to item display (item?). 2 bytes long
   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.