Modding SF4 for PC (No DLC Unlocks!)

yeah i think thats what i was talking about… haha

address 0x89524C in GUL.cmn.emz somehow deals with the animation for sonic booms (ie the projectile itself). FF (and various other values) = invisible booms. 68 = a boom that animates for a split-second, then freezes on one frame for the rest of its duration. i was doing some less focused messing before i found this, and it seems like i made booms have no physical presence (they were invisible, wouldnt hit, and yet i couldnt throw another boom for a while, so the game must have still been tracking it)… not sure how i did it tho.

edit: LOL change 0x895268 to FF!

changing 0x895268 to FF results in booms that stay in place on screen. you can also have multiple booms on screen. it seems fairly random whether the game will actually let you throw another boom or not, as well as whether the booms can hit or not :confused:

whattttttttttttttttt
every value seems to have this effect actually on that location wtf

this is the same area btw that i made sagat’s crouch make him do his ko scream (edit: at least i think it is)

they can’t hit if they’ve gone off screen by you moving around they lose their hitbox then

0x89526C by default is 7, changing to 8 and close higher values results in a boom that looks functional but has no hitbox. lower and you get either a boom that is stuck on one frame of its ‘creation’ animation and can’t hit, or just stays in one spot on the screen and can’t hit… perhaps this byte refers to animation frames of the boom’s ‘creation’, with frame 7 being the one where the hitbox is created?

any idea how many bytes this block of data is? kind of feels like im clawing in the dark here lol

pretty sure it’s variable length

this is why i’ve been stuck on it lol there seems to be no system at work or something

edit: if we can figure out how this section works… then i think it will be a big step forward. it obviously is a step forward…

gonna just paste all my notes here

set rom corrupter to increment every 4th byte in range 8921A0-89229F by 01, guile disappears at end of rh flashkick (upon landing), but is still in the air invisible. when hit immediately teleports back to ground and becomes visible. is this whole area some kind of animation/frame data? i suspect the readable text further down may refer to the preceding data…

STAND.CROUCH.STAND2CROUCH.CROUCH2STAND.STAND2JUMP.JUMP.JUMP2STAND.STAND2JUMP_F.JUMP_F.JUMP2STAND_F.STAND2JUMP_B.JUMP_B.JUMP2STAND_B.TURN_STAND.TURN_CROUCH.TURN_WALK.FORWARD.BACKWARD.DASH.BACKDASH.STAND2GUARD.GUARD_STAND.GUARD2STAND.CROUCH2GUARD.GUARD_CROUCH.GUARD2CROUCH.BOUND_UPWARD_L.BOUND_UPWARD_M.BOUND_UPWARD_H.BOUND_DOWNWARD_L.BOUND_DOWNWARD_M.BOUND_DOWNWARD_H.DOWN_UPWARD.DOWN_DOWNWARD.RISE_UPWARD.RISE_DOWNWARD.RISE_UPWARD_STUN.RISE_DOWNWARD_STUN.B_DOWN_UPWARD.B_DOWN_DOWNWARD.THROW_MISS.THROW_GUARD.STUN.STUN_RECOVER.GUARD_HL.GUARD_HM.GUARD_HH.GUARD_ML.GUARD_MM.GUARD_MH.GUARD_LL.GUARD_LM.GUARD_LH.GUARD_CL.GUARD_CM.GUARD_CH.DAMAGE_HL.DAMAGE_HM.DAMAGE_HH.DAMAGE_ML.DAMAGE_MM.DAMAGE_MH.DAMAGE_LL.DAMAGE_LM.DAMAGE_LH.DAMAGE_CL.DAMAGE_CM.DAMAGE_CH.DAMAGE_HJ.DAMAGE_MJ.DAMAGE_LJ.DAMAGE_UPPER.DAMAGE_LOWER.DAMAGE_ASHIBARAI.DAMAGE_KUZURE_S.DAMAGE_KUZURE_C.BLOW_HL.BLOW_HM.BLOW_HH.BLOW_VL.BLOW_VM.BLOW_VH.BLOW_SL.BLOW_SM.BLOW_SH.5LP.5MP.5HP.5LK.5MK.5HK.5LPF.5MPF.5HPF.5LKF.5MKF.5HKF.2LP.2MP.2HP.2LK.2MK.2HK.8LP.8MP.8HP.8LK.8MK.8HK.9LP.9MP.9HP.9LK.9MK.9HK.THROW_F.THROW_B.THROW_AIRF.THROW_AIRB.THROW_F_ATTACK.THROW_F_DAMAGE.THROW_B_ATTACK.THROW_B_DAMAGE.THROW_AIRF_ATTACK.THROW_AIRF_DAMAGE.THROW_AIRB_ATTACK.THROW_AIRB_DAMAGE.THROW_AIRB_ATTACK2.THROW_AIRB_DAMAGE2.R5LP.R5LK.R5LPF.R5LKF.R2LP.R2LK.SAVING_MAX2.6MP.6HP.SAVING_MAX.SAVING2.SAVING3.EX_SAVING.6LK.6MK.4MK.6HK.3HK.6MP_TC.APPEAL_01.APPEAL_02.APPEAL_03.APPEAL_04.APPEAL_05.APPEAL_06.APPEAL_07.APPEAL_08.APPEAL_09.APPEAL_10.SONICBOOM_L.SONICBOOM_M.SONICBOOM_H.SONICBOOM_EX.SOMERSAULT_L.SOMERSAULT_M.SOMERSAULT_H.SOMERSAULT_EX.SOMERSAULT_GROUND_L.SOMERSAULT_GROUND_M.SOMERSAULT_GROUND_H.SOMERSAULT_GROUND_EX.GLASSES_ON.GLASSES_OFF.W_SOMERSAULT_L1.W_SOMERSAULT_L2.W_SOMERSAULT_GROUND_L.W_SOMERSAULT_M1.W_SOMERSAULT_M2.W_SOMERSAULT_GROUND_M.W_SOMERSAULT_H1.W_SOMERSAULT_H2.W_SOMERSAULT_GROUND_H.SOMERSAULT_EXP1.SOMERSAULT_EXP2.SOMERSAULT_EXP_FIN.VFX_SONICBOOM_L.VFX_SONICBOOM_M.VFX_SONICBOOM_H.VFX_SONICBOOM_EX.DEMO_START.DEMO_START_LEGACY.DEMO_ROUND_WIN_KO.DEMO_ROUND_WIN_KO2.DEMO_ROUND_WIN_KO3.DEMO_ROUND_WIN_KO4.DEMO_ROUND_WIN_TO.DEMO_ROUND_LOSE.DEMO_MATCH_WIN.DEMO_CONTINUE.DEMO_SUCCESS.DEMO_GAMEOVER.DEMO_BOSS_TARGET.DEMO_RIVAL_GUL.DEMO_RIVAL_ABEL…

corrupting 892260-89229F crash when rh flashkick

-892260: default 30

FF: after RH FK guile lands then teleports into the air about 2-3 feet then drops back down in crouch animation
50: guile disappears for a small amount of time during landing recovery
00: similar to FF though not identical
29: no noticeable difference
20: very similar to FF

since this apparently deals exclusively with his landing, perhaps previous block (while i dont know the size of the blocks just looking at the data you can see how it’s split up) is when he’s in the air? trying…

changed a bunch of values to FF in what seems to be previous block, getting crashes with strong flashkick now! first time didnt crash, guile just never went into his landing recovery, stood in neutral stance (still animating) and couldnt do anything

both blocks seem identical? i suspect this is some kind of data on animations to use for moves.
in that case gonna try changing the same value i did in the other block

-892130: default 30
FF: same effect as it had on 8992260, except on strong flashkick. i suspect i’ll find the same value if i look in the previous block and itll have the same effect on short flashkick. testing… 892000, same original value (30), change to FF and yep same effect but on short flashkick. this is definitely some kind of animation data, if only someone could figure out the format…

using corrupter on what might be previous block, approx 891A20-891EA0, crashes when i try to do EX flashkick. looks like the list above does indeed refer to the order of the blocks, with the ones i’ve been editing being the SOMERSAULT_GROUND ones.

now just need to figure out what exactly is going on here…

HOLY FUCKIN SHIT THIS TOOL IS AMAZING

i’ve been doing all this by hand lol or writing really bad perl scripts :rofl:

thanks lol

edit: if you figure out how to do air moves on the ground or ground moves in the air this will be great and it sounds like this area can make that possible. right now if we tell the game to do an air move on the ground then they do it and the character just disappears because the game isn’t sure wtf is happening i guess and if you do a ground move in the air they just teleport to the ground…

edit: well sagat’s


STAND CROUCH STAND2CROUCH CROUCH2STAND STAND2JUMP JUMP JUMP2STAND STAND2JUMP_F JUMP_F JUMP2STAND_F STAND2JUMP_B JUMP_B JUMP2STAND_B TURN_STAND TURN_CROUCH TURN_WALK FORWARD BACKWARD DASH BACKDASH STAND2GUARD GUARD_STAND GUARD2STAND CROUCH2GUARD GUARD_CROUCH GUARD2CROUCH BOUND_UPWARD_L BOUND_UPWARD_M BOUND_UPWARD_H BOUND_DOWNWARD_L BOUND_DOWNWARD_M BOUND_DOWNWARD_H DOWN_UPWARD DOWN_DOWNWARD RISE_UPWARD RISE_DOWNWARD RISE_UPWARD_STUN RISE_DOWNWARD_STUN B_DOWN_UPWARD B_DOWN_DOWNWARD THROW_MISS THROW_GUARD STUN STUN_RECOVER GUARD_HL GUARD_HM GUARD_HH GUARD_ML GUARD_MM GUARD_MH GUARD_LL GUARD_LM GUARD_LH GUARD_CL GUARD_CM GUARD_CH DAMAGE_HL DAMAGE_HM DAMAGE_HH DAMAGE_ML DAMAGE_MM DAMAGE_MH DAMAGE_LL DAMAGE_LM DAMAGE_LH DAMAGE_CL DAMAGE_CM DAMAGE_CH DAMAGE_HJ DAMAGE_MJ DAMAGE_LJ DAMAGE_UPPER DAMAGE_LOWER DAMAGE_ASHIBARAI DAMAGE_KUZURE_S DAMAGE_KUZURE_C BLOW_HL BLOW_HM BLOW_HH BLOW_VL BLOW_VM BLOW_VH BLOW_SL BLOW_SM BLOW_SH 5LP 5MP 5HP 5LK 5MK 5HK 5LPF 5MPF 5HPF 5LKF 5MKF 5HKF 2LP 2MP 2HP 2LK 2MK 2HK 8LP 8MP 8HP 8LK 8MK 8HK 9LP 9MP 9HP 9LK 9MK 9HK THROW_F THROW_B THROW_F_ATTACK THROW_F_DAMAGE THROW_B_ATTACK THROW_B_DAMAGE 6LK 6HK 6HP 5HK_FEINT R5LP R5LPF R2LP R2LK R5LK R5LKF SAVING_MAX2 SAVING_MAX SAVING2 SAVING3 EX_SAVING APPEAL_01 APPEAL_02 APPEAL_03 APPEAL_04 APPEAL_05 APPEAL_06 APPEAL_07 APPEAL_08 APPEAL_09 APPEAL_10 SHOT_L SHOT_M SHOT_H SHOT_EX G_SHOT_L G_SHOT_M G_SHOT_H G_SHOT_EX KNEE_L KNEE_L_LAND KNEE_M KNEE_M_LAND KNEE_H KNEE_H_LAND KNEE_EX KNEE_EX_LAND UPPER_L UPPER_L_LAND UPPER_M UPPER_M_LAND UPPER_H UPPER_H_LAND UPPER_EX UPPER_EX_LAND TIGER_GENOCIDE_L TIGER_GENOCIDE_M TIGER_GENOCIDE_H UC_GENOCIDE UC_GENOCIDE_HIT UC_GENOCIDE_hoken UC_GENOCIDE_LAND VFX_TIGRE_L VFX_TIGRE_M VFX_TIGRE_H VFX_G_TIGRE_L VFX_G_TIGRE_M VFX_G_TIGRE_H VFX_TIGRE_EX VFX_G_TIGRE_EX DEMO_START DEMO_START_LEGACY DEMO_ROUND_WIN_KO DEMO_ROUND_WIN_KO2 DEMO_ROUND_WIN_KO3 DEMO_ROUND_WIN_KO4 DEMO_ROUND_WIN_TO DEMO_ROUND_LOSE DEMO_MATCH_WIN DEMO_CONTINUE DEMO_SUCCESS DEMO_GAMEOVER DEMO_BOSS_TARGET DEMO_RIVAL_SGT

i will work to see if this is the correct thing

well first off one of the first things i noticed that a pattern like CDCC4C3ECDCC4C3E0000000003 appears to be at the start (? not sure) of each animation… not really sure on this theory that this is the start

edit: I’m not really sure that list is the one that corresponds as “STAND”, “CROUCH” and “JUMP” don’t appear to be here… or not in the same order, hold on i could be wrong

lol [media=youtube]jE2RYPss-K4[/media] (note this isnt a cancel, i only input the motion once)

slow progress…

okay maybe i have figured something out here,
back in the post where I was talking about the “animation control” section for sagat i posted this stuff:

1d80 - 1ed0 = 150 (336 decimal).
okay this is relevant why? the fucked up turn invisible non moving sonic booms section of the file for sagat, his crouch start animation is the first in the list and it APPEARS to be 336 in length and is followed by his uncrouch i will do some more followup stuff to try to confirm if this is true

good shit
reminds me of a mame cheat on 3s i found a long time ago (that i dont have the memory address for it anymore sadly, it was some weird stuff) that caused
http://www.t1.templarian.com/glitch/0032.png
http://www.t1.templarian.com/glitch/0020.png
http://www.t1.templarian.com/glitch/0018.png
http://www.t1.templarian.com/glitch/0010.png

in the area around 891d60-891da0 in GUL.cmn.emz, some of these 4-byte groups (look and youll see which im talking about) seem to describe hitboxes! try replacing them with 00s and see how the hitbox on EX FK shortens significantly. i’ve just been changing random values so i really have no idea how this works, but it’s definitely there.

edit: actually change them all to FF FF FF FF and see how the first hit of EX FK hitbox disappears completely lol. i wonder if this is some kind of system for describing the hitboxes (coordinates?) or just pointers?

edit2: lol set them to 00FF00FF, flashkick hits from across the screen!

so yeah right on from the #BAC header it seems like it’s all hitbox data (plus animation data?). first bunch seems to describe the character’s basic hittable box/‘presence box’ for when theyre neutral, crouching, in hitstun/blockstun, crumpled… seemingly anything that isnt doing a move. looks to be in 24 byte blocks? not sure if it uses the same hitbox for all these things or if i changed a bunch at once lol.

setting all bytes from 8781f8-87f468 in GUL.cmn.emz to FF, guile can walk through the opponent on their wakeup. he becomes almost impossible to get more than one hit on… dp fadc ultra the ultra whiffs, raw ultra it passes through him after hitting him once, lol.

i guess i’ll move over to looking at the sagat file so we’re at least looking at the same thing lol. what address is this ‘animation control’ section at?

also some more people need to get in on this, seriously. what happened to gojira?

I’m sure lots of people know this already, just in case:

You can use Cheat Engine to change hex values at runtime.

about stuff outside of BCM and BCA I haven’t really been touching it

i dunno gojira probably died or something since he stopped posting
my friend SSJ George Bush on here has been helping me with making fucked up versions of characters but he doesnt find new stuff

779300 (668 bytes from #BAC start)
well actually i suppose it might be 8 bytes before that i never tried messing with those values… at 779300 is “STAND2CROUCH”, so i guess before that might be STAND and CROUCH (not sure)

btw you finding hitbox data is a big breakthrough even if we can’t apply it 100% yet

SGT.cmn.emz

animation pointer table starts at 7792F8 with STAND

value stored at a pointer is a big-endian reference to the starting location of an animation relative to the start of the #BAC header

here’s a numbered list of animations so you can find the pointer you want easier:

  1. STAND
  2. CROUCH
  3. STAND2CROUCH
  4. CROUCH2STAND
  5. STAND2JUMP
  6. JUMP
  7. JUMP2STAND
  8. STAND2JUMP_F
  9. JUMP_F
  10. JUMP2STAND_F
  11. STAND2JUMP_B
  12. JUMP_B
  13. JUMP2STAND_B
  14. TURN_STAND
  15. TURN_CROUCH
  16. TURN_WALK
  17. FORWARD
  18. BACKWARD
  19. DASH
  20. BACKDASH
  21. STAND2GUARD
  22. GUARD_STAND
  23. GUARD2STAND
  24. CROUCH2GUARD
  25. GUARD_CROUCH
  26. GUARD2CROUCH
  27. BOUND_UPWARD_L
  28. BOUND_UPWARD_M
  29. BOUND_UPWARD_H
  30. BOUND_DOWNWARD_L
  31. BOUND_DOWNWARD_M
  32. BOUND_DOWNWARD_H
  33. DOWN_UPWARD
  34. DOWN_DOWNWARD
  35. RISE_UPWARD
  36. RISE_DOWNWARD
  37. RISE_UPWARD_STUN
  38. RISE_DOWNWARD_STUN
  39. B_DOWN_UPWARD
  40. B_DOWN_DOWNWARD
  41. THROW_MISS
  42. THROW_GUARD
  43. STUN
  44. STUN_RECOVER
  45. GUARD_HL
  46. GUARD_HM
  47. GUARD_HH
  48. GUARD_ML
  49. GUARD_MM
  50. GUARD_MH
  51. GUARD_LL
  52. GUARD_LM
  53. GUARD_LH
  54. GUARD_CL
  55. GUARD_CM
  56. GUARD_CH
  57. DAMAGE_HL
  58. DAMAGE_HM
  59. DAMAGE_HH
  60. DAMAGE_ML
  61. DAMAGE_MM
  62. DAMAGE_MH
  63. DAMAGE_LL
  64. DAMAGE_LM
  65. DAMAGE_LH
  66. DAMAGE_CL
  67. DAMAGE_CM
  68. DAMAGE_CH
  69. DAMAGE_HJ
  70. DAMAGE_MJ
  71. DAMAGE_LJ
  72. DAMAGE_UPPER
  73. DAMAGE_LOWER
  74. DAMAGE_ASHIBARAI
  75. DAMAGE_KUZURE_S
  76. DAMAGE_KUZURE_C
  77. BLOW_HL
  78. BLOW_HM
  79. BLOW_HH
  80. BLOW_VL
  81. BLOW_VM
  82. BLOW_VH
  83. BLOW_SL
  84. BLOW_SM
  85. BLOW_SH
  86. 5LP
  87. 5MP
  88. 5HP
  89. 5LK
  90. 5MK
  91. 5HK
  92. 5LPF
  93. 5MPF
  94. 5HPF
  95. 5LKF
  96. 5MKF
  97. 5HKF
  98. 2LP
  99. 2MP
  100. 2HP
  101. 2LK
  102. 2MK
  103. 2HK
  104. 8LP
  105. 8MP
  106. 8HP
  107. 8LK
  108. 8MK
  109. 8HK
  110. 9LP
  111. 9MP
  112. 9HP
  113. 9LK
  114. 9MK
  115. 9HK
  116. THROW_F
  117. THROW_B
  118. THROW_F_ATTACK
  119. THROW_F_DAMAGE
  120. THROW_B_ATTACK
  121. THROW_B_DAMAGE
  122. 6LK
  123. 6HK
  124. 6HP
  125. 5HK_FEINT
  126. R5LP
  127. R5LPF
  128. R2LP
  129. R2LK
  130. R5LK
  131. R5LKF
  132. SAVING_MAX2
  133. SAVING_MAX
  134. SAVING2
  135. SAVING3
  136. EX_SAVING
  137. APPEAL_01
  138. APPEAL_02
  139. APPEAL_03
  140. APPEAL_04
  141. APPEAL_05
  142. APPEAL_06
  143. APPEAL_07
  144. APPEAL_08
  145. APPEAL_09
  146. APPEAL_10
  147. SHOT_L
  148. SHOT_M
  149. SHOT_H
  150. SHOT_EX
  151. G_SHOT_L
  152. G_SHOT_M
  153. G_SHOT_H
  154. G_SHOT_EX
  155. KNEE_L
  156. KNEE_L_LAND
  157. KNEE_M
  158. KNEE_M_LAND
  159. KNEE_H
  160. KNEE_H_LAND
  161. KNEE_EX
  162. KNEE_EX_LAND
  163. UPPER_L
  164. UPPER_L_LAND
  165. UPPER_M
  166. UPPER_M_LAND
  167. UPPER_H
  168. UPPER_H_LAND
  169. UPPER_EX
  170. UPPER_EX_LAND
  171. TIGER_GENOCIDE_L
  172. TIGER_GENOCIDE_M
  173. TIGER_GENOCIDE_H
  174. UC_GENOCIDE
  175. UC_GENOCIDE_HIT
  176. UC_GENOCIDE_hoken
  177. UC_GENOCIDE_LAND
  178. VFX_TIGRE_L
  179. VFX_TIGRE_M
  180. VFX_TIGRE_H
  181. VFX_G_TIGRE_L
  182. VFX_G_TIGRE_M
  183. VFX_G_TIGRE_H
  184. VFX_TIGRE_EX
  185. VFX_G_TIGRE_EX
  186. DEMO_START
  187. DEMO_START_LEGACY
  188. DEMO_ROUND_WIN_KO
  189. DEMO_ROUND_WIN_KO2
  190. DEMO_ROUND_WIN_KO3
  191. DEMO_ROUND_WIN_KO4
  192. DEMO_ROUND_WIN_TO
  193. DEMO_ROUND_LOSE
  194. DEMO_MATCH_WIN
  195. DEMO_CONTINUE
  196. DEMO_SUCCESS
  197. DEMO_GAMEOVER
  198. DEMO_BOSS_TARGET
  199. DEMO_RIVAL_SGT

just so y’all know
74. DAMAGE_ASHIBARAI - getting swept
75. DAMAGE_KUZURE_S - standing focus crumple
76. DAMAGE_KUZURE_C - crouching focus crumple

actually this cant be right :frowning: some pointers are missing from where they should be…

edit: it seems like the order is still correct, but there’s blocks of zeroes that throw everything out if you try to use the numbered list to locate a pointer you want. i’ll revise my list to account for those.

  1. STAND
  2. CROUCH
  3. STAND2CROUCH
  4. CROUCH2STAND
  5. STAND2JUMP
  6. JUMP
  7. JUMP2STAND
  8. STAND2JUMP_F
  9. JUMP_F
  10. JUMP2STAND_F
  11. STAND2JUMP_B
  12. JUMP_B
  13. JUMP2STAND_B
  14. TURN_STAND
  15. TURN_CROUCH
  16. TURN_WALK
  17. FORWARD
  18. BACKWARD
  19. DASH
  20. BACKDASH
  21. STAND2GUARD
  22. GUARD_STAND
  23. GUARD2STAND
  24. CROUCH2GUARD
  25. GUARD_CROUCH
  26. GUARD2CROUCH
  27. BOUND_UPWARD_L
  28. BOUND_UPWARD_M
  29. BOUND_UPWARD_H
  30. BOUND_DOWNWARD_L
  31. BOUND_DOWNWARD_M
  32. BOUND_DOWNWARD_H
  33. DOWN_UPWARD
  34. DOWN_DOWNWARD
  35. RISE_UPWARD
  36. RISE_DOWNWARD
  37. RISE_UPWARD_STUN
  38. RISE_DOWNWARD_STUN
  39. B_DOWN_UPWARD
  40. B_DOWN_DOWNWARD
  41. THROW_MISS
  42. THROW_GUARD
  43. STUN
  44. STUN_RECOVER
  45. GUARD_HL
  46. GUARD_HM
  47. GUARD_HH
  48. GUARD_ML
  49. GUARD_MM
  50. GUARD_MH
  51. GUARD_LL
  52. GUARD_LM
  53. GUARD_LH
  54. GUARD_CL
  55. GUARD_CM
  56. GUARD_CH
  57. DAMAGE_HL
  58. DAMAGE_HM
  59. DAMAGE_HH
  60. DAMAGE_ML
  61. DAMAGE_MM
  62. DAMAGE_MH
  63. DAMAGE_LL
  64. DAMAGE_LM
  65. DAMAGE_LH
  66. DAMAGE_CL
  67. DAMAGE_CM
  68. DAMAGE_CH
  69. DAMAGE_HJ
  70. DAMAGE_MJ
  71. DAMAGE_LJ
  72. DAMAGE_UPPER
  73. DAMAGE_LOWER
  74. DAMAGE_ASHIBARAI
  75. DAMAGE_KUZURE_S
  76. DAMAGE_KUZURE_C
  77. BLOW_HL
  78. BLOW_HM
  79. BLOW_HH
  80. BLOW_VL
  81. BLOW_VM
  82. BLOW_VH
  83. BLOW_SL
  84. BLOW_SM
  85. BLOW_SH
  86. 5LP
  87. 5MP
  88. 5HP
  89. 5LK
  90. 5MK
  91. 5HK
  92. 5LPF
  93. 5MPF
  94. 5HPF
  95. 5LKF
  96. 5MKF
  97. 5HKF
  98. 2LP
  99. 2MP
  100. 2HP
  101. 2LK
  102. 2MK
  103. 2HK
  104. 8LP
  105. 8MP
  106. 8HP
  107. 8LK
  108. 8MK
  109. 8HK
  110. 9LP
  111. 9MP
  112. 9HP
  113. 9LK
  114. 9MK
  115. 9HK
  116. THROW_F
  117. THROW_B
  118. THROW_F_ATTACK
  119. THROW_F_DAMAGE
  120. THROW_B_ATTACK
  121. THROW_B_DAMAGE
  122. 6LK
  123. 6HK
  124. 6HP
  125. 5HK_FEINT
  126. R5LP
  127. R5LPF
  128. R2LP
  129. R2LK
  130. R5LK
  131. R5LKF
  132. SAVING_MAX2
  133. SAVING_MAX
  134. SAVING2
  135. SAVING3
  136. EX_SAVING
  137. APPEAL_01
  138. APPEAL_02
  139. APPEAL_03
  140. APPEAL_04
  141. APPEAL_05
  142. APPEAL_06
  143. APPEAL_07
  144. APPEAL_08
  145. APPEAL_09
  146. APPEAL_10
  147. SHOT_L
  148. SHOT_M
  149. SHOT_H
  150. SHOT_EX
  151. G_SHOT_L
  152. G_SHOT_M
  153. G_SHOT_H
  154. G_SHOT_EX
  155. KNEE_L
  156. KNEE_L_LAND
  157. KNEE_M
  158. KNEE_M_LAND
  159. KNEE_H
  160. KNEE_H_LAND
  161. KNEE_EX
  162. KNEE_EX_LAND
  163. UPPER_L
  164. UPPER_L_LAND
  165. UPPER_M
  166. UPPER_M_LAND
  167. UPPER_H
  168. UPPER_H_LAND
  169. UPPER_EX
  170. UPPER_EX_LAND
  171. TIGER_GENOCIDE_L
  172. TIGER_GENOCIDE_M
  173. TIGER_GENOCIDE_H
  174. UC_GENOCIDE
  175. UC_GENOCIDE_HIT
  176. UC_GENOCIDE_hoken
  177. UC_GENOCIDE_LAND
  178. VFX_TIGRE_L
  179. VFX_TIGRE_M
  180. VFX_TIGRE_H
  181. VFX_G_TIGRE_L
  182. VFX_G_TIGRE_M
  183. VFX_G_TIGRE_H
  184. VFX_TIGRE_EX
  185. VFX_G_TIGRE_EX
  186. DEMO_START
  187. DEMO_START_LEGACY
  188. DEMO_ROUND_WIN_KO
  189. DEMO_ROUND_WIN_KO2
  190. DEMO_ROUND_WIN_KO3
  191. DEMO_ROUND_WIN_KO4
  192. DEMO_ROUND_WIN_TO
  193. DEMO_ROUND_LOSE
  194. DEMO_MATCH_WIN
  195. DEMO_CONTINUE
  196. DEMO_SUCCESS
  197. DEMO_GAMEOVER
  198. DEMO_BOSS_TARGET
  199. DEMO_RIVAL_SGT

Immediately after the animation pointer table is another table which contains pointers to the plain text names of the animations. Could be useful if you want to make a tool to automate at least finding the animations, since we’re not ready to automatically edit them yet :stuck_out_tongue:

I think that the value at C relative to the start of the #BAC header contains the location of the first entry in the animation pointer table.

I started looking at Sagat’s 2LP data (7820a0 in SGT.cmn.emz) and then when I got bored like halfway through I started comparing some of the values in his 2FP data. Sorry for how poorly presented this is but hopefully you can use it as a starting point. If I left a value I tried blank it means I couldn’t notice any difference. Since doing this I’ve figured out that both bytes 04 and 06 have to do with the speed of the move, but I can’t understand how it works exactly. It’s not like one is startup and one is recovery; it seems more like byte 6 tells the game the number of frames to pull from wherever (if you make this too large the character disappears at the end of the move for an amount of time depending on how big you made the number), while byte 4 tells the game the in-game amount of time to spend animating the move. Decrease byte 4 and the move speeds up (both startup and recovery), but IIRC increasing it doesn’t make the move slow down. Conversely, decrease byte 4 enough and the move actually won’t come out; you’ll see the startup but never get to the active frames.

So anyway here’s my notes, ask if you need any clarification since they’re kinda obtuse lol

byte 00 (04)
FF:
00:
06:

byte 02 (06)
00:
FF:
1C:

bye 04 (1C)
00:
FF:
22:

byte 06 (22)
FF: sagat disappears at end of c.lp as long as you continue to hold crouch
00: sagat doesnt even do the move
1C: c.lp c.lp seems a lot easier to link than normal…
01: doesnt do the move
06: c.lp CRAZY easy to link into itself… can do c.lp c.fierce, c.lp st.rh hahaha
03: sagat flinches but never gets into active frames
05: lowest value where itll enter hitting frames, sagats c.lp has 6f startup according to frame data but they use some weird system of

including first active frame so…

this is obviously related to frames, but why is it 22? that’s 34 decimal which is obviously way too high. come back to this later.

byte 12 (01)
00:
FF:

byte 14 (01)
00: if i hold crouch, sagat quickly stands up then crouches again after move
FF: sagat freezes in crouch after move
06: same as FF. doesnt seem to make any noticeable difference as to the length of the freeze…its forever
02: same again

byte 20 (22)
00: move seems easier to combo into itself
FF: same as 00 except seems a LITTLE harder to combo into itself…might just be me

this might just be nothing but my inconsistent execution, dont trust this section

byte 22 (09)
00: sagat disappears when you press 2lp and reappears about the time the move should normally end
FF: crashes when do move
05: move goes through startup animation but never hits
06: doesnt seem different from normal, not easier to combo or anything
15: wtf, no move, sagat stands up briefly then crouches again (if you hold down), but after that he wont do it again AND you cant use any

otehr normals until you do something other than stand up, crouch or walk
22: same as 15
10: same as normal

byte 24 (1C)
00: crashes the game upon trying to do move
FF:sagat stands up, goes into neutral stance and i cant do anything
22: sagat looks down, freezes in crouch similar to above.
10:
05: crash
06: crash

byte 28 (01)
00: sagat disappears at start of move and reappears at end, but he can still hit
FF: same as 00, note that if you press lp immediately after crouching sagat still disappears but you get standing lp for some reason?
02: sagat disappears, move hits then game crashes lol
03: sagat disappears, reappears very quickly and move cant hit
04: game crashes

byte 30 (02)
00: get an “unhandled error” crash when select sagat, before i’ve even selected the other character. weird.
01:
FF: game crashes when do 2lp
05:
1C: crash when 2lp

byte 32 (6c)
00: disappears when 2lp, can still hit
FF:
84: disappears when 2lp, can still hit, weirdly you can do multiple 2lps without sagat reappearing, even if they dont combo.

byte 36 (84):
00: haha sagat stands up, frozen in his standing animation for a few frames, during which his forward hand has a hitbox which hits high. he

then does his stand2crouch animation i think, disappearing for a split second somewhere in there too.
FF: same as 00 except he doesnt disappear
6C: same as 00
85: same as FF
22: WTF camera angle changes, then goes back when move is over…
1C: camera angle changes but not for as long, if you were holding toward before you pressed 2lp sagat will warp across the screen
30: same as 00

byte 40 (02)
00:
FF:
01:

byte 42 (02)
00:
FF:

byte 44 (88)
00:
FF:

byte 48 (98)
00:
FF:

byte 52 (03)
00: sagat briefly starts to do 2lp, but after that he wont do it again AND you cant use any otehr normals until you do something other than

stand up, crouch or walk
FF:
01: camera angle change again
02:
04:crash when 2lp
FF:

byte 54 (03)
00:
01:
C4: lol sagat disappears, reappears facing the other way then turns around
FF: same as C4

byte 56 (c4)
00:
01:
02:
FF:

byte 60 (DC)
00:
BC:
C4: sagat spins around before entering hitting frames, turns back around again
84:
88:
FF:

byte 64 (04)

00: sagat stands up briefly then crouches again (if you hold down), but after that he wont do it again AND you cant use any otehr normals

until you do something other than stand up, crouch or walk
03: move recovers REALLY slowly, startup seems normal.
88: crashes game
DF: same as 03
FF: same as 03

byte 66 (04)
seems same as byte 64?

byte 68 (DC)
again seems same??

byte 74 (F0)
00: crash when 2lp
DC: same
E0: crash when 2lp
F1: same
FF: same

byte 76 (06)
00: sagat stands up then immediately crouches
01: 2lp cant be canceled!
02: same as 01
03: same as 01
04: crash on 2lp
05: same as 01
07: same as 01
08: same as 01

byte 78 (02)
anything lower than 02: cant cancel 2lp
anything higher (that i tested): can cancel
FF: crash on 2lp

byte 80 (F4)
00: cant cancel 2lp
01: cant cancel
02: cant cancel
03: cant cancel
04: cant cancel
05: can cancel
06: can cancel
F0: can cancel
F1: cant cancel
FF: cant cancel

byte 82 (0401)
0001: crash on 2lp
0402: sagat freezes in crouch if you try to cancel 2lp
0403: crash on 2lp
0801: crash on 2lp

byte 86 (0700)
0000:startup animates, then sagat stands up and disappears for a bit
0100: crash on 2lp
0200: 2lp has no hitbox
0300: disappears briefly during 2lp, again no hitbox
0400: sagat freezes during active frames of 2lp
0500: 2lp has no hitbox
0600: crash on 2lp
0800: crash on 2lp

byte 88 (0200)
0000: 2lp no active frames
0100: 2lp no active frames
0300: has active frames
0400: has active frames

byte 90-91 (0801)
0001: no hitbox on 2lp
0002: no hitbox on 2lp
0003: 2lp hits during what would normally be startup frames
0004: hits early
0005: hits early
0006: no hitbox
0100: hits early
0101-0109: no hitbox
0110: hits early
0111-0112: no hitbox
0113: hits early
0500: hits early
0501-4: no hitbox
0504: hits early
0800: no hitbox
0802: no hitbox
0804: no hitbox
0803: hits early
0805: no hitbox

bored of testing this for now but hopefully someone can figure it out cause i sure as hell cant

byte 94 (1801)
0001: crash when 2lp
1800: no hitbox
1802+: no hitbox
1808: thought there was no hitbox, but actually its just moved back into sagat…will whiff from all but max range. i havent checked but

maybe this applied to some of the previous values and i didnt notice
1809: crash when 2lp
6401: crash when 2lp

byte 98 (0800)
0000: sagat does STAND2CROUCH when press 2lp
0100+:
0400: crash on 2lp
0500:
0600: 2lp cant be canceled
0700-0900:

byte 100 (0200)
0000-0400:
0201: crash on 2lp
0202: crash on 2lp

byte 102 (6401)
6400-6405:
0000:
FFFF:
7c01:

byte 106 (7c01)
7c00: crash

byte 22 notes for cr.fierce: 02 makes cr.fierce realllly slow to animate… also no hitbox

byte 64/66/68 seem to be “speed classes” for moves…its not as simple as higher/low = slower/faster, its weird.

with byte 64, lower numbers = move doesnt come out.

byte 80 set to F1 or EC makes there be a 2nd earlier hit of c.fierce…that is also cancellable … does regular cr fierce damage

BC -> same but not cancellable
BE: earlier hit at a different point, also not cancelable… BUT if you set byte 88 to 02 and do it meaty you tehres ANOTHER later hit that

IS cancelable…wtf
AE: earlier hit + cancellable
CC: really late hit really close to sagat, like after the move looks like its recovered it hits, not cancelable.

hey i just want to say that i’m still here and really happy about the potential progress towards cancelling stuff, just been very sick so i dont want to do anything that requires any thought

lol its all good

pointer table to hit data starts immediately after the pointer table to the animation names, which in turn as i said starts right after the pointer table to the animations themselves. in sgt.cmn.emz this is at 77a840. once again its full of whitespace so actually finding the specific hit data you want from the table is is going to require making a list of the addresses…