YesNoOk
avatar

CMD to Vans's buffering system (Buffering Step 2) converter (Read 8978 times)

Started by Jesuszilla, February 03, 2017, 05:43:55 am
Share this topic:
CMD to Vans's buffering system (Buffering Step 2) converter
#1  February 03, 2017, 05:43:55 am
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
After only a couple days' worth of work, I'm proud to release this very handy tool:




The helper code goes in State 10371; the CMD triggers go in your .CMD for your ChangeState. You can (and should) modify as needed.

TODO: JP Localization

Get it (and the source) at GitHub!


As you may have noticed, the repository name is "Dude Mugen." With that, I am pleased to announce that this is only the beginning of a new MUGEN IDE similar to Fighter Factory which will be completely open source and written in C#! Please contact me if you wish to contribute to the project!
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#2  February 03, 2017, 05:47:38 am
  • ******
    • www.justnopoint.com/
You should add the helper code for charge commands too. Either to that tool or just quote what you'd showed me in the other topic so it's on this page!

I'll have to use this in my Primal Rage chars to test run it! Congratulations and WOOT FF3 replacement?! I have no C+ knowledge but I have tons of ways to improve FF3!

Thank you very much for this tool!
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#3  February 03, 2017, 06:01:45 am
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
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!):
Code:
;----------------------------[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:
Code:
;--------------------------[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):
Code:
;------------------- 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.
Last Edit: February 03, 2017, 06:07:53 am by Jesuszilla
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#4  February 03, 2017, 06:08:16 am
  • *****
  • Estoy siempre listo para un desafío.
    • Puerto Rico
    • im41784@yahoo.com
Hell yea I will be using this for my full game characters, now that I have a little
Bit more experience with mugen I've been noticing all sorts of command bugs.
Recently I've been having issues with my ryu, I do a jump in low kick, land to
A heavy shoryuken and the light version pops out if Im too fast inputing the command
Hope this fixes that.

I have a question about the buffer times, are they universal for all chars or is it
Something we should use cheatengine to find for specific chars?
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#5  February 03, 2017, 06:11:58 am
  • ****
  • A frame here, a pixel there.
You've really made some great progress on this buffering system, and I'm very pleased to hear you're going to work on a new Mugen editing suite. Keep up the awesome work!
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#6  February 03, 2017, 06:13:26 am
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
Hell yea I will be using this for my full game characters, now that I have a little
Bit more experience with mugen I've been noticing all sorts of command bugs.
Recently I've been having issues with my ryu, I do a jump in low kick, land to
A heavy shoryuken and the light version pops out if Im too fast inputing the command
Hope this fixes that.

I have a question about the buffer times, are they universal for all chars or is it
Something we should use cheatengine to find for specific chars?

You can generally check buffer time by framestepping. Input the direction or button, step frame, check to see if it's still counted when you input the next command. Repeat the process until it doesn't, and the amount of ticks when it stops recognizing the command is your buffer time.
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#7  February 03, 2017, 06:16:45 am
  • ******
  • Somewhere between Guilty Gear and real rap
  • ey b0ss
    • nass.yh95@gmail.com
Can we give Jesuszilla a custom star for MUGEN Sorcerer Supreme? Because that's what he is, and he's more than deserving of that.

Thanks a lot for this contribution. And good luck with your MUGEN IDE project. That is something I will be waiting for with a whole lot of hype. :)
This is a generic forum signature.
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#8  February 03, 2017, 06:24:13 am
  • *****
  • Estoy siempre listo para un desafío.
    • Puerto Rico
    • im41784@yahoo.com
Elecbyte should just give the source code to jay zilla here and let him take over.
im looking toward to that new mugen editor as well, we need an update to
Fighter factory I'm sick of having to open and close it multiple time due to the
Mugen is already running bug I get sometimes, that shits annoying.
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#9  February 03, 2017, 09:20:24 pm
  • *****
  • Thanks and God bless
    • USA
    • ricepigeon.neocities.org
Looking forward to this.

Out of curiousity, I know this is a problem exclusive to IKEMEN, but does this account for the issue in Vans's buffer system where directional inputs are reversed depending on which way the player is facing?
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#10  February 04, 2017, 12:30:04 am
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
I'm not aware of any such issue. I don't use IKEMEN.
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#11  February 21, 2017, 11:40:31 am
  • *****
  • "The Future is Now"
I'm a little stupid.

But can someone explain to me what exactly is wrong with the default mugen command buffer? and what a command buffer is???
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#12  February 21, 2017, 08:33:38 pm
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#13  February 21, 2017, 08:44:51 pm
  • ******
    • www.justnopoint.com/
You also get more control over the timings and nuances of the motions and you can do 360/720 chars a ton easier and well without worrying about the cmd limit
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#14  February 21, 2017, 08:51:57 pm
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
Oh right, and, assuming you have the .CMD commands in the exact same order, we could finally have standardized .CMD files!

This means things such as stable tag and even Twelve's XCOPY could work! I forget what other benefits there are but those are the big two I could think of.
Last Edit: February 21, 2017, 09:00:24 pm by Jesuszilla
Re: CMD to Vans's buffering system (Buffering Step 2) converter
#15  February 21, 2017, 09:11:29 pm
  • ******
    • www.justnopoint.com/
Hey that's pretty neat. Note that in your chars that use this and be sure to note it in your IDE