• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

One Slot Dr. Mario?

jackal27

Smash Journeyman
Joined
Jul 27, 2015
Messages
419
Location
Missouri
I have been customizing my character skins, but I ran into a problem last night that I never anticipated. Dr. Mario is one of my mains in PM, but I only use his standard skin. However, if I replace his other skins I'm either going to have to sacrifice his pill and shock effects (which I love) or several potential skin slots.

So I guess my question is, is there a PSA out there that just limits Dr. Mario to one slot? Would someone be willing to whip one up? It may be something that I am interested in doing myself. Would this be way too difficult?
 

Zeiza

Smash Cadet
Joined
Jul 28, 2015
Messages
25
Location
Washington Sate
Normally this could be done by changing all instances of "if Compare: LA-Basic[54] >= 7" within Mario's PSA to "if Compare: LA-Basic[54] == 7", which means that when the game checks for the costume, it will only display the changes for the default Dr. Mario costume, which is costume 7 for Mario, rather than for all costumes from 7 onward.

The SubActions that would need this change would be 1C0 and 1C1, which are down taunt, 1CE and 1CF, which are Neutral Special, and 57, 58, and 5A, which effect the electric effects on his Side Smash.

I managed to get every costume except for the default Doctor Mario to use the original effects and sounds, except for when he actually shoots the fireball. I assume this is because of this section in Mario's neutral special, which is:
Code:
Basic Variable Set: RA-Basic[134] = LA-Basic[54]
Basic Variable Set: RA-Basic[180] = LA-Basic[54]
Basic Variable Set: RA-Basic[226] = LA-Basic[54]
Basic Variable Set: RA-Basic[16] = LA-Basic[54]
Basic Variable Set: RA-Basic[62] = LA-Basic[54]
This sets a bunch of variables to equal the current costume. I changed this section to refer to Mario's default costume instead of the actual costumes that come after Doctor Mario's default one. This works, and the default costume is the only one to use pills, but sadly after making any changes, even after removing those changes later, all pills and fireballs no longer travel forward when thrown in the air, and instead just stay inside of Mario. They still work fine on the ground. I will try to look into this later.

Edit: Got air attacks to work, turns out I made a small stupid mistake and forgot to change the Goto command in the neutral air special subaction. Now it works most of the time, but for some reason after playing a match as default Dr. Mario and then changing, a random Mario costume from any other player will sometimes start using pills, although it'll only be one of the several players, and no more than one. I am completely stumped by this, so I'm just going to post the subaction below and hope that someone who understands it will find the problem. I am using PSA 2.35, if that matters.
Asynchronous Timer: frames=13
If Compare: LA-Basic[54] <= 7 //Also tried == 7, and switching the two and using != 7
Basic Variable Set: RA-Basic[134] = LA-Basic[54]
Basic Variable Set: RA-Basic[180] = LA-Basic[54]
Basic Variable Set: RA-Basic[226] = LA-Basic[54]
Basic Variable Set: RA-Basic[16] = LA-Basic[54]
Basic Variable Set: RA-Basic[62] = LA-Basic[54]
Else:
Basic Variable Set: RA-Basic[134] = 0
Basic Variable Set: RA-Basic[180] = 0
Basic Variable Set: RA-Basic[226] = 0
Basic Variable Set: RA-Basic[16] = 0
Basic Variable Set: RA-Basic[62] = 0
End If:
Generate Article: 1
Asynchronous Timer: frames=40
Allow Interrupt:
 
Last edited:

jackal27

Smash Journeyman
Joined
Jul 27, 2015
Messages
419
Location
Missouri
Just like you, I'm waiting with bated breath for someone to tell us how to do this. #InThisTogether
Hahaha! Thanks for the bump! I'm surprised something like this isn't out there somewhere already.

Normally this could be done by changing all instances of "if Compare: LA-Basic[54] >= 7" within Mario's PSA to "if Compare: LA-Basic[54] == 7", which means that when the game checks for the costume, it will only display the changes for the default Dr. Mario costume, which is costume 7 for Mario, rather than for all costumes from 7 onward.

The SubActions that would need this change would be 1C0 and 1C1, which are down taunt, 1CE and 1CF, which are Neutral Special, and 57, 58, and 5A, which effect the electric effects on his Side Smash.

I managed to get every costume except for the default Doctor Mario to use the original effects and sounds, except for when he actually shoots the fireball. I assume this is because of this section in Mario's neutral special, which is:
Code:
Basic Variable Set: RA-Basic[134] = LA-Basic[54]
Basic Variable Set: RA-Basic[180] = LA-Basic[54]
Basic Variable Set: RA-Basic[226] = LA-Basic[54]
Basic Variable Set: RA-Basic[16] = LA-Basic[54]
Basic Variable Set: RA-Basic[62] = LA-Basic[54]
This sets a bunch of variables to equal the current costume. I changed this section to refer to Mario's default costume instead of the actual costumes that come after Doctor Mario's default one. This works, and the default costume is the only one to use pills, but sadly after making any changes, even after removing those changes later, all pills and fireballs no longer travel forward when thrown in the air, and instead just stay inside of Mario. They still work fine on the ground. I will try to look into this later.
Oh wow! Thanks for looking into this! Yeah, I figured it would probably be something that simple, but that bit at the end sounds really weird. I'll wait to hear back from you on this. Thanks again!
 

Zeiza

Smash Cadet
Joined
Jul 28, 2015
Messages
25
Location
Washington Sate
After quite a long time of trial and error, I think I've finally got it. It turns out there were many more checks for the costume by the fireball article itself, and that I just couldn't see them in Project Smash Attacks! without knowing the exact Sub Routine offset. I was able to find the offsets for all the subroutines through OpenSA2, which then could be edited in PSA and the comparison could be changed.

Here's a link to the file needed, please tell me if there are any problems. I have tested this on the Wii, and played a few matches as well as checked every costume in training mode, but I might have still missed something.

Edit: Here's a guide on how to do this, just in case someone wants to do this for a future version of Mario or someone else's already modified version, or you're just interested.
Programs Required: Project Smash Attacks! (I used 2.35), OpenSA2 (Possibly)

Project M uses an If statement to determine whether it should use the Doctor Mario effects or the default ones. This is done by comparing a variable called LA-Basic[54] to a scalar which represents the IDs it covers. LA-Basic[54] is a variable that holds the ID of the costume currently in use. For Project M, it compares this to see if it is greater than or equal to 7, which is the ID of the first costume for Doctor Mario. All of the IDs after it are for the various colors of Doctor Mario costumes.

Single Slot Doctor Mario Outfit
The first step is to open FitMario.pac within Project Smash Attacks!. This file holds the information needed for Mario's move set. Next click on the Sub Action tab, then in Sub Action box and type in 57. This will take you to Sub Action 57, which is part of Mario's side smash. Mario's side smash has an electrical effect for Doctor Mario.

Within the code you should see the fourth line, which is "If Compare: LA-Basic[54] >= 7". Double click on this, then go to the Comparison Method and change it from 00000004 to 00000002. This will now check to see if the costume is 7, rather than if the costume is 7 or above.

Go to the GFX Event List for this Sub Action and do the same for the If Comparison here too.

These are the following Sub Actions that need to be changed, and what Event Lists are needed:
  • Side Smash - 57 - Main, GFX
  • Side Smash - 58 - Main, GFX, SFX
  • Side Smash - 5A - Main, GFX, SFX
  • Down Taunt - 1C0 - Main, GFX, SFX
  • Down Taunt - 1C1 - GFX, SFX
  • Neutral Special - 1CE - GFX, SFX
  • Neutral Special (Air) - 1CF - GFX
After doing this, Doctor Mario's special side smash, down taunt, and the throwing sound effects will only play for costume 7. However, these Sub Actions can only spawn the fireball/pill, and it has little to no choice in which one it receives. To make the final changes we must use OpenSA2 to find the article's Sub Routines that decide how the projectile looks. Now it would be best to save the FitMario.pac (preferably to a new location or with a new name rather than overriding the default one).

Now we need the offsets for the article's Sub Routines, which describe which models, sounds, etc the projectile itself uses.

These offsets were as following in Project M 3.6b, and even though they are unlikely to change in the foreseeable future I will include how to find them:

0026054
0027774
0026DEC
002631C

If They Have Changed:
Open OpenSA2, and then open FitMario.pac. At the top tabs, click on Articles, then change it to Article 0x1, which only shows Regular in its list of Actions. Now go to Sub Actions, and record the offset from the first line of Main. Then change the Event List to GFX, and record that offset, and then again for SFX. Finally, click on Sub Routines, and find which of the three has this code or coding resembling it:
Code:
Terminate Collisions
If - LA-Basic[29] < 7.00x
    Graphic Effect - blablabla
Else
    Graphic Effect - blablabla
End If
Terminate Instance
Record this offset.


Now close OpenSA2 and return to PSA. Go to the Sub Routine Tab and search for the offsets in the order listed (or found). For the first, change "If Compare: LA-Basic[29] >= 7" to == 7, same as before.

For the second, do the same, as with the third.

For the last one, change "If Compare: LA-Basic[29] < 7" to != 7 by setting the Comparison method to 00000003.

After all of this, only slot 7 should use the Doctor Mario effects.
 
Last edited:

DocStrange

Smash Apprentice
Joined
Feb 21, 2013
Messages
76
I'm using the 14 slot cbliss code and I'd like the Doc alts pushed to slots 8-14. Would it be a similar process or would I just have to change the >/=7 to >/=9?
 
Joined
Aug 12, 2005
Messages
620
Location
Miami, Florida
Thats pretty cool!

If your Dr. Mario is on another slot (mine is on 06), its simply a matter of opening the one-slot file you provided in PSA and changing the !=7 to !=6
 

jackal27

Smash Journeyman
Joined
Jul 27, 2015
Messages
419
Location
Missouri
After quite a long time of trial and error, I think I've finally got it. It turns out there were many more checks for the costume by the fireball article itself, and that I just couldn't see them in Project Smash Attacks! without knowing the exact Sub Routine offset. I was able to find the offsets for all the subroutines through OpenSA2, which then could be edited in PSA and the comparison could be changed.

Here's a link to the file needed, please tell me if there are any problems. I have tested this on the Wii, and played a few matches as well as checked every costume in training mode, but I might have still missed something.

Edit: Here's a guide on how to do this, just in case someone wants to do this for a future version of Mario or someone else's already modified version, or you're just interested.
Programs Required: Project Smash Attacks! (I used 2.35), OpenSA2 (Possibly)

Project M uses an If statement to determine whether it should use the Doctor Mario effects or the default ones. This is done by comparing a variable called LA-Basic[54] to a scalar which represents the IDs it covers. LA-Basic[54] is a variable that holds the ID of the costume currently in use. For Project M, it compares this to see if it is greater than or equal to 7, which is the ID of the first costume for Doctor Mario. All of the IDs after it are for the various colors of Doctor Mario costumes.

Single Slot Doctor Mario Outfit
The first step is to open FitMario.pac within Project Smash Attacks!. This file holds the information needed for Mario's move set. Next click on the Sub Action tab, then in Sub Action box and type in 57. This will take you to Sub Action 57, which is part of Mario's side smash. Mario's side smash has an electrical effect for Doctor Mario.

Within the code you should see the fourth line, which is "If Compare: LA-Basic[54] >= 7". Double click on this, then go to the Comparison Method and change it from 00000004 to 00000002. This will now check to see if the costume is 7, rather than if the costume is 7 or above.

Go to the GFX Event List for this Sub Action and do the same for the If Comparison here too.

These are the following Sub Actions that need to be changed, and what Event Lists are needed:
  • Side Smash - 57 - Main, GFX
  • Side Smash - 58 - Main, GFX, SFX
  • Side Smash - 5A - Main, GFX, SFX
  • Down Taunt - 1C0 - Main, GFX, SFX
  • Down Taunt - 1C1 - GFX, SFX
  • Neutral Special - 1CE - GFX, SFX
  • Neutral Special (Air) - 1CF - GFX
After doing this, Doctor Mario's special side smash, down taunt, and the throwing sound effects will only play for costume 7. However, these Sub Actions can only spawn the fireball/pill, and it has little to no choice in which one it receives. To make the final changes we must use OpenSA2 to find the article's Sub Routines that decide how the projectile looks. Now it would be best to save the FitMario.pac (preferably to a new location or with a new name rather than overriding the default one).

Now we need the offsets for the article's Sub Routines, which describe which models, sounds, etc the projectile itself uses.

These offsets were as following in Project M 3.6b, and even though they are unlikely to change in the foreseeable future I will include how to find them:

0026054
0027774
0026DEC
002631C

If They Have Changed:
Open OpenSA2, and then open FitMario.pac. At the top tabs, click on Articles, then change it to Article 0x1, which only shows Regular in its list of Actions. Now go to Sub Actions, and record the offset from the first line of Main. Then change the Event List to GFX, and record that offset, and then again for SFX. Finally, click on Sub Routines, and find which of the three has this code or coding resembling it:
Code:
Terminate Collisions
If - LA-Basic[29] < 7.00x
    Graphic Effect - blablabla
Else
    Graphic Effect - blablabla
End If
Terminate Instance
Record this offset.


Now close OpenSA2 and return to PSA. Go to the Sub Routine Tab and search for the offsets in the order listed (or found). For the first, change "If Compare: LA-Basic[29] >= 7" to == 7, same as before.

For the second, do the same, as with the third.

For the last one, change "If Compare: LA-Basic[29] < 7" to != 7 by setting the Comparison method to 00000003.

After all of this, only slot 7 should use the Doctor Mario effects.
YOU my friend are just the best! Thanks so much for putting all this work into this. You're a hero and a scholar. Can't wait to give these a shot in just a bit.
 

jackal27

Smash Journeyman
Joined
Jul 27, 2015
Messages
419
Location
Missouri
Well dangit.... The motion.pac crashes my Wii Project M on stage select. :/ Not sure what's going on.

Thats pretty cool!

If your Dr. Mario is on another slot (mine is on 06), its simply a matter of opening the one-slot file you provided in PSA and changing the !=7 to !=6
Wait, so you DID get it working?
 
Last edited:

Zeiza

Smash Cadet
Joined
Jul 28, 2015
Messages
25
Location
Washington Sate
I'm using the 14 slot cbliss code and I'd like the Doc alts pushed to slots 8-14. Would it be a similar process or would I just have to change the >/=7 to >/=9?
Yes. You would just have to go through all of the Sub Actions and Sub Routines I listed and change the variable in each If Comparison to >= 9. However, quite a few times they've added "And Compare: LA-Basic[54] < 12" after the check, which I think will have to be changed to < 15. However, I am not sure how the 14 slot cbliss code works, and might be wrong, and I am unsure as to why this check needed to be added in the first place.

Thats pretty cool!

If your Dr. Mario is on another slot (mine is on 06), its simply a matter of opening the one-slot file you provided in PSA and changing the !=7 to !=6
Yes, if those Sub Actions and Sub Routines are changed to 6 rather than 7, it will only show for costume 6.

Well dangit.... The motion.pac crashes my Wii Project M on stage select. :/ Not sure what's going on.
This file just replaces FitMario.pac, and so any FitMarioMotionEtc.pac changes shouldn't be related. Try checking the file size though, if you added any more complicated or larger animations to it, it might have bumped it up and caused it to crash. You could try reducing its size by changing unused animations down to only 2 keyframes, but I'm not sure if Mario has any. I'm sure you could do this to his ladder animations, as those will never get used except for SSE or some Custom Stages.
 

jackal27

Smash Journeyman
Joined
Jul 27, 2015
Messages
419
Location
Missouri
Yes. You would just have to go through all of the Sub Actions and Sub Routines I listed and change the variable in each If Comparison to >= 9. However, quite a few times they've added "And Compare: LA-Basic[54] < 12" after the check, which I think will have to be changed to < 15. However, I am not sure how the 14 slot cbliss code works, and might be wrong, and I am unsure as to why this check needed to be added in the first place.


Yes, if those Sub Actions and Sub Routines are changed to 6 rather than 7, it will only show for costume 6.


This file just replaces FitMario.pac, and so any FitMarioMotionEtc.pac changes shouldn't be related. Try checking the file size though, if you added any more complicated or larger animations to it, it might have bumped it up and caused it to crash. You could try reducing its size by changing unused animations down to only 2 keyframes, but I'm not sure if Mario has any. I'm sure you could do this to his ladder animations, as those will never get used except for SSE or some Custom Stages.
Ahhhhhh! I'm an idiot! WHY was I replacing my MarioMotionEtc.pac with your file? Haha. Everything works fine now! Thank you so much once again.
 
Last edited:
Top Bottom