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

Hunybear

Smash Ace
Joined
Sep 27, 2013
Messages
405
Location
Nashville Tennessee
Im actually running melee on a benQ not a CRT. The 20XX wide screen mod works on the wii and any TV, but not on dolphin for whatever reason. I was wonderingg if there was a way to make a pre-built wide screen 20XX ISO as none of the dolphin setting worked.
 
Last edited:

UnclePunch

Smash Ace
Joined
Nov 9, 2014
Messages
673
Im actually running melee on a benQ not a CRT. The 20XX wide screen mod works on the wii and any TV, but not on dolphin for whatever reason. I was wonderingg if there was a way to make a pre-built wide screen 20XX ISO as none of the dolphin setting worked.
Graphics -> Force 16:9

Enable Widescreen in 20XX
 

CopynPasteKevin

Smash Cadet
Joined
Dec 22, 2014
Messages
63
NNID
CopynPaste
Anyone know how to replace the SD Remix characters? I want to replace SD Remix Roy with MagicScrumpy's Viable Roy.

Not sure if this question has already been answered, but if so, let me know please!

But yeah, checked the roots of the file and noticed how Roy had a .sat and .pat file (im assuming sat=SD Remix and .pat = PAL, so I'll risk screwing up my mod for this)
 

Zeus_Da_master

Smash Journeyman
Joined
Jan 22, 2007
Messages
298
Location
Atlanta Ga
do yall think itd be possible to have a color outline on the characters during team battle like in smash 4? sometimes the characters color (especially with the new hacked ones) blend in with the stage and its hard to see them....
 

oscat

Smash Journeyman
Joined
Apr 29, 2014
Messages
240
Location
So Cal
NNID
drlnklngmars
3DS FC
0318-9801-6641
do yall think itd be possible to have a color outline on the characters during team battle like in smash 4? sometimes the characters color (especially with the new hacked ones) blend in with the stage and its hard to see them....
Yoshi's Story - GrSt.dat
0x32e08 = RGBA of stage lighting shadow

CCCCCCFF is the default.

If you change it to 00FF00FF, you get this:
View attachment 96518
This would probably be the closest thing if someone could some how rig it so the color is determined by team.
 

Anutim

Smash Apprentice
Joined
Oct 22, 2013
Messages
185
This would probably be the closest thing if someone could some how rig it so the color is determined by team.
I think copying GnW's outline effect would do a better job. It may be an effect within the actual costume file however, so might be harder to implement than simply changing tint.
 

Ice`

Smash Rookie
Joined
Feb 23, 2009
Messages
21
Location
Delaware
**Mega noob when it comes to modding and things** I have a question about video quality. I finally got everything in the hack pack working on my wii. The video quality however seems very low, almost worse than my gamecube regular version of melee. Should I be using a CRT, should I be using one of those sewell wii to HD upscalers? Any info on why the quality seems rather fuzzy would be great, thanks!
 

DraGon72097

Smash Rookie
Joined
Oct 25, 2016
Messages
18
So, I'm working on a hack pack based off of this 20XX hack pack, and I have a few questions that I'd like Achilles, or anyone who worked on 20XX (or anyone who knows the answer) to answer.

1) How to make random stage select draw from from multiple Stage Select Screens? (For example, from MnSlMap.1sd, and MnSlMap.3sd.) On top of that, can one change what random stages are to be selected from, based on what Stage Select Screen they're on? (For example, MnSlMap.1sd selects only from default legal stages, MnSlMap.2sd selects from default and retextured legal stages, and MnSlMap.3sd selects from all legal and quasi-legal hackd stages.)

2) How did you make it so that, for example, when you select Brinstar in MnSlMap.1sd, it's the regular vanilla stage, yet in MnSlMap.2sd (i think?), it's frozen so the lava doesn't advanced. Also pertinent, is the a way to remove the destructible elements from Brinstar, so that the stage can't split, and the platforms are permanently locked in the down position?

3) In your entry on this page (https://smashboards.com/threads/the...ack-pack-v4-05-update-3-17-16.351221/page-129) related to changing what stages are selected on each MnSlMap.xsd. When you say MnSlMap.4sd isn't supported yet, does that mean you don't have any stages for it, the toggle for it is just disabled, or it's having problems working.

4) Can I make modifications to the CSS, so that, by using the dpad, we could toggle Silly Melee character data, SDRemix (I think this is already in?), balanced melee (when it finally comes out), and PAL (included for the sake of being thorough).

5) This isn't 20XX related, per say, but it's important for my hack pack. I read GodFed's tutorial on SFX editing, and I've done everything, but I have no idea how to compress the .dsp's back into the .ssm.

6) Oh boy, coding in new features:
A) I want to change the debug menu so it replaces the Language select, instead of tournament mode.
B) I want to change the custom music/music playlist so it replaces the trophies.
C) Change tournament mode, so that it functions like regular versus, except it disables all additional coding (except for PAL toggle, and crew battles [see below]), disables alternate costumes, and enables ONLY MnSlMap.1sd.
D) Change Handicap to instead be stock control (may already be a feature, I didn't see it in the original post)
E) Change "Auto" handicap control to "Crew". This just changes the algorithm so that it looks at how many stocks the winner of the previous match won with, and change their handicap to that, and change the loser's handicap to 4. (Not super important)
F) Add "All-Star Vs" instead of coin battle. Functions similarly to it's counterpart in Project M. My guess on how to do this would be to select each character in order, and this order is stored in the RAM somewhere. Whenever a player dies, it looks at the order, and overwrites whatever the current character ID (Not sure what the actual term is) is, so they respawn as a different character.
EDIT) G) Can I make a toggle switch somewhere that switches whether each character uses their respective .ssm file or .1sm file (or maybe Japanese .ssm)
EDIT) H) I'd like to add more alternate skins, like z-alternate, and a-alternate skins.
EDIT) I)


This would be pretty cool to add.

7) Absolutely the most important question of all, do I even have permission to make a hack pack like this, building off of 20XX? I'll absolutely give tons of credit to Achilles, the 20XX team, and the multitude of other hackers that have helped me, and I'm naming it 20YTho, to reference it's base. I just want to make sure the 20XX team is okay with this.

To clarify I'm not necessarily asking for anyone to make these changes FOR me (though that would be sick, and I'd pay), I just need some help understanding the 20XX code, and how to make code changes myself.


EDIT) I figured out how to add .dsp's to the .ssm now, I just had to reread it like, 80 times.
I would really like these questions answered. I'm fine if noone's qualified to help with the coding ones, but I'd REALLY like if I could get help with the rest.
 

Tryst

Smash Ace
Joined
Nov 23, 2013
Messages
597
Location
Right next door
NNID
Skolar
3DS FC
2750-1644-8369
Hey, is there any way to get 20XX version on my gamecube in the same way that 20XXTE does it? Through a custom melee save? Or is that not a possibility? Just curious. Thanks.
 

DraGon72097

Smash Rookie
Joined
Oct 25, 2016
Messages
18
Hey, is there any way to get 20XX version on my gamecube in the same way that 20XXTE does it? Through a custom melee save? Or is that not a possibility? Just curious. Thanks.
No, you'd have to burn an ISO to the disc.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
So, I'm working on a hack pack based off of this 20XX hack pack, and I have a few questions that I'd like Achilles, or anyone who worked on 20XX (or anyone who knows the answer) to answer.

1) How to make random stage select draw from from multiple Stage Select Screens? (For example, from MnSlMap.1sd, and MnSlMap.3sd.) On top of that, can one change what random stages are to be selected from, based on what Stage Select Screen they're on? (For example, MnSlMap.1sd selects only from default legal stages, MnSlMap.2sd selects from default and retextured legal stages, and MnSlMap.3sd selects from all legal and quasi-legal hackd stages.)

2) How did you make it so that, for example, when you select Brinstar in MnSlMap.1sd, it's the regular vanilla stage, yet in MnSlMap.2sd (i think?), it's frozen so the lava doesn't advanced. Also pertinent, is the a way to remove the destructible elements from Brinstar, so that the stage can't split, and the platforms are permanently locked in the down position?

3) In your entry on this page (https://smashboards.com/threads/the...ack-pack-v4-05-update-3-17-16.351221/page-129) related to changing what stages are selected on each MnSlMap.xsd. When you say MnSlMap.4sd isn't supported yet, does that mean you don't have any stages for it, the toggle for it is just disabled, or it's having problems working.

4) Can I make modifications to the CSS, so that, by using the dpad, we could toggle Silly Melee character data, SDRemix (I think this is already in?), balanced melee (when it finally comes out), and PAL (included for the sake of being thorough).

5) This isn't 20XX related, per say, but it's important for my hack pack. I read GodFed's tutorial on SFX editing, and I've done everything, but I have no idea how to compress the .dsp's back into the .ssm.

6) Oh boy, coding in new features:
A) I want to change the debug menu so it replaces the Language select, instead of tournament mode.
B) I want to change the custom music/music playlist so it replaces the trophies.
C) Change tournament mode, so that it functions like regular versus, except it disables all additional coding (except for PAL toggle, and crew battles [see below]), disables alternate costumes, and enables ONLY MnSlMap.1sd.
D) Change Handicap to instead be stock control (may already be a feature, I didn't see it in the original post)
E) Change "Auto" handicap control to "Crew". This just changes the algorithm so that it looks at how many stocks the winner of the previous match won with, and change their handicap to that, and change the loser's handicap to 4. (Not super important)
F) Add "All-Star Vs" instead of coin battle. Functions similarly to it's counterpart in Project M. My guess on how to do this would be to select each character in order, and this order is stored in the RAM somewhere. Whenever a player dies, it looks at the order, and overwrites whatever the current character ID (Not sure what the actual term is) is, so they respawn as a different character.
EDIT) G) Can I make a toggle switch somewhere that switches whether each character uses their respective .ssm file or .1sm file (or maybe Japanese .ssm)
EDIT) H) I'd like to add more alternate skins, like z-alternate, and a-alternate skins.
EDIT) I)


This would be pretty cool to add.

7) Absolutely the most important question of all, do I even have permission to make a hack pack like this, building off of 20XX? I'll absolutely give tons of credit to Achilles, the 20XX team, and the multitude of other hackers that have helped me, and I'm naming it 20YTho, to reference it's base. I just want to make sure the 20XX team is okay with this.

To clarify I'm not necessarily asking for anyone to make these changes FOR me (though that would be sick, and I'd pay), I just need some help understanding the 20XX code, and how to make code changes myself.


EDIT) I figured out how to add .dsp's to the .ssm now, I just had to reread it like, 80 times.
1) I don't see a way of making a feature like this look pretty, but I'm sure it can be done. You'd just have to write an intense assembly function (or a few) to control all your logic when a random stage is selected.
2) I actually think the "No Lava" is not working in 20XX 4.05, but it has been added for the next version. It uses the "stage flags" in that post from myself on the page you linked. Say you want a stage flag of 0x80 to mean no lava, then you set the Brinstar selection on the second SSS to have a stage flag of 0x80, and then write a supplemental assembly function to monitor that flag value in the function that controls the lava. There is a Gecko code for disabling the lava

Disable Rising Lava on Brinstar
(1.02) [Zauron]
041D99E0 4E800020

So 801d99e0 should be an acceptable injection point. I'm sure it's possible to disable hazard collisions, but I've never looked into it.

3) "Isn't supported yet" means, most importantly, the coding to make it appear does not exist in 4.05. Additionally, no MnSlMap.4sd is in the filesystem. It has been added for the next version.

4) Sure, it will just be a nice, thick assembly function to switch the ASCII file names for a specific character on a button activator press. And you'll need to find free space in the RAM to hold tables for 32-bit overwrites that apply to each of the different character types, most likely parsed during the activator press. Any C2 asm injection codes (e.g. SDR - Mewtwo's side-b puts the victim in missfoot instead of tumble) will need to be modified to check for the specific character type in play before being executed (if you wanted that Mewtwo code for SDR, but not Balanced Melee). Also, you'll need to place separate FSM lists in free space in the RAM for each mod, then tweak Magus' frame speed modifier engine code to use the appropriate FSM list for the character in question.

6)
a) I have a Gecko code for disabling the language select button -

0422d1e4 48000154

So 8022d1e4 would probably be a fine injection point. But the language select screen is not a "major" menu like the Debug Menu, so you'll have to figure out how to load a major menu at will. I would investigate the asm surrounding the overwrite address of the "Debug Menu replaces Tournament Mode" code for clues on how to do that. Debug Menu is menu ID 0x6.

b) Same thing as above, but you'll also need to modify the assembly that loads up the Debug Menu to point to the Music Codes Menu, or make this happen in some hacky way using a flag value to automatically press buttons.

c) I guess you'd have to change tournament mode to send you back to VS mode, while setting some RAM flag value. Then you would have to modify every custom assembly function needing conditional checks based on that flag value.

d) Already a feature.
e) Another assembly function. Not sure of the best injection point off the top of my head.
f) GameCube's RAM is smaller than the Wii, which could be your limiting factor here. But I also have never seen any documentation about loading characters into a match on the fly, if possible at all. Changing the character ID of a player midmatch will make the game freeze, not transform them into that new character.
g) I tried doing this a long time ago, but ended up scrapping the Debug Menu option to change character SFX because their contents seemed to be cached in the RAM, or just loaded during the first match that character played, and not consecutive ones. So you would need to do some research into functions that load SSM files first, and try to figure out/modify the logic behind loading these files.
h) Assembly code, again. Check button activator and modify the ASCII in the RAM of a character's costume. If you want your ISO to run on any hacked console setup, you'll need to be aware that you can't go over 1.5 Gb or whatever the traditional limit for a GC game is.

7) You can customize it however you want. Just know that certain things will change with the Hack Pack in the future and it is not guaranteed to fall in line with any other custom code you add.


You are probably looking at a few years of learning assembly, learning the structure of Melee, and learning how to put it all together.
 
Last edited:

DraGon72097

Smash Rookie
Joined
Oct 25, 2016
Messages
18
1) I don't see a way of making a feature like this look pretty, but I'm sure it can be done. You'd just have to write an intense assembly function (or a few) to control all your logic when a random stage is selected.
2) I actually think the "No Lava" is not working in 20XX 4.05, but it has been added for the next version. It uses the "stage flags" in that post from myself on the page you linked. Say you want a stage flag of 0x80 to mean no lava, then you set the Brinstar selection on the second SSS to have a stage flag of 0x80, and then write a supplemental assembly function to monitor that flag value in the function that controls the lava. There is a Gecko code for disabling the lava

Disable Rising Lava on Brinstar
(1.02) [Zauron]
041D99E0 4E800020

So 801d99e0 should be an acceptable injection point. I'm sure it's possible to disable hazard collisions, but I've never looked into it.

3) "Isn't supported yet" means, most importantly, the coding to make it appear does not exist in 4.05. Additionally, no MnSlMap.4sd is in the filesystem. It has been added for the next version.

4) Sure, it will just be a nice, thick assembly function to switch the ASCII file names for a specific character on a button activator press. And you'll need to find free space in the RAM to hold tables for 32-bit overwrites that apply to each of the different character types, most likely parsed during the activator press. Any C2 asm injection codes (e.g. SDR - Mewtwo's side-b puts the victim in missfoot instead of tumble) will need to be modified to check for the specific character type in play before being executed (if you wanted that Mewtwo code for SDR, but not Balanced Melee). Also, you'll need to place separate FSM lists in free space in the RAM for each mod, then tweak Magus' frame speed modifier engine code to use the appropriate FSM list for the character in question.

6)
a) I have a Gecko code for disabling the language select button -

0422d1e4 48000154

So 8022d1e4 would probably be a fine injection point. But the language select screen is not a "major" menu like the Debug Menu, so you'll have to figure out how to load a major menu at will. I would investigate the asm surrounding the overwrite address of the "Debug Menu replaces Tournament Mode" code for clues on how to do that. Debug Menu is menu ID 0x6.

b) Same thing as above, but you'll also need to modify the assembly that loads up the Debug Menu to point to the Music Codes Menu, or make this happen in some hacky way using a flag value to automatically press buttons.

c) I guess you'd have to change tournament mode to send you back to VS mode, while setting some RAM flag value. Then you would have to modify every custom assembly function needing conditional checks based on that flag value.

d) Already a feature.
e) Another assembly function. Not sure of the best injection point off the top of my head.
f) GameCube's RAM is smaller than the Wii, which could be your limiting factor here. But I also have never seen any documentation about loading characters into a match on the fly, if possible at all. Changing the character ID of a player midmatch will make the game freeze, not transform them into that new character.
g) I tried doing this a long time ago, but ended up scrapping the Debug Menu option to change character SFX because their contents seemed to be cached in the RAM, or just loaded during the first match that character played, and not consecutive ones. So you would need to do some research into functions that load SSM files first, and try to figure out/modify the logic behind loading these files.
h) Assembly code, again. Check button activator and modify the ASCII in the RAM of a character's costume. If you want your ISO to run on any hacked console setup, you'll need to be aware that you can't go over 1.5 Gb or whatever the traditional limit for a GC game is.

7) You can customize it however you want. Just know that certain things will change with the Hack Pack in the future and it is not guaranteed to fall in line with any other custom code you add.


You are probably looking at a few years of learning assembly, learning the structure of Melee, and learning how to put it all together.
Thank you so much for the reply, this is insanely helpful.
 

Gelatin

Smash Rookie
Joined
Jul 27, 2015
Messages
3
How do you get the Debug camera controls working in 4.05 (ie dpad up to lock camera, L + cstick to zoom and R + cstick to pan)? Even with debug mode set to develop I can't seem to use these.
So Is anyone going to answer this question...?
 

UnclePunch

Smash Ace
Joined
Nov 9, 2014
Messages
673
Ok, so I've been trying to recreate this glitch for a while now. Me and 3 friends were playing Chess Melee mode, one was playing Sheik. Somebody died and when we all respawned, a Zelda fell from the top and landed on stage. There were 5 characters on stage and the Zelda was receiving the same inputs Sheik was. We were all laughing so hard that she died before we could mess with it. The conditions were, to my memory:

P1: Sheik (pressed Z on CSS so started as Sheik)
P2: Falcon
P3: Ganon
P4: Falcon

Stage was the 75m Omega import.

Can't remember which player died to trigger it but I tried everything to recreate it, holding A while respawning, holding AB while respawning, dying mid transformation, nothing. Zelda didn't spawn in on a platform either, just fell in from the top blastzone.

Achilles1515 Achilles1515 Not sure if you coded this game mode but do you know why this would happen? I'm super intrigued by it.
 
Last edited:

PsychoSoldier

Smash Cadet
Joined
Sep 24, 2015
Messages
41
So I've been looking for how to display hurtboxes and hitboxes but I've had no luck. How do I do this?
 

Gelatin

Smash Rookie
Joined
Jul 27, 2015
Messages
3
So I've been looking for how to display hurtboxes and hitboxes but I've had no luck. How do I do this?
On default 20XX settings, you press :GCX:+ RIGHT on the :GCDpad: in-game
However, if this doesn't work, try this instead:
  1. Pause in-game
  2. Cycle through "in-game toggles" using RIGHT on the D-Pad
  3. Select "20XX: ON / Develop: OFF"
  4. Unpause and try X + RIGHT on the D-Pad again
If it STILL doesn't work, try this:
  1. Pause in-game
  2. Cycle through "in-game toggles" using RIGHT on the D-Pad
  3. Select "20XX: OFF/ Develop: ON" (The reverse of before)
  4. Unpause using X + UP on the D-Pad
  5. Try R + UP on the D-Pad
If you're not familiar with debug mode I'd recommend taking a look at this so you know why your start button freezes your game
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Ok, so I've been trying to recreate this glitch for a while now. Me and 3 friends were playing Chess Melee mode, one was playing Sheik. Somebody died and when we all respawned, a Zelda fell from the top and landed on stage. There were 5 characters on stage and the Zelda was receiving the same inputs Sheik was. We were all laughing so hard that she died before we could mess with it. The conditions were, to my memory:

P1: Sheik (pressed Z on CSS so started as Sheik)
P2: Falcon
P3: Ganon
P4: Falcon

Stage was the 75m Omega import.

Can't remember which player died to trigger it but I tried everything to recreate it, holding A while respawning, holding AB while respawning, dying mid transformation, nothing. Zelda didn't spawn in on a platform either, just fell in from the top blastzone.

Achilles1515 Achilles1515 Not sure if you coded this game mode but do you know why this would happen? I'm super intrigued by it.
Lol. I did create this game mode.

I had a similar experience one time when testing the code during its development. Someone just grabbed a "sleeping" Zelda out of nowhere and everyone just burst out laughing and then the game froze. Not sure of the exact cause of the problem, but I was hoping it had been inadvertently fixed by rewriting some of it before releasing in 4.05. Sounds like that was not the case, but this was the first instance, other than my own, that I have heard about it. I tweaked the Chess Melee code a few months ago for 4.06 to fix a few minor bugs with it, so unless this bug can be reproduced, I'm going to "hope" it's been fixed again.
So Is anyone going to answer this question...?
Until next version, you'll need to revert a change made to the DOL in a hex editor. https://smashboards.com/threads/the...-update-3-17-16.351221/page-114#post-20441889
 

takedeadlyaim

Smash Rookie
Joined
Nov 25, 2016
Messages
3
After sudden death, the game goes to the score screen which is usually skipped. This is probably intended, so you can see who had more percent or something. Even so it's probably not necessary when both players lose their last stock on the same frame, and you go to sudden death from that.
 

PrinceJohn

Smash Apprentice
Joined
Nov 1, 2014
Messages
192
Slippi.gg
PRJN#560

ZenSmash

Smash Rookie
Joined
Sep 15, 2016
Messages
22

C-SAF

Smash Journeyman
Joined
Aug 31, 2014
Messages
378
Location
North
Is there a way to make cpu's spam tilts? i am only getting them to do smash attacks. Using 3.02 btw
Edit: nvmd i got it, has to angle downward slightly to get fwd tilt
 
Last edited:

Manja

Smash Rookie
Joined
Nov 28, 2016
Messages
1
If i turn on invincibility against a bot in vs. mode will there still be hitlag? Im looking for a way to practice waveshining.
 

Mastodon

Smash Apprentice
Joined
Dec 10, 2014
Messages
102
Location
North Carolina
If i turn on invincibility against a bot in vs. mode will there still be hitlag? Im looking for a way to practice waveshining.
You will still have hit lag. Technically, your opponent is "invulnerable", not "invincible". They still take damage, their hitboxes and environment collision box are still interact-able, they just don't suffer knock back or hit stun (the opposite of hit lag). You will, however, still experience hit lag.
 
Last edited:

ShyGuy$

Smash Rookie
Joined
Nov 20, 2016
Messages
1
Hey Achilles1515 Achilles1515

I'm a big fan of the work you've put in. I have absolutely no melee modding experience. But I am proficient in Assembly and C with experience in Deep Learning and Neural Nets. I have an idea I've been thinking of for quite some time to apply machine learning algorithms to melee, although it would be very difficult given the very high number of options a character has at any one time. I would like to start developing an AI but I have a couple questions.

1) How is melee coded? I believe I heard it is entirely in Assembly but if that is the case, does that mean you hard coded everything or did you write anything in C and translated? is there a guide or something that would be able to teach me how to crack melee?

2) how omniscient is melee AI? does it know exactly the location of the opponent, and the location of itself relative to the stage/opponent, and does it know exactly what attacks are being performed as soon as they are performed? How are decisions formed? does the AI

3) do you have code for the 4.05 AI you wrote and can I base my work off of yours? If I manage to accomplish anything you can use my work of course. Also is there a physical limit to how much data can be stored for the AI on the wii? that question is vital as the more data a system can hold, the more it can draw on experience to find optimal decisions. also are you currently working on the ai for the next update if you don't mind me asking?

I know I'm gonna have a lot more questions because this is a huuuuge undertaking to get the AI to what I am imagining. Most importantly to me is making an AI that can win fair and square. There are a couple AIs like smashbot that are just perfect techchasing and that's stupid and easy to make. I am imagining an AI with human reaction speed and softer reads than most humans. Like M2K almost.

Thanks for any help you can give, I am a pragmatic person and I realize this would take a lot of time and concentration to even start.

EDIT A: I've started reading Dan Salvato's guides, and that can get me started. I still have some questions. It appears as though all codes, including gecko codes are Assembly. Also after a quick scan of the data sheet the only reference I found to comp AI was its type and level at address 0x1A97. it appears as though if I wanted to use a higher language like C, I would have to do so on an emulator. I'm not sure how you programmed the 20XX ai with just assembly.

Also just musings on how to teach the AI. If a neural network is made, It would need extreme amounts of data, which would either have to come from some computer vision analysis of videos (other project entirely, but gives highest quality data), self play (tedious), or maybe with Dan Salvato's replay function (I'm not sure how that function works or if it would work). If anyone has experience with melee AI, please help.
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Hey Achilles1515 Achilles1515

I'm a big fan of the work you've put in. I have absolutely no melee modding experience. But I am proficient in Assembly and C with experience in Deep Learning and Neural Nets. I have an idea I've been thinking of for quite some time to apply machine learning algorithms to melee, although it would be very difficult given the very high number of options a character has at any one time. I would like to start developing an AI but I have a couple questions.

1) How is melee coded? I believe I heard it is entirely in Assembly but if that is the case, does that mean you hard coded everything or did you write anything in C and translated? is there a guide or something that would be able to teach me how to crack melee?

2) how omniscient is melee AI? does it know exactly the location of the opponent, and the location of itself relative to the stage/opponent, and does it know exactly what attacks are being performed as soon as they are performed? How are decisions formed? does the AI

3) do you have code for the 4.05 AI you wrote and can I base my work off of yours? If I manage to accomplish anything you can use my work of course. Also is there a physical limit to how much data can be stored for the AI on the wii? that question is vital as the more data a system can hold, the more it can draw on experience to find optimal decisions. also are you currently working on the ai for the next update if you don't mind me asking?

I know I'm gonna have a lot more questions because this is a huuuuge undertaking to get the AI to what I am imagining. Most importantly to me is making an AI that can win fair and square. There are a couple AIs like smashbot that are just perfect techchasing and that's stupid and easy to make. I am imagining an AI with human reaction speed and softer reads than most humans. Like M2K almost.

Thanks for any help you can give, I am a pragmatic person and I realize this would take a lot of time and concentration to even start.

EDIT A: I've started reading Dan Salvato's guides, and that can get me started. I still have some questions. It appears as though all codes, including gecko codes are Assembly. Also after a quick scan of the data sheet the only reference I found to comp AI was its type and level at address 0x1A97. it appears as though if I wanted to use a higher language like C, I would have to do so on an emulator. I'm not sure how you programmed the 20XX ai with just assembly.

Also just musings on how to teach the AI. If a neural network is made, It would need extreme amounts of data, which would either have to come from some computer vision analysis of videos (other project entirely, but gives highest quality data), self play (tedious), or maybe with Dan Salvato's replay function (I'm not sure how that function works or if it would work). If anyone has experience with melee AI, please help.
Welcome.

1) Your first question is a little vague and I'm not sure exactly what you mean. Nintendo wrote the game in C, but all we have available to us is the assembly since we don't have the source. Everything I write is directly in PowerPC assembly, although @Savestate wrote a guide about how to write SSBM codes in C. It's a little hacky, but seems to work and certainly could be useful. I haven't tried it myself. The best tutorial for learning how to write assembly codes is the video series by Dan Salvato, which I see from your edit that you have already started watching. That was how I first learned.

2) If you are referring to the vanilla Melee AI, then I don't have answers for you, nor does anyone else (that I know, at least). I mean, I can guarantee you that it knows exactly where a character is in relation to opponents/the stage, but the specifics of it's higher level decision making from a programming perspective is unknown. When all you have to work with is unlabeled assembly functions, it can be extremely difficult, tedious, and time consuming to reverse engineer something like that. Not only will it be a lot of time into one specific subject (AI), but you'll need to be... "qualified" to really even begin on a project like that. By qualified, I mean having a REALLY solid understanding PowerPC ASM and, more importantly, be really comfortable and knowledgeable on the general format and structure of Melee's code (how variables and structures are placed, read from, and written to in the RAM).

3) Sure, the 4.05 AI code is attached. It's a multi-thousand line assembly code that took me a few months to write, but it took two years of gaining enough knowledge to do so. At the heart of it, it's nothing special. Just a labyrinth of IF statements and calls to the RNG function. It's also somewhat of an add-on to the vanilla, meaning it could technically be stand-alone, but I choose not to make it that way and "turn it" ON/OFF if specific conditions are met.

Imho, if you're really into the neural network thing, I would ditch the Wii idea and stick with Dolphin, unless you want to create your own USB Gecko hardware to monitor console RAM in real time. The neural network deal is not really feasible on console for a variety of reasons including, but not limited to:

1) Since we are injecting code into "free space" of the game, space is an absolute premium. There is probably not enough contiguous space for a massive, complex neural network code to be put into the game. At least with the free space we know about at the moment.
2) GC's RAM is 24mb and at any given time probably ~80% filled while in-game.
3) I've never seen a code for loading the contents of an arbitrary file (added to the file system of the disc image) into the RAM. Something like a random data file you are wishing to load.
4) Assembly... I guess there is the possible C route, but then we loop back to point 1) above.

It seems like you want to contact this guy, if you haven't already. I don't know the specifics behind his AI, but it is written in Python and "learns". He told me on Twitch that he had like 80 matches being played at once on a server, all at 3x game speed to increase learning pace. His Falcon was legit beating Kage at Shine.

https://twitter.com/mcc_nfreak/status/770004127095066624

xpilot also has a Discord channel for the Melee AI project.

I don't mean to "burst your bubble" or anything like that, but I don't think assembly is where you want to go with this project.
 

Attachments

Last edited:

UltraRetroReviver

Smash Rookie
Joined
May 5, 2015
Messages
15
Location
Australia
How To Add HPS Files to 20XX 4.0
(this requires GCR and rebuilding the ISO with checking "do not use game.toc")

This is current last song 20XX 4.0 Beta01.


But we can add more!

1) Obtain an HPS file of your liking.
2) As shown in the above screenshot, the last named file is 68.hps. We are adding another one. So increment the HPS name counter by one. In this example, I would rename my HPS file 69.hps. (The numbers are in hex. So after 69 comes 6A, then 6B, .... , then 6F, then 70, etc.)
NOTE: Letters within the file name ARE capitalized!

3) Extract a root folder of your 20XX 4.0 ISO with GCR (at this point, you should probably just have a "master 20XX root" on your desktop or something).
4) Navigate into the "audio" folder and paste 69.hps

5) In your 20XX root folder, open MnSlChr.usd in a hex editor.
Go to offset 0x003edda8. This is a table of pointers. You don't really need to know what these actually do, but just go down to the very end and add one more entry (because you are adding one song). For your new entry, take the last entry and subtract 0x20.​


6) Now we need to add the song name ASCII text that will appear in the debug menu. In the step above, your new entry was "0x80fd9da0". Subtract 0x80bec720 from the new entry value. (In this example, 0x80fd9da0 - 0x80bec720 = 003ed680). Take the result and go to the offset in MnSlChr.usd.


7) Add your song name (ASCII to hex conversion). 31 character max.


8) Save MnSlChr.usd. Rebuild 20XX 4.0 ISO with GCR while checking "do not use game.toc".
9) Major profit.


Yes, you can go all the way up to FF.hps.

Is there a way to add this into 20XXTE? Do we copy over McSlChr, or do something else?
 

Rpggames77

Smash Journeyman
Joined
Mar 25, 2015
Messages
324
can someone help me, whenever i play i cant pick any stage other than battlefield
 

Zeus_Da_master

Smash Journeyman
Joined
Jan 22, 2007
Messages
298
Location
Atlanta Ga
Welcome.


1) Since we are injecting code into "free space" of the game, space is an absolute premium. There is probably not enough contiguous space for a massive, complex neural network code to be put into the game. At least with the free space we know about at the moment.
why can't we just do like pm and have a 800mb save file?
 
Top Bottom