I should also mention that although this tool is released, it does not work with any buffering system released at the moment. Stay tuned to future releases for more information!
I'll probably update the cvskfm to include this sometime this weekend to help y'all out!
Until then, this is how it works:
The buffer for buttons and directions decreases by "shifting" the bits (bit shifting in MUGEN can only be done by dividing, sadly, though this does not affect functionality!):
;----------------------------[BUFFER DECREASE]---------------------------------;
;--------------------------------[BUTTONS]-------------------------------------;
;BUTTON:
;var(0) = PRESS
;var(1) = HOLD
;var(2) = RELEASE
;Final tick (pattern repeats going up, can store 4 ticks):
; 1 - LP
; 2 - MP
; 4 - HP
; 8 - Start
;16 - LK
;32 - MK
;64 - HK
;DIRECTIONAL:
;var(3) = PRESS
;var(4) = HOLD
;var(5) = RELEASE
;Final tick (pattern repeats going up, can store 8 ticks):
; 1 - U
; 2 - D
; 4 - B
; 8 - F
; BUTTON
[State 10371, Press Dec]
type = VarSet
trigger1 = root, HitPauseTime = 0
var(0) = var(0)/128
ignorehitpause = 1
[State 10371, Hold Dec]
type = VarSet
trigger1 = root, HitPauseTime = 0
var(1) = var(1)/128
ignorehitpause = 1
[State 10371, Negative Edge Dec]
type = VarSet
trigger1 = root, HitPauseTime = 0
var(2) = var(2)/128
ignorehitpause = 1
; DIRECTION
[State 10371, Press Dec]
type = VarSet
trigger1 = root, HitPauseTime = 0
var(3) = var(3)/16
ignorehitpause = 1
[State 10371, Hold Dec]
type = VarSet
trigger1 = root, HitPauseTime = 0
var(4) = var(4)/16
ignorehitpause = 1
[State 10371, Negative Edge Dec]
type = VarSet
trigger1 = root, HitPauseTime = 0
var(5) = var(5)/16
ignorehitpause = 1
Initialization:
;--------------------------[BUFFER DEFINITION]---------------------------------;
;----------------------------[BUTTON BUFFER]-----------------------------------;
;Leave the BUTTON BUFFER alone for compatibility.
;BUTTON:
;var(0) = PRESS
;var(1) = HOLD
;var(2) = RELEASE
;Final tick (pattern repeats going up, can store 4 ticks):
; 1 - LP
; 2 - MP
; 4 - HP
; 8 - Start
;16 - LK
;32 - MK
;64 - HK
;DIRECTIONAL:
;var(3) = PRESS
;var(4) = HOLD
;var(5) = RELEASE
;Final tick (pattern repeats going up, can store 8 ticks):
; 1 - U
; 2 - D
; 4 - B
; 8 - F
;var(13) = UP
;var(14) = DOWN
;var(15) = FWD
;var(16) = BWD
;BUTTON PRESS:
[State 10371, START Init]
type = VarSet
trigger1 = command = "start"
var(0) = var(0)|1024
ignorehitpause = 1
[State 10371, HK Init]
type = VarSet
trigger1 = command = "c"
var(0) = var(0)|8192
ignorehitpause = 1
[State 10371, HP Init]
type = VarSet
trigger1 = command = "z"
var(0) = var(0)|512
ignorehitpause = 1
[State 10371, MK Init]
type = VarSet
trigger1 = command = "b"
var(0) = var(0)|4096
ignorehitpause = 1
[State 10371, MP Init]
type = VarSet
trigger1 = command = "y"
var(0) = var(0)|256
ignorehitpause = 1
[State 10371, LK Init]
type = VarSet
trigger1 = command = "a"
var(0) = var(0)|2048
ignorehitpause = 1
[State 10371, LP Init]
type = VarSet
trigger1 = command = "x"
var(0) = var(0)|128
ignorehitpause = 1
;BUTTON HOLD:
[State 10371, START Init]
type = VarSet
trigger1 = command = "start" || command = "hold_start"
var(1) = var(1)|1024
ignorehitpause = 1
[State 10371, HK Init]
type = VarSet
trigger1 = command = "c" || command = "hold_c"
var(1) = var(1)|8192
ignorehitpause = 1
[State 10371, HP Init]
type = VarSet
trigger1 = command = "z" || command = "hold_z"
var(1) = var(1)|512
ignorehitpause = 1
[State 10371, MK Init]
type = VarSet
trigger1 = command = "b" || command = "hold_b"
var(1) = var(1)|4096
ignorehitpause = 1
[State 10371, MP Init]
type = VarSet
trigger1 = command = "y" || command = "hold_y"
var(1) = var(1)|256
ignorehitpause = 1
[State 10371, LK Init]
type = VarSet
trigger1 = command = "a" || command = "hold_a"
var(1) = var(1)|2048
ignorehitpause = 1
[State 10371, LP Init]
type = VarSet
trigger1 = command = "x" || command = "hold_x"
var(1) = var(1)|128
ignorehitpause = 1
[State 10371, LP Init]
type = VarSet
trigger1 = command = "up" || command = "hold_x"
var(1) = var(1)|128
ignorehitpause = 1
;BUTTON RELEASE:
[State 10371, Neg START Init]
type = VarSet
trigger1 = (var(1)&1024) = 0 && (var(1)&8) > 0
var(2) = var(2)|1024
ignorehitpause = 1
[State 10371, Neg HK Init]
type = VarSet
trigger1 = (var(1)&8192) = 0 && (var(1)&64) > 0
var(2) = var(2)|8192
ignorehitpause = 1
[State 10371, Neg HP Init]
type = VarSet
trigger1 = (var(1)&512) = 0 && (var(1)&4) > 0
var(2) = var(2)|512
ignorehitpause = 1
[State 10371, Neg MK Init]
type = VarSet
trigger1 = (var(1)&4096) = 0 && (var(1)&32) > 0
var(2) = var(2)|4096
ignorehitpause = 1
[State 10371, Neg MP Init]
type = VarSet
trigger1 = (var(1)&256) = 0 && (var(1)&2) > 0
var(2) = var(2)|256
ignorehitpause = 1
[State 10371, Neg LK Init]
type = VarSet
trigger1 = (var(1)&2048) = 0 && (var(1)&16) > 0
var(2) = var(2)|2048
ignorehitpause = 1
[State 10371, Neg LP Init]
type = VarSet
trigger1 = (var(1)&128) = 0 && (var(1)&1) > 0
var(2) = var(2)|128
ignorehitpause = 1
;DIRECTION PRESS:
[State 10371, UP Init]
type = VarSet
trigger1 = command = "up"
var(3) = var(3)|16
ignorehitpause = 1
[State 10371, DOWN Init]
type = VarSet
trigger1 = command = "down"
var(3) = var(3)|32
ignorehitpause = 1
[State 10371, BWD Init]
type = VarSet
trigger1 = command = "back"
var(3) = var(3)|64
ignorehitpause = 1
[State 10371, FWD Init]
type = VarSet
trigger1 = command = "fwd"
var(3) = var(3)|128
ignorehitpause = 1
;DIRECTION HOLD:
[State 10371, UP Init]
type = VarSet
trigger1 = command = "up" || command = "holdup"
var(4) = var(4)|16
ignorehitpause = 1
[State 10371, DOWN Init]
type = VarSet
trigger1 = command = "down" || command = "holddown"
var(4) = var(4)|32
ignorehitpause = 1
[State 10371, BWD Init]
type = VarSet
trigger1 = command = "back" || command = "holdback"
var(4) = var(4)|64
ignorehitpause = 1
[State 10371, FWD Init]
type = VarSet
trigger1 = command = "fwd" || command = "holdfwd"
var(4) = var(4)|128
ignorehitpause = 1
;DIRECTION RELEASE:
[State 10371, Neg UP Init]
type = VarSet
trigger1 = (var(4)&16) = 0 && (var(4)&1) > 0
var(5) = var(5)|16
ignorehitpause = 1
[State 10371, Neg DOWN Init]
type = VarSet
trigger1 = (var(4)&32) = 0 && (var(4)&2) > 0
var(5) = var(5)|32
ignorehitpause = 1
[State 10371, Neg BWD Init]
type = VarSet
trigger1 = (var(4)&64) = 0 && (var(4)&4) > 0
var(5) = var(5)|64
ignorehitpause = 1
[State 10371, Neg FWD Init]
type = VarSet
trigger1 = (var(4)&128) = 0 && (var(4)&8) > 0
var(5) = var(5)|128
ignorehitpause = 1
Just toss that shit in there and remember that initialization goes BELOW the decrements. You must add a decrement for each command you add with this tool like so (refer to buffering.vns in Vans's and I's characters if you're unsure where to place it):
;------------------- SPECIALS -------------------------------------------------;
[State 10371, DP Dec]
type = VarAdd
trigger1 = var(22)
var(22) = -1
ignorehitpause = 1
[State 10371, rDP Dec]
type = VarAdd
trigger1 = var(26)
var(26) = -1
ignorehitpause = 1
[State 10371, QCF Dec]
type = VarAdd
trigger1 = var(21)
var(21) = -1
ignorehitpause = 1
[State 10371, HCB Dec]
type = VarAdd
trigger1 = var(23)
var(23) = -1
ignorehitpause = 1
[State 10371, CB,F Dec]
type = VarAdd
trigger1 = var(28)
var(28) = -1
ignorehitpause = 1
[State 10371, CD,U Dec]
type = VarAdd
trigger1 = var(29)
var(29) = -1
ignorehitpause = 1
In this example, the buffering times for directions and buttons are both 2 ticks. You should replace the | values with the proper ones. More on that later.