ROM Hack [Release] Sm4shCommand

Yudowat

That one guy that shows up occasionally
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
Would I be correct to say that in the current state of Sm4sh modding, we cannot make moves able to be exclusively jump canceled such as shine in Melee, or auto-cancel upon landing such as Falco's lasers in Melee? I'm aware of Allow_interrupt, but that allows interuption with literally any move, including the one you just used.
MSC should make this all possible. Sammi is working on it currently.
 
  • Like
Reactions: Deleted User

HeartBound

Well-Known Member
Member
Joined
Feb 11, 2016
Messages
159
Trophies
0
Age
33
XP
105
Country
Canada
Would I be correct to say that in the current state of Sm4sh modding, we cannot make moves able to be exclusively jump canceled such as shine in Melee, or auto-cancel upon landing such as Falco's lasers in Melee? I'm aware of Allow_interrupt, but that allows interuption with literally any move, including the one you just used.
just figure out msc, the tools are there :)
 

The_Marcster

Well-Known Member
Newcomer
Joined
Aug 18, 2015
Messages
98
Trophies
0
Age
24
XP
86
Country
Gambia, The
Would I be correct to say that in the current state of Sm4sh modding, we cannot make moves able to be exclusively jump canceled such as shine in Melee, or auto-cancel upon landing such as Falco's lasers in Melee? I'm aware of Allow_interrupt, but that allows interuption with literally any move, including the one you just used.

I think theoretically it should be possibly to make moves behave like Fox's reflector on reflection (only jump/roll cancelling), but I haven't found a corresponding command yet. I think the command for that should be in SpecialLwHit, but the main script is just empty. This could be completely wrong however, because putting a Allow_Interupt() in any of the scripts (SpecialLwEnd, SpecialLwHit, SpecialLwLoop, SpecialLwStart as well as one unparsed script that contains the hitbox) didn't change the move at all for me.
 
Last edited by The_Marcster,

Yudowat

That one guy that shows up occasionally
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
just figure out msc, the tools are there :)
I think theoretically it should be possibly to make moves behave like Fox's reflector on reflection (only jump/roll cancelling), but I haven't found a corresponding command yet. I think the command for that should be in SpecialLwHit, but the main script is just empty. This could be completely wrong however, because putting a Allow_Interupt() in any of the scripts (SpecialLwEnd, SpecialLwHit, SpecialLwLoop, SpecialLwStart as well as one unparsed script that contains the hitbox) didn't change the move at all for me.
That's in MSC. Give it a couple weeks.
 
  • Like
Reactions: Deleted User

Yudowat

That one guy that shows up occasionally
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
What is the reason for this? Wouldn't this make sense? If jump/roll cancels are handled in MSC, why aren't other forms of cancelling?
If you're just trying to get me to release my secret roll/jump cancel command then you're out of luck. No such thing exists, and it's just the way it is. Yes, it would make sense and actually, all forms of cancelling are handled in MSC (apart from Allow_Interrupt).
 
  • Like
Reactions: Deleted User

The_Marcster

Well-Known Member
Newcomer
Joined
Aug 18, 2015
Messages
98
Trophies
0
Age
24
XP
86
Country
Gambia, The
If you're just trying to get me to release my secret roll/jump cancel command then you're out of luck. No such thing exists, and it's just the way it is. Yes, it would make sense and actually, all forms of cancelling are handled in MSC (apart from Allow_Interrupt).

Well, thanks for the explanation. I hope there's some progress on MSC soon.
 

Sammi Husky

Well-Known Member
OP
Member
Joined
Jul 6, 2014
Messages
312
Trophies
0
Age
29
XP
498
Country
United States
The reason all canceling is done in MSC is because all Action coding is in MSC. Everything that controls ahat subaction and action to play after reading the controller is in msc. So since ACMD never handles switching moves, it never needed allow interupts.

The way the jump cancels and stuff work in MSC isnt through a command either. The MSC script checks what move your currently in and then constantly polls the controller for input changes, if an input was pressed it cgecks if the move that youbwould do from pressing that button is ALLOWED, and if it is, changes to the jump action

MSC is the source code for fighters and controls everything. Everything is done by reading inputs. For example it does things like:
Code:
While(true){
    If(buttonsPressed){
        if(player.OnGround){
            var btn = getInputs();
            if(btn == buttons.A && btn != buttons.A | buttons.LeftStick){
                CallACMD("Attack11");
            }
            else{
                CallACMD("Wait1");
            }
        }
    }
}
 

Yudowat

That one guy that shows up occasionally
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
The reason all canceling is done in MSC is because all Action coding is in MSC. Everything that controls ahat subaction and action to play after reading the controller is in msc. So since ACMD never handles switching moves, it never needed allow interupts.

The way the jump cancels and stuff work in MSC isnt through a command either. The MSC script checks what move your currently in and then constantly polls the controller for input changes, if an input was pressed it cgecks if the move that youbwould do from pressing that button is ALLOWED, and if it is, changes to the jump action

MSC is the source code for fighters and controls everything. Everything is done by reading inputs. For example it does things like:
Code:
While(true){
    If(buttonsPressed){
        if(player.OnGround){
            var btn = getInputs();
            if(btn == buttons.A && btn != buttons.A | buttons.LeftStick){
                CallACMD("Attack11");
            }
            else{
                CallACMD("Wait1");
            }
        }
    }
}
If then and else, my favourite. Are we able to add our own scripts into some empty ones then name them with a new MoveDef?
 

Sammi Husky

Well-Known Member
OP
Member
Joined
Jul 6, 2014
Messages
312
Trophies
0
Age
29
XP
498
Country
United States
If then and else, my favourite. Are we able to add our own scripts into some empty ones then name them with a new MoveDef?

MSC doesnt use the FITX MoveDef stuff so im assuming you mean for ACMD. Using FITX you can add entirely new source code files (just make a new .acm) and add it to a fighter. All you have to do is make the new source file and add the AnimName or hash to the fighter.mlist. of course It wont get called because MSC needs to call it, but yea.
 

Yudowat

That one guy that shows up occasionally
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
MSC doesnt use the FITX MoveDef stuff so im assuming you mean for ACMD. Using FITX you can add entirely new source code files (just make a new .acm) and add it to a fighter. All you have to do is make the new fighter and add the AnimName or hash to the fighter.mlist. of course It wont get called because MSC needs to call it, but yea.
That's actually perfect, oh my god.

On another note, how close are we to MSC being available to everyone?
 

Yudowat

That one guy that shows up occasionally
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
MSC doesnt use the FITX MoveDef stuff so im assuming you mean for ACMD. Using FITX you can add entirely new source code files (just make a new .acm) and add it to a fighter. All you have to do is make the new source file and add the AnimName or hash to the fighter.mlist. of course It wont get called because MSC needs to call it, but yea.
Also, How many new scripts could we add to ACMD? Would the overall max be 4294967295? (FFFFFFFF)

Another thing, where in fighter.mlist should I add a new script? Should I make the entry 0x9BDF92A95 or AttackExampleS (for example). Then in the new .acm should i name it AttackExampleS.acm and have MoveDef AttackExampleS as the first line? But then how would it know what hex code the move is? Sorry for all the questions, just really intrigued.
 

Sammi Husky

Well-Known Member
OP
Member
Joined
Jul 6, 2014
Messages
312
Trophies
0
Age
29
XP
498
Country
United States
Also, How many new scripts could we add to ACMD? Would the overall max be 4294967295? (FFFFFFFF)

Another thing, where in fighter.mlist should I add a new script? Should I make the entry 0x9BDF92A95 or AttackExampleS (for example). Then in the new .acm should i name it AttackExampleS.acm and have MoveDef AttackExampleS as the first line? But then how would it know what hex code the move is? Sorry for all the questions, just really intrigued.

The hex stuff is just the CRC of the name of the animation used. The mlist and string after MoveDef must match, but they can be either the name of a move (CustomMove1) or the crc32 of the name. There isnt really any limit to the number you can add, mainly because the hex numbers arent an ID or number. every possible combination of 32 bits is the number of scripts you can have

--------------------- MERGED ---------------------------

So yea for all intents and purposes 4294967295 would be the theoretical limit
 
  • Like
Reactions: Yudowat

Yudowat

That one guy that shows up occasionally
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
The hex stuff is just the CRC of the name of the animation used. The mlist and string after MoveDef must match, but they can be either the name of a move (CustomMove1) or the crc32 of the name. There isnt really any limit to the number you can add, mainly because the hex numbers arent an ID or number. every possible combination of 32 bits is the number of scripts you can have

--------------------- MERGED ---------------------------

So yea for all intents and purposes 4294967295 would be the theoretical limit
So I hope these are the last 2 questions, thanks for bearing with me :)

1. Does it matter at all where in the mlist I add my new move?
And 2. Not to pressure you, but when do you think a public release will be available for MSC things will be available, and will it take a similar format as FITX, allowing us to edit the scripts in any text editor?
 

Sammi Husky

Well-Known Member
OP
Member
Joined
Jul 6, 2014
Messages
312
Trophies
0
Age
29
XP
498
Country
United States
So I hope these are the last 2 questions, thanks for bearing with me :)

1. Does it matter at all where in the mlist I add my new move?
And 2. Not to pressure you, but when do you think a public release will be available for MSC things will be available, and will it take a similar format as FITX, allowing us to edit the scripts in any text editor?

  • You should always add to the end of the list, because MSC uses the index of the hash in that list to call ACMD scripts, so if you insert one in the middle somewhere, all the indexes after that get shifted by +1 and everything gets borked

  • Well, technically MSC is editable in SM4SHCommand currently, but it's just in it's rawest form, essentially equivalent to Assembly coding. You COULD make edits with it, but it's extremely complex since alot of commands are actually commands being passed to the next command after it, meaning the number of parameters a command actually takes isn't shown in the command's parentheses. As for when i'll have a working decompilation into higher level scripting language like I've been showing, unfortunately i don't have an ETA to give. I've currently got a few problems that i still don't know how i am going to solve, and that's all just for decompilation. Recompiling is going to be a whole different beast
 
  • Like
Reactions: Deleted User

Yudowat

That one guy that shows up occasionally
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
  • You should always add to the end of the list, because MSC uses the index of the hash in that list to call ACMD scripts, so if you insert one in the middle somewhere, all the indexes after that get shifted by +1 and everything gets borked
  • Well, technically MSC is editable in SM4SHCommand currently, but it's just in it's rawest form, essentially equivalent to Assembly coding. You COULD make edits with it, but it's extremely complex since alot of commands are actually commands being passed to the next command after it, meaning the number of parameters a command actually takes isn't shown in the command's parentheses. As for when i'll have a working decompilation into higher level scripting language like I've been showing, unfortunately i don't have an ETA to give. I've currently got a few problems that i still don't know how i am going to solve, and that's all just for decompilation. Recompiling is going to be a whole different beast
Alright then, thanks so much for clearing up the first question. As for the second, I'm aware it's currently editable in Sm4shCommand, although very complex. And finally, I'm glad it's coming along well, regardless of some hiccups along the way. Thanks for the tools!
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
  • NinStar @ NinStar:
    nes remix 1 had the bad one, nes remix 2 had the good one
  • SylverReZ @ SylverReZ:
    @genistopitauniverfrocrami, What drugs is this dude on?
    +1
  • NinStar @ NinStar:
    CRAZY HAMBURGER
  • The Real Jdbye @ The Real Jdbye:
    @NinStar both nes remix 1 and 2 had some stinkers in there
    +1
  • The Real Jdbye @ The Real Jdbye:
    but at least 2 doesn't have sports games
  • The Real Jdbye @ The Real Jdbye:
    loved nes remix, but hated having to play Baseball, Tennis and Golf in order to progress
    +1
  • The Real Jdbye @ The Real Jdbye:
    or fucking Clu Clu Land for that matter
  • Psionic Roshambo @ Psionic Roshambo:
    Not a big fan of NES kid Icarus either... I know it was popular but I didn't care for it.
  • Psionic Roshambo @ Psionic Roshambo:
    Yesterday I learned my BD Burner drive can burn CD's at 56X lol
  • cearp @ cearp:
    What stuff were you burning?
    I used to burn tons of dvds (data files) many years ago, but haven't burnt a disk in ages.
  • Psionic Roshambo @ Psionic Roshambo:
    My car actually reads MP3 CD's lol
  • Psionic Roshambo @ Psionic Roshambo:
    So mix CDs for myselt :)
  • Psionic Roshambo @ Psionic Roshambo:
    Pantera, Metallica, Hollywood Undead, Five Finger Death Punch, some others lol
  • Psionic Roshambo @ Psionic Roshambo:
    I can put like 90 songs on a CD lol
  • The Real Jdbye @ The Real Jdbye:
    if only it could read dvds then you would just need 1 disc
    +1
  • BakerMan @ BakerMan:
    i tell ya what, i could go for a fuckin gyro right about now
    +1
  • cearp @ cearp:
    I hope your brother is doing ok Mr BakerMan
    +1
  • cearp @ cearp:
    and Psi - I had a cd player / radio that played mp3 cds once, very cool
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    BakerMan yeah me too.... maybe that's gonna be dinner for me there is this place near me I have been dying to try and they have them lol
  • K3Nv2 @ K3Nv2:
    I miss usb mp3 players they were shit but at the time a go to
  • Psionic Roshambo @ Psionic Roshambo:
    @The Real Jdbye, I thought about that and I have blank DVD's and Blurays but honestly after like 90 songs I just listen to it a couple of hundred times toss it out and burn something else or have like 2-3 CD's. Florida here the heat in the car tends to ruin the CD's after like a few months even commercial pressed ones don't last too long.
  • The Real Jdbye @ The Real Jdbye:
    my music collection is just too big, i require variety
    The Real Jdbye @ The Real Jdbye: my music collection is just too big, i require variety