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
    The Real Jdbye @ The Real Jdbye: no, cod sucks +1