YesNoOk
avatar

Commands pissing you off? Well I have extremely bad news for you. (Read 11393 times)

Started by Vans, January 28, 2017, 04:09:30 pm
Share this topic:
Commands pissing you off? Well I have extremely bad news for you.
#1  January 28, 2017, 04:09:30 pm
  • ****
    • Japan
Hi!

I just want to start this thread with a disclaimer,

This thread is not for the faint of heart, if you're the type of person who is EXTREMELY picky about bugs then this one might provoke too much stimulation. In other words, this is your last warning to take the blue pill and pretend this bug doesn't exist.

To keep discussion civil: try to be as clear as possible in your arguments, as I believe this warrants a serious discussion. Thank you.

FINAL WARNING

Spoiler, click to toggle visibilty
Re: Commands pissing you off? Well I have extremely bad news for you.
#2  January 28, 2017, 04:18:34 pm
  • ****
  • Time to give back to this place. Starting now.
    • USA
    • mega491@yahoo.com
HO-LY crap, I thought this bug was only a myth but damn...seeing it in action makes me scared for content creators trying for accuracy. With a big bug like this, people can just abuse it and get the command out with no problem (it works with all the known commands right?)... Yeah, this is a really big problem guys...
Re: Commands pissing you off? Well I have extremely bad news for you.
#3  January 28, 2017, 06:11:11 pm
  • avatar
  • ******
  • Complicated.cns
    • Argentina
You killed MUGEN. MUGEN is dead.

 :quit:
Re: Commands pissing you off? Well I have extremely bad news for you.
#4  January 28, 2017, 06:24:02 pm
  • ****
    • Japan
Before I go to bed, I just wanna mention that Buffering Step 2 can correctly fix this problem, only a slight modification might be required.
Re: Commands pissing you off? Well I have extremely bad news for you.
#5  January 30, 2017, 01:41:38 am
  • ******
    • www.justnopoint.com/
I'm glad that fixes it because I'd been considering doing that for my nonHDBZ chars before JZ tried to do it. I'm glad he figured out the hard part lol

BTW, does that method replace your old buffering method or does it work in conjunction with your buffer code?
Re: Commands pissing you off? Well I have extremely bad news for you.
#6  January 30, 2017, 08:44:57 am
  • ****
    • Japan
It is the same system, just updated. :P
Re: Commands pissing you off? Well I have extremely bad news for you.
#7  January 30, 2017, 06:06:14 pm
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
I successfully managed to refactor the button press/hold/release mechanism last night based on how CvS2 handles it. You can of course extend it to multiple variables if you need more than 2 ticks of buffer time (since it stores all 7 buttons plus the directions, it requires 11 bits for tick 1 and 11 bits for tick 2, which means 22 bits total, meaning you can't fit more than 2 ticks' worth of data in there.

Unless... I move the directions to their own variables, then you could store up to 4 ticks for buttons, and up to 8 for directions. I may do that tonight for better cross-compatibility.


There are 3 variables necessary for this: 1 for press, 1 for hold, and 1 for release. Release does not rely on ~ at all, meaning it bypasses this bug.

Additionally, checking for punch or kick buttons is as easy as using a bitwise check, meaning no more longass lines like a Drew Pickles Goes To video. There should also no longer be a need to define multi-directions in the CNS for this buffering system since the buffering variables will contain these values.
Last Edit: January 30, 2017, 06:12:16 pm by Jesuszilla
Re: Commands pissing you off? Well I have extremely bad news for you.
#8  January 30, 2017, 06:16:22 pm
  • ****
  • Time to give back to this place. Starting now.
    • USA
    • mega491@yahoo.com
Oh yeah, I forgot that you guys already had fixes for it, but I wonder if people would use it though. At least the option to fix it is there.
Re: Commands pissing you off? Well I have extremely bad news for you.
#9  January 30, 2017, 06:26:54 pm
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
I plan to create a program that will output the necessary triggers for setting an arbitrary buffering variable (you'll need to input the buffering time and variable to use) based on the same way you'd define a regular command. e.g. you would enter the buffer time, the variable number, and D,DF,F for a QCF command and it would output the buffering system equivalent and the trigger you need to use in -1.

You'd have no excuses or complaining how "hard" it is at this point. And you'll gain a lot of functionality from it!

Progress edit: Last night, I split the directions from the buttons to do exactly as I said in the last post. Detecting the difference between a raw direction press (e.g. F,D) and a "general" direction press (e.g. $F,$D) is possible, so charge commands can work perfectly. It also provides easier detection for directions so that tilting back and forth doesn't accidentally lead to a dash, though this part needs some more research and fine tuning.

But hey, by, say, the end of Friday, I should have a working app to handle the command creation as simply as inputting what you'd write in the .cmd!
Last Edit: January 31, 2017, 06:23:08 pm by Jesuszilla
Re: Commands pissing you off? Well I have extremely bad news for you.
#10  February 02, 2017, 03:43:37 am
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
Bump because this is big...




Output works! I almost have it finished. Just needs to detect release multi-directions and more testing of actual buttons (to handle stuff like Shungokusatsu). It should even handle the obscure > token that nobody uses:
Code:
;   greater-than (>) - means there must be no other keys pressed or released
;                      between the previous and the current symbol.
;          egs. command = a, >~a   ;press a and release it without having hit
;                                  ;or released any other keys in between
Re: Commands pissing you off? Well I have extremely bad news for you.
#11  February 02, 2017, 03:59:10 am
  • ******
    • www.justnopoint.com/
What's the element buffer time do?
Re: Commands pissing you off? Well I have extremely bad news for you.
#12  February 02, 2017, 04:03:51 am
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
It's the time for each press. See (var(41) := 9 + (2**x))

Direction and button buffer time are separate from element buffer time. Not only is it because CvS2 does it, it also allows for a bit more expansion. Element buffer time can be up to 15 ticks per element.


For example, with an element time of 9, you'd have up to 27 ticks to input D,DF,F; 9 ticks for each element.
Re: Commands pissing you off? Well I have extremely bad news for you.
#13  February 02, 2017, 04:08:02 am
  • ******
    • www.justnopoint.com/
Ah, that's what I thought. Cool. I haven't looked at your Felicia that has this yet. What does the .cmd look like now? Just the required commands? How does this fix the reversed command bug? (It does, right)
Re: Commands pissing you off? Well I have extremely bad news for you.
#14  February 02, 2017, 04:54:47 am
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
It does, but none of the characters I've uploaded have this yet.
Re: Commands pissing you off? Well I have extremely bad news for you.
#15  February 02, 2017, 05:00:27 am
  • ******
    • www.justnopoint.com/
Oh, thought you said you applied it to Felicia. Guess you meant privately.

The reason I ask how it fixes it is because forward would still be away for a bit after landing and other certain situations. So I'm not seeing how it fixes it yet.
Re: Commands pissing you off? Well I have extremely bad news for you.
#16  February 02, 2017, 05:11:51 am
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
The next versions of my CvS2 stuff will have this, which will be released sooner than a VC Felicia update since I'm holding off until I can complete true turbo.

What do you mean away for a bit? In that example, var(41) stores each direction for 9 ticks. The cond detects the flipping part for each element, which makes it double-sided, letting you complete the command as you were even if you were facing a different direction when you began to input it.
Re: Commands pissing you off? Well I have extremely bad news for you.
#17  February 02, 2017, 05:15:17 am
  • ******
    • www.justnopoint.com/
Yeah it would have helped if I'd read the code fully :p You're right. I'm excited for this app
Re: Commands pissing you off? Well I have extremely bad news for you.
#18  February 02, 2017, 05:35:01 am
  • ******
  • Loyal to the Game
    • USA
    • http://jesuszilla.trinitymugen.net/
Oh and one more thing: this won't make commands charge for you; that's separate logic. You have to handle that part on your own, but Dee Jay, Nash, and Alex will have examples of how to do that. It's basically what Phantom.of.the.Server does for his charge characters, but in a helper with a middle buffering step for the charge itself. Nothing fancy or scary.

Code:
[State 10380, Charge Back]
type = VarAdd
triggerall = var(24) < 48
trigger1 = p2dist X >= 0
trigger1 = command = "back" || command = "holdback"
trigger2 = p2dist X < 0
trigger2 = command = "fwd" || command = "holdfwd"
var(24) = 1
[State 10380, Charge Down]
type = VarAdd
triggerall = var(25) < 48
trigger1 = command = "down" || command = "holddown"
var(25) = 1

[State 10380, Charge Back Buffer]
type = VarSet
trigger1 = var(24) >= 48
var(26) = 9
[State 10380, Charge Down Buffer]
type = VarSet
trigger1 = var(25) >= 48
var(27) = 9

[State 10380, Charge Back Reset]
type = VarSet
triggerall = var(24)
trigger1 = p2dist X >= 0
trigger1 = !(command = "back" || command = "holdback")
trigger2 = p2dist X < 0
trigger2 = !(command = "fwd" || command = "holdfwd")
var(24) = 0
[State 10380, Charge Down Reset]
type = VarSet
triggerall = var(25)
trigger1 = command != "down" && command != "holddown"
var(25) = 0

[State 10371, Charge Back Dec]
type = VarAdd
triggerall = var(24) < 48
trigger1 = var(26)
var(26) = -1
[State 10371, Charge Down Dec]
type = VarAdd
triggerall = var(25) < 48
trigger1 = var(27)
var(27) = -1

See? Pretty straightforward. Though you'll need to make minor modifications for charge partitioning, but if you're making a character that relies on that, you ought to know what to do.
Last Edit: February 02, 2017, 05:38:31 am by Jesuszilla
Re: Commands pissing you off? Well I have extremely bad news for you.
#19  February 02, 2017, 10:25:48 am
  • ****
    • Japan
Beautiful!
Re: Commands pissing you off? Well I have extremely bad news for you.
#20  February 05, 2017, 01:52:08 am
  • ******
Have you tried using the "greater than" symbol?
the KFM cmd file said:
;   greater-than (>) - means there must be no other keys pressed or released
;                      between the previous and the current symbol.
;          egs. command = a, >~a   ;press a and release it without having hit
;                                  ;or released any other keys in between
tl;dr version: ">" = "Only".

I don't know if it helps. I have never used it until now for a project I'm working on.