well, I kinda created my own platform style movement in mugen also I had to override alot of basic and default behaviours via a few changestates when walking, jumping, crouching, etc into a custom standing state. in that custom standing state, i have given the player control for attacking but when pressing up or down the ctrlset value is 0 so i can move my player down or up without it crouching or jumping. here is a small example of what I did.
[State -1, Platform Style Movement]
type = VelSet
triggerall = enemy,name = "NNR"
triggerall = enemy,authorname = "ImmortaL -SyN-"
triggerall = statetype != A
triggerall = movetype != A
trigger1 = enemy,var(0) = 1
trigger1 = enemy,var(3) >= 400
x = ifelse((command = "holdfwd"),const(velocity.walk.fwd.x)*1.25,ifelse((command = "holdback"),const(velocity.walk.back.x)*1.25,0))
y = ifelse(((command = "holdup" && enemy,var(3) < 4551 && pos y > -142.3*2) || (command = "holdup" && enemy,var(3) >= 4551 && pos y > -175.5*2)) ,-2.5*1.25,ifelse((command = "holddown" && pos y < -88.72*2),2.5*1.25,0))
ignorehitpause = 1
[State -1, Override certain states]
type = ChangeState
triggerall = enemy,name = "NNR"
triggerall = enemy,authorname = "ImmortaL -SyN-"
triggerall = Statetype != A
triggerall = enemy,var(0) = 1
trigger1 = (roundstate = 2 && stateno = 0) && time = [0,1]
trigger2 = (roundstate = 2 && stateno = 20) && time = [0,1]
trigger3 = (roundstate = 2 && (stateno = 10 || stateno = 11)) && time = [0,1]
trigger4 = (roundstate = 2 && stateno = 40) && time = [0,1]
value = 99998804
[State -1, Platform Sytle Game Landing]
type = ChangeState
triggerall = enemy,name = "NNR"
triggerall = enemy,authorname = "ImmortaL -SyN-"
triggerall = Statetype = A
triggerall = enemy,var(0) = 1
triggerall = enemy,var(3) >= 125
triggerall = statetime > 10
trigger1 = numhelper(99998890)
trigger1 = pos y >= (helper(99998890),fvar(0))
value = 99998806
ctrl = 0
ignorehitpause = 1
i have a helper that binds with your movement but stays in place when the characters statetype is a, the y pos that is, the x pos continues to bind so its like a pos y>= 0 trigger many use for landing tells my character to go into a landing state no matter when part of the screen you are at for that proper platform behaviour.
also in the standing state, the custom one.
;===========================
;Character Behaviour
;===========================
[Statedef 99998804]
type = s
movetype = i
physics = s
anim = 6666
ctrl = 0
[State 0, PosFreeze]
type = PosFreeze
trigger1 = enemy,var(3) <= 350
value = 1
ignorehitpause = 1
[State 0, CtrlSet]
type = CtrlSet
trigger1 = 1
value = ifelse((enemy,var(3) <= 350),0,1)
ignorehitpause = 1
persistent = 0
State 0, CtrlSet]
type = CtrlSet
trigger1 = enemy,var(3) > 350
value = ifelse((command ="holdup"),0,1)
ignorehitpause = 1
[State 0, PosSet]
type = PosSet
trigger1 = !numpartner
triggerall = prevstateno = 99998803
trigger1 = time = 0
x = 0
y = -115.5*2
[State 0, PosSet]
type = PosSet
trigger1 = numpartner
triggerall = prevstateno = 99998803
trigger1 = time = 0
x = ifelse(id > (partner,id),175,-175)
y = -115.5*2
[State 0, Jump]
type = changestate
trigger1 = command = "holdup"
trigger1 = command = "a" || command = "b" || command = "c"
value = 99998805
persistent = 0
[State 0, Turning]
type = changestate
trigger1 = command = "holdback"
value = 99998807
persistent = 0
;----------------------------------------------
;Jump (TMNT Mini Game Only)
;----------------------------------------------
[Statedef 99998805]
type = A
movetype = I
physics = N
[State 0, CtrlSet]
type = CtrlSet
trigger1 = statetime > 10
value = 1
[State 0, VelSet]
type = VelSet
trigger1 = time = 1
y = const(velocity.jump.y)
[State 50, 2]
type = ChangeAnim
trigger1 = Time = 0
value = ifelse((vel x)=0, 41, ifelse((vel x)>0, 42, 43))
[State 50, 3]
type = ChangeAnim
trigger1 = time > 15
trigger1 = SelfAnimExist(anim + 3)
persistent = 0
value = Anim + 3
[State 0, VelAdd]
type = VelAdd
trigger1 = statetime <= 30
x = ifelse(command = "holdfwd",.0561,ifelse(command ="holdback",-.0561,0))
y = ifelse(command = "holdup",-.1261,ifelse(command ="holddown",.0561,0))
ignorehitpause = 1
[State 0, Gravity]
type = Gravity
trigger1 = time > 1
;===============================================================
;Landing
;===============================================================
[Statedef 99998806]
type = S
anim = 12
ctrl = 0
velset = 0,0
[State 0, PosSet]
type = PosSet
trigger1 = time = 0
y = helper(99998890),fvar(0)
ignorehitpause = 1
persistent = 0
[State 0, Jump]
type = changestate
trigger1 = command = "holdup"
trigger1 = command = "a" || command = "b" || command = "c"
value = 99998805
persistent = 0
[State 0, ChangeState]
type = ChangeState
trigger1 = !animtime
value = 99998804
ignorehitpause = 1
;===============================================================
;Turning
;===============================================================
[Statedef 99998807]
type = S
anim = 5
[State 0, Turn]
type = Turn
trigger1 = time = 0
ignorehitpause = 1
persistent = 0
[State 0, Jump]
type = changestate
trigger1 = command = "holdup"
trigger1 = command = "a" || command = "b" || command = "c"
value = 99998805
persistent = 0
[State 0, ChangeState]
type = ChangeState
trigger1 = !animtime
value = 99998804
ignorehitpause = 1
;==============================================================
;TMNT Minigame Character System Helper
;==============================================================
[Statedef 99998890]
type = s
anim = 6666
physics = s
[State 0, PosSet]
type = PosSet
trigger1 = 1
x = root,pos x
ignorehitpause = 1
[State 0, PosSet]
type = PosSet
trigger1 = root,statetype != A
y = root,pos y
ignorehitpause = 1
[State 0, Y Position ID for landing]
type = VarSet
trigger1 = root,statetype = A
fvar(0) = pos y
ignorehitpause = 1
I coded my own system states for this but in the custom standing states, moving up or down disables control so that helps eliminate jumping or crouching, and with that, you can hold up or up,fwd, or up,back and either a,b, or c to jump.