Difference between revisions of "SEQ & Animation info page"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
Line 1: Line 1:
  This is a list of the currently discovered SEQ information and quirks, particularly for woosh effects, weapons, and units. Currently, ability effects are unexplored.
+
SEQ (Sequence) files contain the information to animate a unit. While [[SHP]] files contain the breakdown of each frame, Sequence files describe how they are strung together, plus some additional commands that dictate sound, loading graphics related to the unit, and sliding the unit graphic on the screen, among others.
   
+
 
 +
==Section 1==
 +
Using Type 1 SEQ as an example:
 +
          AA AA BB BB
 +
  00000000: 78 00 FF 00
 +
These first few bytes dictate some specifics regarding unit interactions. In RAM, they are expanded to take up a word of space each.
 +
*AA - This number describes the animation ID before which there is now expected to be a Target of the animation in question. For type 1 units, this animation is 0x78 (0x79 is the first attacking animation, high mod bare handed.)
 +
*BB - Currently, I am unsure what exactly this number is for. my best guess is it describes the animation before the unit starts loading swimming (half) graphics.
 +
 
 +
==Section 2==
 +
          Animation 1|Animation 2|Animation 3|Animation 4|...
 +
00000004: 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 ...
 +
These are all pointers to animations. The end of this section is marked with a series of 0x10 bytes of Meta Data (0xFF) and a halfword that describes how long the full list of animation commands are. the pointers point to where this Meta data stops.
 +
 
 +
==Section 3==
 +
          Anim0|Anim1|Anim2|Anim3|Anim4|Anim5|Animation 6 ...
 +
  00000406: 00 00 03 00 02 00 01 00 08 00 07 00 0B 06 0A 08 ...
 +
This section contains the animation commands themselves. it stretches on until the end of the file.
 +
 
 +
 
 +
==Noteworthy RAM locations==
 
  0x80094364: Change of animation (Animation - 1 (if away from camera) / 2)
 
  0x80094364: Change of animation (Animation - 1 (if away from camera) / 2)
 
  0x00 + weapon type * 3: Low swing animation
 
  0x00 + weapon type * 3: Low swing animation
 
  0x01 + weapon type * 3: Same-height swing animation
 
  0x01 + weapon type * 3: Same-height swing animation
 
  0x02 + weapon type * 3: high swing animation
 
  0x02 + weapon type * 3: high swing animation
 +
 +
0x800a1c84: Location of First loaded section 3 in RAM
 +
 +
0x800bfa30: Location of First loaded section 1 & 2 in RAM
 
   
 
   
SEQ data layout:
+
==Known SEQ Commands==
0x00 - word, contains a byte of data? (0x78?)
+
*LoadFrameAndWait (Frame, Wait)
0x04 - word, contains a byte of data?
+
  - Frame
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
 
  - 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 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.
 
  - 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)
+
 +
  - Wait
 
  - Waits to execute the next command by the designated number of frames.
 
  - Waits to execute the next command by the designated number of frames.
  - Compatible with Units, Weapons, And Woosh effects.
+
 
    -> UnloadMFItem (ffc3)
+
*UnloadMFItem (ffc3)
 
  - clears Move Find Item graphic trigger
 
  - clears Move Find Item graphic trigger
    -> MFItemPos (ffc4, 00, 01)
+
  - X Pos (00)
+
- Is also used for Chests and Crystals
 +
 
 +
*MFItemPos (ffc4, XX, YY)
 +
  - X Pos (XX)
 
  - Sets front/back (+/-) position of item, relative to unit centre
 
  - Sets front/back (+/-) position of item, relative to unit centre
  - Y Pos (01)
+
 +
  - Y Pos (YY)
 
  - Sets Down/Up (+/-) position of item, relative to feet of unit
 
  - Sets Down/Up (+/-) position of item, relative to feet of unit
    -> LoadMFItem (ffc5)
+
 +
- Is also used for Chests and Crystals
 +
 
 +
*LoadMFItem (ffc5)
 
  - Sets Move Find Item trigger
 
  - Sets Move Find Item trigger
    -> WaitForInput (ffc6)
+
  - waits for controller confirmation before completing the animation
+
- Is also used for Chests and Crystals
    -> MoveUp2 (ffcb)
+
 
  - Moves the unit upwards by 2 units.
+
*WaitForInput (ffc6, ##)
    -> MoveUp1 (ffcc)
+
  - No. Bytes (##)
 +
- waits for controller confirmation while looping last ## bytes of animation. Signed.
 +
 
 +
*MoveUp2 (ffcb)
 +
- Moves the unit upwards by 2 units.
 +
 
 +
*MoveUp1 (ffcc)
 
  - Moves the unit upwards by 1 unit.
 
  - Moves the unit upwards by 1 unit.
    -> MoveBackward2 (ffcd)
+
 
 +
*MoveBackward2 (ffcd)
 
  - Moves the unit backwards by 2 units.  
 
  - Moves the unit backwards by 2 units.  
- Many weapon strikes use this to save on space, as opposed to 0xffee##, or 0xfffa%%$$##.
+
 
    -> MoveBackward1 (ffce)
+
*MoveBackward1 (ffce)
 
  - Moves the unit backwards by 1 unit.
 
  - Moves the unit backwards by 1 unit.
    -> MoveDown2 (ffcf)
+
 
 +
*MoveDown2 (ffcf)
 
  - Moves the unit downwards by 2 units.
 
  - Moves the unit downwards by 2 units.
    -> MoveDown1 (ffd0)
+
 
 +
*MoveDown1 (ffd0)
 
  - Moves the unit downwards by 1 unit.
 
  - Moves the unit downwards by 1 unit.
    -> MoveForward2 (ffd1)
+
 
  - Moves the unit forward by 2 units.  
+
*MoveForward2 (ffd1)
- Used in conjunction with MoveBackward2
+
  - Moves the unit forward by 2 units.
    -> MoveForward1 (ffd2)
+
 
 +
*MoveForward1 (ffd2)
 
  - Moves the unit forward by 1 unit.
 
  - Moves the unit forward by 1 unit.
    0xffd3##    -> WeaponSheatheCheck1(##)
+
 
- Used by units, but 'functions' for weapons.
+
*WeaponSheatheCheck1 (ffd3, ##)
- If used before 0xffde, will loop the last ## command bytes if the target blocks with a shield.
+
- No. Bytes (##)
  - If used after 0xffde, will loop the last ## command bytes until damage numbers fade.
+
  - Loops the last few command bytes until damage numbers fade. Signed.
    0xffd4##    -> PlayAttackSound(##)
+
 
- Plays an appropriate attack sound when called.
+
*PlayAttackSound (ffd4, SoundID)
 +
- Sound ID
 
  - 0x00 calls woosh sound, 0x01 calls hit sound.
 
  - 0x00 calls woosh sound, 0x01 calls hit sound.
- Use for weapons or effects returns an error and deactivates the animation.
+
    0xffd5      -> IncrementLoop()
+
- Use for weapons or effects returns an error and deactivates the animation.
- Used by animations that loop. Will increment some debug counter by 1, and loop the animation indefinitely.
+
 
    0xffd6##    -> WeaponSheatheCheck2(##)
+
*IncrementLoop (ffd5)
- Used by weapons.
+
- Used by animations that loop. Will increment a loop counter on trigger, and loop the animation indefinitely.
  - Loops last ## command bytes until damage numbers fade.
+
 
    0xffd8##    -> SetRotation(##)
+
*WeaponSheatheCheck2 (ffd6, ##)
  - Sets a constant value to graphic rotation. (weapons)
+
- No. Bytes (##)
  - for units, saves the input in misc unit data? (0x14). most values here tend to be erroneous.
+
  - Loops last ## command bytes until damage numbers fade. Signed
    0xffd9####  -> QueueThrowAnimation(####)
+
 
- Queues a hardcoded routine that saves thrown Item ID.
+
*SetRotation (ffd8, Rotation)
    0xffda      -> ReturnErrorFinishAnim()
+
- Rotation
- returns an error. likely not for use with weapons, effects, or units.
+
  - Sets a constant value to weapon/effect graphic rotation.
    0xffdb      -> SetSlowdown(##)
+
  - Sets Slow down amount to the input on the tin. persists?
+
  - for units, saves the input in misc unit data 0x14. Most values tend to be erroneous, or do nothing.
    0xffdc      -> ReloadAnimation()
+
 
- Reloads previously saved information about the last animation (prior to executing 0xffdd##)
+
*QueueThrowAnimation (ffd9, ####)
    0xffdd##    -> OverrideAnimation(##)
+
- Queues a hardcoded routine that saves thrown Item ID.
 +
 
 +
*ReturnErrorFinishAnim (ffda)
 +
- returns an error. likely no use.
 +
 
 +
*SetSlowdown (ffdb, Wait)
 +
- Wait
 +
  - Sets constant slow down amount in frames. Does not persist between animations.
 +
 
 +
*ReloadAnimation (ffdc)
 +
- Reloads previously saved information about the last animation (prior to executing OverrideAnimation(ID))
 +
 
 +
*OverrideAnimation (ID)
 +
- ID
 
  - Saves all information about the current animation to graphic data, and overrides the current animation.
 
  - 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
+
*PostGenericAttack (ffde)
- Saves appropriate dodge/block animations to target, if necessary
+
- Calculates damage numbers to appear at the end of an animation
- Allows 0xffd3## and 0xffd6## to continue animation.
+
- Also hardcoded to set attack woosh colour based on weapon element, only for specific abilities.
+
- Saves appropriate dodge/block animations to target, if necessary
- Unit only
+
    0xffdf      -> SetYRotation0()
+
- Allows Sheathe Checks to continue animation.
- Resets graphic rotation to 0.
+
    0xffe2##    -> SetFrameOffset(##)
+
- Also sets attack woosh colour based on weapon element, unless ability has a secondary particle effect (Break equipment, Aim, Snipe, or jump)
- 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
+
*SetYRotation0 (ffdf)
- if the unit is facing the camera, this frame is typically set to + 0x11, away from the camera, + 0x0b.
+
- Resets graphic rotation to 0.
- this only seems to be set for weapon swinging animations?
+
 
- does this make up for buffer frames?
+
*SetFrameOffset (ffe2, Frame)
    0xffe5####  -> SaveYSpin(####)
+
- For weapons, sets current frame offset value based on something in SHP data. Does not utilize its input.
  - Saves a value directly to spin.
+
    0xffeb      -> FlipHorizontal()
+
- Frame
- Flips the graphic horizontally.
+
  - For units, sets a 0 frame, for animations who's frames may exceed the byte limit imposed by LoadFrameWait()
    0xffec      -> FlipVertical()
+
 
- Flips the graphic vertically.
+
*SaveYSpin (ffe5, Spin)
    0xffee##    -> MoveUnitFB(##)
+
- Spin (halfword)
  - Moves the unit forward or backward by ## units.
+
  - Saves a value directly to Y spin.
    0xffef##    -> MoveUnitDU(##)
+
 
  - Moves the unit up or down by ## units.
+
*FlipVertical (ffeb)
    0xfff0##    -> MoveUnitRL(##)
+
- Flips the graphic vertically.
  - Moves the unit right or left by ## units.
+
 
    0xfff2$$##  -> QueueSpriteAnim($$,##)
+
*FlipHorizontal (ffec)
  - Prepares weapon or effect for animation.
+
- Flips the graphic horizontally.
  - 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.
+
*MoveUnitFB (ffee, XX)
    0xfffc$$##  -> Wait($$,##)
+
- Movement in pixels (XX)
- Repeats last $$ command bytes until ## frames have past.
+
  - Moves the unit forward (+) or backward (-) by XX units, relative to how they're facing.
    0xfffd##    -> HoldWeapon(##)
+
 
  - Has the same looping effect as 0xffd3## or 0xffd6##, but without checking if the animation should continue.
+
*MoveUnitDU (ffef, YY)
    0xfffe      -> EndAnimation()
+
- Movement in pixels (YY)
- Finishes the animation, deactivating the graphic and setting most values to 0.
+
  - Moves the unit down (+) or up (-) by YY units.
    0xffff      -> PauseAnimation()
+
 
- (Weapons) Sets wait to 0, without deactivating the graphic, pausing the animation until it's ended by another process.
+
*MoveUnitRL (fff0, ZZ)
- (Units) Ends the animation, allowing another process to give a new animation unto the unit without deactivating the graphic.
+
- Movement in Pixels (ZZ)
 +
  - Moves the unit right (+) or left (-) by ZZ units.
 +
 
 +
*QueueSpriteAnim (fff2, Graphic, ID)
 +
- Graphic
 +
  - Prepares weapon (01) or effect (02) for animation.
 +
 +
- ID
 +
  - The Animation of the Graphic being called.
 +
 
 +
*MoveUnit (fffa, ZZ, YY, XX)
 +
- Movement in Pixels (ZZ, YY, XX)
 +
  - Moves the unit in any/all 3 perpendicular directions. Right(+)/Left(-) by ZZ, Down(+)/Up(-) by YY, and forward(+)/backward(-) by XX.
 +
 
 +
*Wait (fffc, ##, Loops)
 +
- No. Bytes (##)
 +
  - Loops last ## command bytes.
 
   
 
   
    Unknown SEQ commands
+
- Loops
     0xbe -> clears some unused data. for no reason.
+
- The number of times to repeat those bytes.
 +
 
 +
*HoldWeapon (fffd, ##)
 +
- No. Bytes (##)
 +
- Has the same looping effect as the Sheathe checks, but without checking if the damage numbers have faded.
 +
 
 +
*EndAnimation (fffe)
 +
- Finishes the animation, deactivating the graphic.
 +
 
 +
*PauseAnimation(ffff)
 +
- Sets wait to 0, without deactivating the graphic, pausing the animation until it's ended by another process.
 +
 
 +
==Unknown SEQ commands==
 +
     0xbe -> clears some unused data?
 
     0xbf -> jumps to somewhere with no routine recorded on the wiki.
 
     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.
 
     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.
 
     0xc1 -> no idea. clears some positional/map data, maybe? 4 bytes long.
 
     0xc2 -> queues next command immediately. no other known purpose.
 
     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.
 
     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.
 
     0xda -> unused command, ends animation early by deactivating graphic, potentially just unwritten.

Revision as of 09:55, 8 March 2022

SEQ (Sequence) files contain the information to animate a unit. While SHP files contain the breakdown of each frame, Sequence files describe how they are strung together, plus some additional commands that dictate sound, loading graphics related to the unit, and sliding the unit graphic on the screen, among others.

Section 1

Using Type 1 SEQ as an example:

          AA AA BB BB
00000000: 78 00 FF 00

These first few bytes dictate some specifics regarding unit interactions. In RAM, they are expanded to take up a word of space each.

  • AA - This number describes the animation ID before which there is now expected to be a Target of the animation in question. For type 1 units, this animation is 0x78 (0x79 is the first attacking animation, high mod bare handed.)
  • BB - Currently, I am unsure what exactly this number is for. my best guess is it describes the animation before the unit starts loading swimming (half) graphics.

Section 2

          Animation 1|Animation 2|Animation 3|Animation 4|...
00000004: 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 ...

These are all pointers to animations. The end of this section is marked with a series of 0x10 bytes of Meta Data (0xFF) and a halfword that describes how long the full list of animation commands are. the pointers point to where this Meta data stops.

Section 3

          Anim0|Anim1|Anim2|Anim3|Anim4|Anim5|Animation 6 ...
00000406: 00 00 03 00 02 00 01 00 08 00 07 00 0B 06 0A 08 ...

This section contains the animation commands themselves. it stretches on until the end of the file.


Noteworthy RAM locations

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
0x800a1c84: Location of First loaded section 3 in RAM
0x800bfa30: Location of First loaded section 1 & 2 in RAM

Known SEQ Commands

  • LoadFrameAndWait (Frame, Wait)
		- Frame
			- 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
			- Waits to execute the next command by the designated number of frames.
  • UnloadMFItem (ffc3)
		- clears Move Find Item graphic trigger

		- Is also used for Chests and Crystals
  • MFItemPos (ffc4, XX, YY)
		- X Pos (XX)
			- Sets front/back (+/-) position of item, relative to unit centre

		- Y Pos (YY)
			- Sets Down/Up (+/-) position of item, relative to feet of unit

		- Is also used for Chests and Crystals
  • LoadMFItem (ffc5)
		- Sets Move Find Item trigger

		- Is also used for Chests and Crystals
  • WaitForInput (ffc6, ##)
		- No. Bytes (##)
			- waits for controller confirmation while looping last ## bytes of animation. Signed.
  • 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. 
  • 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.
  • MoveForward1 (ffd2)
		- Moves the unit forward by 1 unit.
  • WeaponSheatheCheck1 (ffd3, ##)
		- No. Bytes (##)
			- Loops the last few command bytes until damage numbers fade. Signed.
  • PlayAttackSound (ffd4, SoundID)
		- Sound ID
			- 0x00 calls woosh sound, 0x01 calls hit sound.

		- Use for weapons or effects returns an error and deactivates the animation.
  • IncrementLoop (ffd5)
		- Used by animations that loop. Will increment a loop counter on trigger, and loop the animation indefinitely.
  • WeaponSheatheCheck2 (ffd6, ##)
		- No. Bytes (##)
			- Loops last ## command bytes until damage numbers fade. Signed
  • SetRotation (ffd8, Rotation)
		- Rotation
			- Sets a constant value to weapon/effect graphic rotation.

			- for units, saves the input in misc unit data 0x14. Most values tend to be erroneous, or do nothing.
  • QueueThrowAnimation (ffd9, ####)
		- Queues a hardcoded routine that saves thrown Item ID.
  • ReturnErrorFinishAnim (ffda)
		- returns an error. likely no use.
  • SetSlowdown (ffdb, Wait)
		- Wait
			- Sets constant slow down amount in frames. Does not persist between animations.
  • ReloadAnimation (ffdc)
		- Reloads previously saved information about the last animation (prior to executing OverrideAnimation(ID))
  • OverrideAnimation (ID)
		- ID
			- Saves all information about the current animation to graphic data, and overrides the current animation.
  • PostGenericAttack (ffde)
		- Calculates damage numbers to appear at the end of an animation

		- Saves appropriate dodge/block animations to target, if necessary

		- Allows Sheathe Checks to continue animation.

		- Also sets attack woosh colour based on weapon element, unless ability has a secondary particle effect (Break equipment, Aim, Snipe, or jump)
  • SetYRotation0 (ffdf)
		- Resets graphic rotation to 0.
  • SetFrameOffset (ffe2, Frame)
		- For weapons, sets current frame offset value based on something in SHP data. Does not utilize its input.

		- Frame
			- For units, sets a 0 frame, for animations who's frames may exceed the byte limit imposed by LoadFrameWait()
  • SaveYSpin (ffe5, Spin)
		- Spin (halfword)
			- Saves a value directly to Y spin.
  • FlipVertical (ffeb)
		- Flips the graphic vertically.
  • FlipHorizontal (ffec)
		- Flips the graphic horizontally.


  • MoveUnitFB (ffee, XX)
		- Movement in pixels (XX)
			- Moves the unit forward (+) or backward (-) by XX units, relative to how they're facing.
  • MoveUnitDU (ffef, YY)
		- Movement in pixels (YY)
			- Moves the unit down (+) or up (-) by YY units.
  • MoveUnitRL (fff0, ZZ)
		- Movement in Pixels (ZZ)
			- Moves the unit right (+) or left (-) by ZZ units.
  • QueueSpriteAnim (fff2, Graphic, ID)
		- Graphic
			- Prepares weapon (01) or effect (02) for animation.

		- ID
			- The Animation of the Graphic being called.
  • MoveUnit (fffa, ZZ, YY, XX)
		- Movement in Pixels (ZZ, YY, XX)
			- Moves the unit in any/all 3 perpendicular directions. Right(+)/Left(-) by ZZ, Down(+)/Up(-) by YY, and forward(+)/backward(-) by XX.
  • Wait (fffc, ##, Loops)
		- No. Bytes (##)
			- Loops last ## command bytes.

		- Loops
			- The number of times to repeat those bytes.
  • HoldWeapon (fffd, ##)
		- No. Bytes (##)
			- Has the same looping effect as the Sheathe checks, but without checking if the damage numbers have faded.
  • EndAnimation (fffe)
		- Finishes the animation, deactivating the graphic.
  • PauseAnimation(ffff)
		- Sets wait to 0, without deactivating the graphic, pausing the animation until it's ended by another process.

Unknown SEQ commands

   0xbe -> clears some unused data?
   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.
   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.