• 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!

Official The 20XX Melee Training Hack Pack (v5.0.2 - 1/20/2023)

Conceptual

Smash Rookie
Joined
Jun 2, 2014
Messages
12
Location
Maple Island
NNID
Conceptual
My game crashed on the start menu screen whenever I've changed a setting in the debug menu, what did I do wrong?
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
*IMPORTANT* - Please Read

Guys,

Last night I performed an important research experiment.

The experiment was extending the file length of MnSlChr.usd by adding...well...whatever I want to the end of the file.

For anyone that doesn't know, MnSlChr.usd includes the textures for character select icons and character select portraits and all sorts of CSS stuff.

So what I did was this:

1) Pasted my long CSS code (extra chars, alt costumes, etc.) at the end of the MnSlChr.usd file.
2) Changed the beginning line of the file, which describes the file length, to appropriately accomodate the extended length to the file that I added.

The results was just as I hoped - (At the CSS) When the game loaded the contents of this file into the RAM like normal, it loaded everything I added in at the end as well.

My logic is that anytime I need the CSS code, I will be at the CSS and the contents of this file will be loaded into the RAM anyway, so why not add my code to that file instead of having it take up space in the DOL that can be used for something else?

Next, I changed the custom code at my CSS code injection point to branch to the location that it is now loaded to with the other contents of the MnSlChr.usd file, and it worked like normal. (So this is actually testing that branching into the code I added in that file actually works).

I didn't seem like there was any problem at all with adding stuff to the end of that file and the game was totally okay with it and accounts for the extended space used with anything loaded afterward.

(I still need to test on Wii, though, and will need to see if there is any sort of limitation on how much I could add to this file).

Flippin' fantastic!


WHAT THIS MEANS FOR ME (& YOU):
Lots. So much.

Directly: With having the CSS code in the MnSlChr.usd file, ~1300 more free code lines in the DOL to be used for other codes or debug menu options.

Future: Because the CSS is always the first thing the game boots to, I could do something like adding tons of other codes to the end of the file (ones executed outside of the CSS) and then write a simple code that gets executed on the CSS to copy these codes to the end of the RAM at a location that the game probably never hits. So then they will be there for me to use outside of the CSS.

....basically, an innumerable amount of code lines now available for use!

Because I no longer have to worry about the CSS code length, alt costumes for every character costume can definitely happen!

Another thing I should be able to do is add more CSPs to the end of the MnSlChr.usd file that could be pointed to when alt costumes are selected!

This just really opens up a new world of possibilities.


Other

Since the release of 3.0, I really haven't done much new coding (to my normal standards). My girlfriend is under the "assumption" that I care more about coding than her, which doesn't bode well for our relationship. So I've been limiting my coding time for the past two weeks and doing more chores around the apartment to show her that is not true. Women are infinitely complicated...

What I have done though:
1) Disable CPU taunting
2) Added a debug menu option for custom shield colors (love this one!)
3) Character Mod: DK - always full punch

Will be doing soon:
4) Character Mod: Peach - Always Pull XX (turnips)

I'll be releasing this update after I add the last two to the debug menu.

Capture.PNG


I just can't get enough of this project. This will be the game we all deserve after years of dedication!

I just wish it were my full time job. Imagine what I could get accomplished if I had 8+ hours to spend on it everyday, had a stream, could make tons of coding tutorial videos, extensive work on CPU AI.... Could the Melee community donate enough money to get me a good, yearly salary? Would #freeAchilles ever work??? (this paragraphy is a joke...kind of).
 

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
For anyone that doesn't know, MnSlChr.usd includes the textures for character select icons and character select portraits and all sorts of CSS stuff.
If I understood correctly, it's a modification that isn't possible to get using Memory Card hacking with an original iso? not that it's a bad thing, it will just make the gap bigger comparing the full and lite memory card version...
 

Goxplex

Smash Apprentice
Joined
May 16, 2013
Messages
139
Location
Panamá
*IMPORTANT* - Please Read

Guys,

Last night I performed an important research experiment.

The experiment was extending the file length of MnSlChr.usd by adding...well...whatever I want to the end of the file.

For anyone that doesn't know, MnSlChr.usd includes the textures for character select icons and character select portraits and all sorts of CSS stuff.

So what I did was this:

1) Pasted my long CSS code (extra chars, alt costumes, etc.) at the end of the MnSlChr.usd file.
2) Changed the beginning line of the file, which describes the file length, to appropriately accomodate the extended length to the file that I added.

The results was just as I hoped - (At the CSS) When the game loaded the contents of this file into the RAM like normal, it loaded everything I added in at the end as well.

My logic is that anytime I need the CSS code, I will be at the CSS and the contents of this file will be loaded into the RAM anyway, so why not add my code to that file instead of having it take up space in the DOL that can be used for something else?

Next, I changed the custom code at my CSS code injection point to branch to the location that it is now loaded to with the other contents of the MnSlChr.usd file, and it worked like normal. (So this is actually testing that branching into the code I added in that file actually works).

I didn't seem like there was any problem at all with adding stuff to the end of that file and the game was totally okay with it and accounts for the extended space used with anything loaded afterward.

(I still need to test on Wii, though, and will need to see if there is any sort of limitation on how much I could add to this file).

Flippin' fantastic!


WHAT THIS MEANS FOR ME (& YOU):
Lots. So much.

Directly: With having the CSS code in the MnSlChr.usd file, ~1300 more free code lines in the DOL to be used for other codes or debug menu options.

Future: Because the CSS is always the first thing the game boots to, I could do something like adding tons of other codes to the end of the file (ones executed outside of the CSS) and then write a simple code that gets executed on the CSS to copy these codes to the end of the RAM at a location that the game probably never hits. So then they will be there for me to use outside of the CSS.

....basically, an innumerable amount of code lines now available for use!

Because I no longer have to worry about the CSS code length, alt costumes for every character costume can definitely happen!

Another thing I should be able to do is add more CSPs to the end of the MnSlChr.usd file that could be pointed to when alt costumes are selected!

This just really opens up a new world of possibilities.


Other

Since the release of 3.0, I really haven't done much new coding (to my normal standards). My girlfriend is under the "assumption" that I care more about coding than her, which doesn't bode well for our relationship. So I've been limiting my coding time for the past two weeks and doing more chores around the apartment to show her that is not true. Women are infinitely complicated...

What I have done though:
1) Disable CPU taunting
2) Added a debug menu option for custom shield colors (love this one!)
3) Character Mod: DK - always full punch

Will be doing soon:
4) Character Mod: Peach - Always Pull XX (turnips)

I'll be releasing this update after I add the last two to the debug menu.

View attachment 27499

I just can't get enough of this project. This will be the game we all deserve after years of dedication!

I just wish it were my full time job. Imagine what I could get accomplished if I had 8+ hours to spend on it everyday, had a stream, could make tons of coding tutorial videos, extensive work on CPU AI.... Could the Melee community donate enough money to get me a good, yearly salary? Would #freeAchilles ever work??? (this paragraphy is a joke...kind of).
WOW this is amazing! I would totally donate to the #freeachilles cause, I really appreciate the amazing things you are doing for this game! :)
 
Last edited:

Elen

Smash Lord
Joined
Nov 11, 2006
Messages
1,206
Location
USA
I just wish it were my full time job. Imagine what I could get accomplished if I had 8+ hours to spend on it everyday, had a stream, could make tons of coding tutorial videos, extensive work on CPU AI.... Could the Melee community donate enough money to get me a good, yearly salary? Would #freeAchilles ever work??? (this paragraphy is a joke...kind of).
Don't underestimate us. Those who realize the work you've put in would very likely want to support you :)
 

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
In the Crazy Mod, I've noticed that after I enter the hacked mode with the name entry glitch, I am not able to put any name inside it. Even if I enter a name and press Confirm, it doesn't show up at all in the list, so it's not possible to have any. Do you know a solution to have the option to input names?
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
In the Crazy Mod, I've noticed that after I enter the hacked mode with the name entry glitch, I am not able to put any name inside it. Even if I enter a name and press Confirm, it doesn't show up at all in the list, so it's not possible to have any. Do you know a solution to have the option to input names?
You can't. wParam kept part of his exploit in the name tag area after the initial hack loading (I'm not exactly sure why) but it interferes with name tags and would probably cause the game to freeze if you could input them. So I believe he just disabled the function totally.
 

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
You can't. wParam kept part of his exploit in the name tag area after the initial hack loading (I'm not exactly sure why) but it interferes with name tags and would probably cause the game to freeze if you could input them. So I believe he just disabled the function totally.
Then would it be possible to put 4 default names (that can't be modified or deleted)? Because sometimes in teams, having the same characters may create confusion, and having a name reduces the risk to mix up characters.

I ask that about if you do it for 20XX lite; it doesn't bother me for Crazy Mod because you can simply put a player black/grey (sub-color 3/4) or change his color easily.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Then would it be possible to put 4 default names (that can't be modified or deleted)? Because sometimes in teams, having the same characters may create confusion, and having a name reduces the risk to mix up characters.

I ask that about if you do it for 20XX lite; it doesn't bother me for Crazy Mod because you can simply put a player black/grey (sub-color 3/4) or change his color easily.
oh. Well I think I can just enable tags by completely erasing the exploit after it's used. I guess wParam ignored this because you can't use tags via matches from the debug menu anyway? I think.
 

BTmoney

a l l b e c o m e $
Joined
Jan 2, 2013
Messages
1,806
Location
Columbus OH / Chicago (Plainfield) IL
Since the release of 3.0, I really haven't done much new coding (to my normal standards). My girlfriend is under the "assumption" that I care more about coding than her, which doesn't bode well for our relationship. So I've been limiting my coding time for the past two weeks and doing more chores around the apartment to show her that is not true. Women are infinitely complicated...
I've seen your apathy first hand.


#FreeHannah
 

Y-L

Smash Champion
Joined
Jan 16, 2014
Messages
2,436
Location
Ventura, CA
Does the multiple spoof controllers not work on Dolphin? Also if you have two spoof controllers in can you have both of them follow the character codes so two people can practice shield pressure on two different spoof controllers?
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Does the multiple spoof controllers not work on Dolphin? Also if you have two spoof controllers in can you have both of them follow the character codes so two people can practice shield pressure on two different spoof controllers?
No, they probably don't work on Dolphin. (But I think they might work if you make the Debug changes, exit out of Debug Menu so it saves to memory card, and then close Dolphin and reopen). I think I might try and write a Gecko code for Dolphin users to make the Debug Menu work completely - I have an idea for this.

But no, the "character codes" are still for P2 only.
 

zz_halim

Smash Apprentice
Joined
Jun 25, 2014
Messages
161
Location
Krefeld, Germany
First: Thanks Achilles the hack pack is just too amazing. i mean, battlefield with modular platforms? n_n

So i just updated from 2.07 to 3.00 but the "blue" Pokemon Stadium with no transformations is still green like in 2.07.
is it a file which holds the blue texture or is it code like with Rainbow FD?
 

Y-L

Smash Champion
Joined
Jan 16, 2014
Messages
2,436
Location
Ventura, CA
No, they probably don't work on Dolphin. (But I think they might work if you make the Debug changes, exit out of Debug Menu so it saves to memory card, and then close Dolphin and reopen). I think I might try and write a Gecko code for Dolphin users to make the Debug Menu work completely - I have an idea for this.

But no, the "character codes" are still for P2 only.
Do you think having character controls on multiple spoof controllers being something you could possibly add? If p1s command set the same action for every spoof controller that would be really beneficial if you want to practice with a friend. I don't see the downside to this as I've never seen a need to have more than p2 as a spoof controller.
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
First: Thanks Achilles the hack pack is just too amazing. i mean, battlefield with modular platforms? n_n

So i just updated from 2.07 to 3.00 but the "blue" Pokemon Stadium with no transformations is still green like in 2.07.
is it a file which holds the blue texture or is it code like with Rainbow FD?
If you go back a few pages, you'll see there is a lot of talk about this issue, and I have no idea why it's happening, as it's working for some (including myself) but not for others. I *think* it is an issue with the device you are loading from.

1) I have seen no USB loaders with blue pokemon or red falcon alt working.
2) Some SD card users have it working, but some others don't.

So idk...it's a hard one to pinpoint and I can't really do testing because it's just working for me. Do you know what version of Dios Mios (Lite - if applicable) you are using? And are you booting off SD or USB?

Do you think having character controls on multiple spoof controllers being something you could possibly add? If p1s command set the same action for every spoof controller that would be really beneficial if you want to practice with a friend. I don't see the downside to this as I've never seen a need to have more than p2 as a spoof controller.
It's doable, I just have never tapped into the function that controls P3 inputs, which I have done with P2. It would require a decent amount of work and coordination.

BUT, you have me thinking....

So I have the "Control All Humans" code. Ideally, I want to rewrite this code so that you can choose any player controlling any other player slot.

For example,

P1 - controlled by P1
P2 - controlled by P1
P3 - controlled by P3
P4 - controlled by P3

(Player one could control 2 players and player 3 could control 2 characters).

If this was implemented, I think you could do this:

P1 - controlled by P1 (actual human)
P2 - controlled by P2
P3 - controlled by P2
P4 - controlled by P4 (actual human)

and then whatever you forced P2 to do, P3 would do the same. I havent tested this, but I think that would work with the P2 action toggles (some of them...it wouldn't work on ones that I force load action states specifically into P2 because that wouldn't be transferred to P3 in this example). But shielding would work.

Interesting...I never thought about this.
 

Y-L

Smash Champion
Joined
Jan 16, 2014
Messages
2,436
Location
Ventura, CA
It's doable, I just have never tapped into the function that controls P3 inputs, which I have done with P2. It would require a decent amount of work and coordination.

BUT, you have me thinking....

So I have the "Control All Humans" code. Ideally, I want to rewrite this code so that you can choose any player controlling any other player slot.

For example,

P1 - controlled by P1
P2 - controlled by P1
P3 - controlled by P3
P4 - controlled by P3

(Player one could control 2 players and player 3 could control 2 characters).

If this was implemented, I think you could do this:

P1 - controlled by P1 (actual human)
P2 - controlled by P2
P3 - controlled by P2
P4 - controlled by P4 (actual human)

and then whatever you forced P2 to do, P3 would do the same. I havent tested this, but I think that would work with the P2 action toggles (some of them...it wouldn't work on ones that I force load action states specifically into P2 because that wouldn't be transferred to P3 in this example). But shielding would work.

Interesting...I never thought about this.
Sounds awesome to me. If it would be easier you could have it so P1 controls whatever controllers are spoofed. (So if P3 and P4 are set to spoof controllers one command would control both of them). I'm not sure what would be easier in that case, but either way would be a fantastic feature to implement. My friends and I love practicing tech together but as you can imagine sharing one shield is rather tedious. Thanks for the quick responses and I look forward to your continued development!
 

Tityboi

Smash Cadet
Joined
Dec 6, 2013
Messages
44
I think that the automatic death if you roll concept should be applied to getting grabbed. For example, say you are a spacie and you want to get better at the marth matchup, you could turn on automatic death if you get grabbed for. Obviously forcing you to focus on not getting grabbed. This could work for fox v fox, fox vs falco, etc.... It could be applied to other things as well, but I think this one could help a lot of people.
 

Y-L

Smash Champion
Joined
Jan 16, 2014
Messages
2,436
Location
Ventura, CA
I think that the automatic death if you roll concept should be applied to getting grabbed. For example, say you are a spacie and you want to get better at the marth matchup, you could turn on automatic death if you get grabbed for. Obviously forcing you to focus on not getting grabbed. This could work for fox v fox, fox vs falco, etc.... It could be applied to other things as well, but I think this one could help a lot of people.
You can already set p2 to shield grab to practice shield pressure.
 

Acryte

Smash Ace
Joined
Mar 30, 2005
Messages
986
So would it be possible to make a code that uses P1 + P2 or P3 + P4 where P2 behaves like Nana (AI when desynced) but when not desynced it just does whatever P1 inputs 6 frames later for whatever character is selected so we can have IC battles but with Foxes or Marths or whatever lol.
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
I think that the automatic death if you roll concept should be applied to getting grabbed. For example, say you are a spacie and you want to get better at the marth matchup, you could turn on automatic death if you get grabbed for. Obviously forcing you to focus on not getting grabbed. This could work for fox v fox, fox vs falco, etc.... It could be applied to other things as well, but I think this one could help a lot of people.
The thing about the roll-death code is that it is punishing you for doing an action that is sometimes deemed bad, but not always punished (unless playing a really good player that would punish bad rolls every time). Continuously doing so without being punished would probably be developing a bad habit of rolling during bad/predictable times.

This doesn't apply to being grabbed. Once you are grabbed, you're already going to be punished for this action no matter what because the opponent has control over you. Dying for this action is unnecessary because Marth’s steel being plunged deep into your body against your own will is punishment enough.
 
Last edited:

Tityboi

Smash Cadet
Joined
Dec 6, 2013
Messages
44
The thing about the roll-death code is that it is punishing you for doing an action that is sometimes deemed bad, but not always punished (unless playing a really good player that would punish bad rolls every time). Continuously doing so without being punished would probably be developing a bad habit of rolling during bad/predictable times.

This doesn't apply to being grabbed. Once you are grabbed, you're already going to be punished for this action no matter what because the opponent has control over you. Dying for this action is unnecessary because Marth’s steel being plunged deep into your body against your own will is punishment enough.
That's true, but that's also the reason why I think this is important. Most people DONT zero to death you off a grab. So if you are practicing against someone who doesn't have insane punishes, there is less incentive to not get grabbed. Not only that but it would lead to more efficient practice because it allows you to practice solely neutral, then later you and your practice partner could focus on punishes and di. And put it together in the end.
 

zz_halim

Smash Apprentice
Joined
Jun 25, 2014
Messages
161
Location
Krefeld, Germany
@ Achilles1515 Achilles1515
I'm currently using dios mios lite 2.10 since my usbstick died.
Which one are you using?
Finding an up2date dios mios version seems really difficult to me since the project died...
The red falcon alt is working for me ( the purple on i guess?)

edit: oh no thats the pink alt.. the red falcon alt should be the one with the american colours... i remember this working with an older hack pack version loaded from usb.
..which would confirm your theory

sorry for not having looked back in the thread enough :D
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
So would it be possible to make a code that uses P1 + P2 or P3 + P4 where P2 behaves like Nana (AI when desynced) but when not desynced it just does whatever P1 inputs 6 frames later for whatever character is selected so we can have IC battles but with Foxes or Marths or whatever lol.
Kind of, but not really.

The only way I would know how to do this is using the "dopplegangers" code that was in the Crazy Mod. Basically, every player in the match gets a CPU clone, and if you were to turn their AI type to "Nana" then, yeah, they would act like Nana and attached with the player they were spawned with.

BUT, the problem with the code is that they only have one life and never respawn after dying. Maybe this is possible to change...idk...but that's the only way I would know how to do this.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
@ Achilles1515 Achilles1515
I'm currently using dios mios lite 2.10 since my usbstick died.
Which one are you using?
Finding an up2date dios mios version seems really difficult to me since the project died...
The red falcon alt is working for me ( the purple on i guess?)

edit: oh no thats the pink alt.. the red falcon alt should be the one with the american colours... i remember this working with an older hack pack version loaded from usb.
..which would confirm your theory

sorry for not having looked back in the thread enough :D
Red Falcon alt is LowLandLions Falcon.

I'm using SD card with Dios Mios Lite 2.10. CFG Loader and Dios Mios Booter both boot the game and successfully allow me to use blue pokemon stadium/red falcon alt.
 

zz_halim

Smash Apprentice
Joined
Jun 25, 2014
Messages
161
Location
Krefeld, Germany
Red Falcon alt is LowLandLions Falcon.

I'm using SD card with Dios Mios Lite 2.10. CFG Loader and Dios Mios Booter both boot the game and successfully allow me to use blue pokemon stadium/red falcon alt.
I don't know how LowLandLion's Falcon looks like.
mhm so we both use the same stuff but have different results.
i tried another sd card now and stadium is still green.
does power off work with your version of dios mios lite or do you have to force shutdown every time?
 

Tityboi

Smash Cadet
Joined
Dec 6, 2013
Messages
44
The thing about the roll-death code is that it is punishing you for doing an action that is sometimes deemed bad, but not always punished (unless playing a really good player that would punish bad rolls every time). Continuously doing so without being punished would probably be developing a bad habit of rolling during bad/predictable times.

This doesn't apply to being grabbed. Once you are grabbed, you're already going to be punished for this action no matter what because the opponent has control over you. Dying for this action is unnecessary because Marth’s steel being plunged deep into your body against your own will is punishment enough.
Also, why would you want to be punished everytime for something that's only sometimes bad.... that doesn't make any sense. Anything you do can be considered bad if you do it at the wrong time. That's why you play the game, to determine when something is good and when something is bad. That means the only way to get rid of a bad rolling habit is to get punished everytime it's BAD, not everytime. Otherwise you are creating a bad habit of not rolling when you actually should. This is clearly different from being grabbed which is always bad, so you should always die.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Also, why would you want to be punished everytime for something that's only sometimes bad.... that doesn't make any sense. Anything you do can be considered bad if you do it at the wrong time. That's why you play the game, to determine when something is good and when something is bad. That means the only way to get rid of a bad rolling habit is to get punished everytime it's BAD, not everytime. Otherwise you are creating a bad habit of not rolling when you actually should. This is clearly different from being grabbed which is always bad, so you should always die.
So the current code has a player die. This is a noticeable on-screen punishment, but an arbitrary one. It doesn't matter if the punishment is dying, or putting the player to sleep, or slingshotting them into the air - whatever. They all accomplish the same thing, which is break the character out of their current action to signify to them that what they did is "bad". (We are considering rolling to be "bad" in this respect because we turned the code on...that's what we are trying to not do).

All I'm saying is that your opponent grabbing you is the same thing as the above consequences. You are broken out of an action because what you were doing is "bad". Your opponent grabbing you is an on-screen punishment for...idk...bad dash dancing for example, or poor shield pressure.

I guess the consequences are not equal if you are trying to play legit, "if I win I am better than you", matches with this code on, which I assume no one does.

(I might like the idea of putting the player to sleep as a punishment more than dying. Maybe I'll experiment with this.)
 
Last edited:

Tityboi

Smash Cadet
Joined
Dec 6, 2013
Messages
44
So the current code has a player die. This is a noticeable on-screen punishment. It doesn't matter if the punishment is dying, or putting the player to sleep, or slingshotting them into the air - whatever. They all accomplish the same thing, which is break the character out of their current action to signify to them that what they did is "bad". (We are considering rolling to be "bad" in this respect because we turned the code on...that's what we are trying to not do).

All I'm saying is that your opponent grabbing you is the same thing as the above consequences. You are broken out of an action because what you were doing is "bad". Your opponent grabbing you is an on-screen punishment for...idk...bad dash dancing for example, or poor shield pressure.

I guess the consequences are not equal if you are trying to play legit, "if I win I am better than you", matches with this code on, which I assume no one does.

(I might like the idea of putting the player to sleep as a punishment more than dying. Maybe I'll experiment with this.)
I understand your point, but I guess I don't really understand why this code should be limited to rolling. There are a lot of other things that are considered bad that often times aren't punished. For example, shielding is not always that great especially if you sit in shield for too long. Would it be possible to make it so that before a match started you could make it so being in an actionable state of your choosing would force you to die? And, as a continuation of that, could you make it so that being in an actionable state after a certain number of frames would force you to die? I know this would be pretty complicated, but I feel like you have pieces of this already in place, and I feel like this is a reasonable compromise even though you have no obligation to do so.

Edit: just saw the part about putting someone to sleep, I think that would be pretty cool as well.
 
Last edited:

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
Kind of, but not really.

The only way I would know how to do this is using the "dopplegangers" code that was in the Crazy Mod. Basically, every player in the match gets a CPU clone, and if you were to turn their AI type to "Nana" then, yeah, they would act like Nana and attached with the player they were spawned with.

BUT, the problem with the code is that they only have one life and never respawn after dying. Maybe this is possible to change...idk...but that's the only way I would know how to do this.
I've made some tests with AI as Nana and doppelgangers:

• If both the character and the doppel dies at the same time, the doppel will respawn with the main.
• If the doppel dies alone, the doppel is gone.
• If the main dies, the doppel stays on the field and will reunite with main when he respawns.

With these conditions, it could be made that if the doppel or main dies, the other dies instantly so they would both reappear at the same time.

Another solution I can think of, but I don't know if it can be done: command input to spawn a doppel on himself, so the player can use it if he loses his Nana.

The solutions aren't as fail-proof as the real Nana though... Something lacking in each of them balance-wise or gameplay-wise.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
I understand your point, but I guess I don't really understand why this code should be limited to rolling. There are a lot of other things that are considered bad that often times aren't punished. For example, shielding is not always that great especially if you sit in shield for too long. Would it be possible to make it so that before a match started you could make it so being in an actionable state of your choosing would force you to die? And, as a continuation of that, could you make it so that being in an actionable state after a certain number of frames would force you to die? I know this would be pretty complicated, but I feel like you have pieces of this already in place, and I feel like this is a reasonable compromise even though you have no obligation to do so.

Edit: just saw the part about putting someone to sleep, I think that would be pretty cool as well.
I agree that it could have uses outside of rolling. I like the idea of making it customizable for whatever action you'd like - this would provide a win-win situation for me and the user. Obviously, it would just be more complicated to write.

Executing a punishment after a certain amount of frames isn't a bad idea either. I'm sure people could find a multitude of uses out of that.

Thinking all this over now, I could rewrite the code to work in a completely different manner, and probably be able to accomplish both of these things.

The tricky part would be having it work with any action state, but I could do something like I did with the frame counter code.
I've made some tests with AI as Nana and doppelgangers:

• If both the character and the doppel dies at the same time, the doppel will respawn with the main.
Thanks for the info. This comment is very interesting. I wonder why that would be... It's good to know, though, that it is possible for them to respawn. I want to look into this at some point because the doppelganger code is pretty fascinating.

I changed Rumble ON to default and it works. But when I create a new nametag it still appears with rumble off as default.
This is because I had to move the location of the rumble byte to accomodate 8 character name tags.

To put a long story short, the byte in memory that controls rumble for a name tag is located, basically, immediately after the name tag characters. If you make the max nametag character length twice as long, it will overwrite this rumble byte. (it would actually turn rumble on, because 00 is off and anything greater than or equal to 01 is on. An alphabet character has a value greater than 01.)

Obviously, that's a problem. And to make the problem even more complicated, if I had an 8 character name tag and then I turned the rumble off (because like I said, it would default on), that alphabet byte would then be changed to a 00, which would break the name tag at that location and any characters after that point would not be registered by the game.

~ Aside ~

When the game reads name tags, it reads characters until it sees the byte 00. That's when it tells itself "okay, this is the end of the name tag". And this is why we can have nametags longer than 4 characters. All you have to do is place more characters immediately after the first four and the game will continue to read them (until it sees 00). *This also how the name entry memory card exploit works.* When the game loads the name entry screen, it reads the name tags that have currently been entered/are on the memory card. The exploit starts at the very first name tag slot, where instead of having an actual name tag, there is essentially just junk bytes (meaningless bytes). Lots and lots of them, but none of which are 00. So the game continues to try and read them. It "stores" these values in the stack, which is an area of the RAM that acts like a mini storage area for things currently being copied and it also holds information as to where the code was last before it branched into the fuction it is currently at - so it can load back the "where was I" memory address and then branch back there and continue on. What you do with these junk bytes is you put enough in there so that it "overflows" the stack and gets you down to the point in the stack that holds the "where was I" location (and you're still writing values in the stack). And then you write a meaningful memory address to branch to, instead of the previous one it had written there. End that with a 00 and then the game will stop writing "nametag" values to the stack and shortly after will attempt to branch back to the function it was previously at. So at this point, the memory address you wrote to the stack will be pointed to the start of custom code that you saved on the memory card, the game will branch there instead of the previous normal address, and BINGO. Profit. It's quite brilliant.



Anyway, as explained above, there were a few problems associated with the rumble byte still being in the middle of an 8 character name tag. So what I had to do to restore normal rumble function, was find every line of code [I could find] that looks at that rumble byte (code that ACTUALLY makes rumble happen or not happen based on looking at the flag value, like pressing Start at the CSS), and rewriting this line of code to look at a different location instead. One that wouldn't interfere with an 8 character name tag.

Yes, this was a b***h. (and one of those "little" things that end users of 20XX don't know took like an entire night of pounding my head against a wall to figure out).

But yeah, that's why it doesn't automatically turn rumble on when you make a name tag, because I guess I didn't tell it to store the rumble on value into the new location. It wouldn't know to do so unless I find that storing line of code and tell it to store it at the new location.

I don't plan on looking at this anytime soon. Well, maybe. We'll see. But thanks for bringing it up. So you'll just have to manually turn rumble on for any name tag you make. At least I got that working...
 

zz_halim

Smash Apprentice
Joined
Jun 25, 2014
Messages
161
Location
Krefeld, Germany
1. be put asleep when rolling would be very funny
2. omg i can imagine that rumble byte being a f**** headache because of the \0 byte...
3. the new debug menu is godlike

okay i'll stop bumping this thread now
 
Last edited:

RazzleDazzle

Smash Cadet
Joined
Jan 24, 2014
Messages
29
I noticed that when you pick popo using Z on ICs it plays no audio because they're isn't any clip for that on the disc. Would it be possible for the game to dip into the japanese version and use the voice clip "ICE CLIMBER" that's used for japanese ice climbers? I feel like that would suffice and be accurate because sometime the lead climber is nana. Also I hear a very faint forward smash from captain falcon when I choose him or the fighting wire frame. Is this intentional?

EDIT: when i say dip into i mean use the sound clip from the japanese translation built into the game.
 
Last edited:

Goxplex

Smash Apprentice
Joined
May 16, 2013
Messages
139
Location
Panamá
I agree that it could have uses outside of rolling. I like the idea of making it customizable for whatever action you'd like - this would provide a win-win situation for me and the user. Obviously, it would just be more complicated to write.

Executing a punishment after a certain amount of frames isn't a bad idea either. I'm sure people could find a multitude of uses out of that.

Thinking all this over now, I could rewrite the code to work in a completely different manner, and probably be able to accomplish both of these things.

The tricky part would be having it work with any action state, but I could do something like I did with the frame counter code.


Thanks for the info. This comment is very interesting. I wonder why that would be... It's good to know, though, that it is possible for them to respawn. I want to look into this at some point because the doppelganger code is pretty fascinating.


This is because I had to move the location of the rumble byte to accomodate 8 character name tags.

To put a long story short, the byte in memory that controls rumble for a name tag is located, basically, immediately after the name tag characters. If you make the max nametag character length twice as long, it will overwrite this rumble byte. (it would actually turn rumble on, because 00 is off and anything greater than or equal to 01 is on. An alphabet character has a value greater than 01.)

Obviously, that's a problem. And to make the problem even more complicated, if I had an 8 character name tag and then I turned the rumble off (because like I said, it would default on), that alphabet byte would then be changed to a 00, which would break the name tag at that location and any characters after that point would not be registered by the game.

~ Aside ~

When the game reads name tags, it reads characters until it sees the byte 00. That's when it tells itself "okay, this is the end of the name tag". And this is why we can have nametags longer than 4 characters. All you have to do is place more characters immediately after the first four and the game will continue to read them (until it sees 00). *This also how the name entry memory card exploit works.* When the game loads the name entry screen, it reads the name tags that have currently been entered/are on the memory card. The exploit starts at the very first name tag slot, where instead of having an actual name tag, there is essentially just junk bytes (meaningless bytes). Lots and lots of them, but none of which are 00. So the game continues to try and read them. It "stores" these values in the stack, which is an area of the RAM that acts like a mini storage area for things currently being copied and it also holds information as to where the code was last before it branched into the fuction it is currently at - so it can load back the "where was I" memory address and then branch back there and continue on. What you do with these junk bytes is you put enough in there so that it "overflows" the stack and gets you down to the point in the stack that holds the "where was I" location (and you're still writing values in the stack). And then you write a meaningful memory address to branch to, instead of the previous one it had written there. End that with a 00 and then the game will stop writing "nametag" values to the stack and shortly after will attempt to branch back to the function it was previously at. So at this point, the memory address you wrote to the stack will be pointed to the start of custom code that you saved on the memory card, the game will branch there instead of the previous normal address, and BINGO. Profit. It's quite brilliant.



Anyway, as explained above, there were a few problems associated with the rumble byte still being in the middle of an 8 character name tag. So what I had to do to restore normal rumble function, was find every line of code [I could find] that looks at that rumble byte (code that ACTUALLY makes rumble happen or not happen based on looking at the flag value, like pressing Start at the CSS), and rewriting this line of code to look at a different location instead. One that wouldn't interfere with an 8 character name tag.

Yes, this was a b***h. (and one of those "little" things that end users of 20XX don't know took like an entire night of pounding my head against a wall to figure out).

But yeah, that's why it doesn't automatically turn rumble on when you make a name tag, because I guess I didn't tell it to store the rumble on value into the new location. It wouldn't know to do so unless I find that storing line of code and tell it to store it at the new location.

I don't plan on looking at this anytime soon. Well, maybe. We'll see. But thanks for bringing it up. So you'll just have to manually turn rumble on for any name tag you make. At least I got that working...
I assumed it had something to do with that. Its not really a major problem, so there should not be rush to fix it.
 
Last edited:
Top Bottom