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

Important Melee, Hacks, and You -- New Hackers Start Here, in the OP!

c/c++

Smash Rookie
Joined
Apr 23, 2016
Messages
12
Does anyone have the contact info for Gpsgek (the creator of GC-Tool). I'm trying to update his software but I'm having trouble contacting him. His email listed on his web page (http://www.gctool.net/) is not in service anymore. Any help is greatly appreciated!
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
Does anyone have the contact info for Gpsgek (the creator of GC-Tool). I'm trying to update his software but I'm having trouble contacting him. His email listed on his web page (http://www.gctool.net/) is not in service anymore. Any help is greatly appreciated!
Dude, that's a geocaching tool, not Gamecube. GC-Tool was made by PARADOX.
 

Slykan

Smash Rookie
Joined
May 8, 2016
Messages
2
Being new to this, is there any way to extract and edit the animation going on behind the character select screen? Like everything behind the portraits, back button, etc?

On that note is it possible to hide everything on the css using codes/edits?
 
Last edited:

Absolome

Smash Cadet
Joined
Jan 3, 2014
Messages
68
Location
Asheville, NC
What do you mean by hide everything?

I'd imagine the character portraits and their frame would be extreme awkward to edit out, you might be able to find something by stepping through assembly code while on the CSS screen w/ dolphin and BLR/NOP testing unknown symbols to get a rough idea of what they do
 

Slykan

Smash Rookie
Joined
May 8, 2016
Messages
2
pretty much what you said, I guess making the texture for the css and frames transparent would not help?
 

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
On that note is it possible to hide everything on the css using codes/edits?
I made a code a while back that gets rid of “textures” for moves while hitboxes are being displayed by intercepting a call to a function labeled as “textureInitialization.” I remember noting that these calls were also commonly made when initializing menu textures.

I took a quick look and these 2 calls might interest you:



You may replace these lines with nops to skip the calls that load the texture. I've never tried it, but you might also be able to fiddle with the calling arguments for interesting results. It looks like they may create pointers to a specific texture.

The first texture is the CSS background. If you skip it, the background loads in completely blank.

The second texture seems to be the entire CSS panel. If you skip it, the foreground texture is blank, but still usable.
 

Proverbs

Smash Lord
Joined
Feb 21, 2008
Messages
1,698
Location
Seattle, WA
Hey guys! Anyone been able to figure out audio editing on a Mac computer? I'm using mine now and can get the .exe files to run on Wine, but can't use Terminal to open ssmex (for some reason I can't get cmd.exe to open with Wine :/) Any thoughts?

I'm trying to replace some of Falcon's audio (mostly his B moves) with vocals from Freddie Mercury. So, as you can tell, this is very important science.

Alternatively, if anyone wants to help me do this, I can supply the audio files of Freddie vocalizing trimmed and everything, but I would like to learn for myself too!
 
Last edited:

Sefthuko

Smash Rookie
Joined
Mar 18, 2015
Messages
15
Location
Vancouver, BC
Does anyone know how to modify the training menu text? http://imgur.com/Uj4Frtc
I've tried using Jorgasms menu text guide (http://smashboards.com/threads/changing-menu-text.368452) and searching through melee's .usd files and it hasn't worked. I also tried dumping all textures, and it only works for the training mode headers not the actual text options. For example, Item is one texture while Food is three textures (F,o,d). My goal is to change the speed header and options to a selection of options other than numbers.
 
Last edited:

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
Just modified the spreadsheet to use the in-game offsets for character data. They're no longer the +0x60 values we were using, folks.
 

Masondeanm

Smash Cadet
Joined
Mar 29, 2015
Messages
64
So I'm trying to begin my Melee hacking journey and I've already run into something I can't figure out. I'm watching Dan Salvato's first Wii game modding video. When I try to launch Melee in the debug version of Dolphin I get:

(error: LR=0)
invalid callstack

before the game does anything (it's just a black screen). This exact ISO plays just find when I'm not in debug mode. Google didn't turn up anything so I'm posting here hoping someone knows, thanks.

Edit: it looks like I can just hit play and it will get past the error, although I'm not sure if things are working right, I see a lot of "unknown"s.
 
Last edited:

Masondeanm

Smash Cadet
Joined
Mar 29, 2015
Messages
64
disable cheats
I'd had them disabled the whole time. The problem I'm having now is when I go to the addresses he's talking about, they're not representing the same things. For example, apparently 80cb18d0 is supposed to be player 2's damage. Well, when I go there, that's not the case.
 
Last edited:

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
to be able to cheat search, you need the Cheats at "ON". With that, disable all codes of Melee to remove any interference. Also, make sure you have the version 1.2 of the game, not another version
 

Masondeanm

Smash Cadet
Joined
Mar 29, 2015
Messages
64
to be able to cheat search, you need the Cheats at "ON". With that, disable all codes of Melee to remove any interference. Also, make sure you have the version 1.2 of the game, not another version
Yeah I had figured that out, my problem is my search results just aren't narrowing to any displayable degree. The only displayable thing I've found was searching for things less than 0, but trying to do the stocks thing like he does in the video---even going from 99 to 98 to 97 etc.---doesn't even get me below 100,000.

p.s. I'm NOT hitting new scan instead of next scan.
 
Last edited:

_yuna

Smash Apprentice
Joined
Feb 11, 2014
Messages
97
Location
Fox
Would anyone here happen to know where the player colors are located? Like the CSP color of port 1 and the color of the P1 on the cursor/hand on the css? And while I'm at it the color of the backgrounds for the tiny character windows are defined by hex right? Would be nice to know where that is as well if anyone knows.

If there's a thread for menu color stuff in general I wouldn't be against being pointed thataway cause I've been looking for offsets and stuff for a while now.

Also I have been working on a FFX inspired cursor edit. Importing them has them with a greyish tint. Is there a way to make them display in RGB? Or are the cursor's color defined by some function(?) in MnSlChr.usd? Sorry if what I'm writing doesn't make too much sense. Don't know the terminology sadly. Here's a picture:
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
Just added a few things to the Stage Data offsets portion of the spreadsheet and clarified what "Yakumono" means, so that people know why it's non-static objects. (It means "atypical components.")
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Just added a few things to the Stage Data offsets portion of the spreadsheet and clarified what "Yakumono" means, so that people know why it's non-static objects. (It means "atypical components.")
Which spreadsheet? The ssbmo or stage protocol one.
 

Sycorax

Smash Ace
Joined
Jul 7, 2014
Messages
502
Location
Atlanta, GA
@schmooblidon @Gentlefox
Reports about the Melee Calculator say the knockback formula is incorrect when attacks are staled. I just looked at the game code - the regular knockback formula is as follows:

Knockback[regular] = {(0.01 * knockback growth) * {{1.4 * {{{0.05 * {attack damage unstaled * [attack damage staled + floor(current damage)]}} + [attack damage staled + floor(current damage)] * 0.1} * {2.0 - [2.0 * (weight * 0.01)] / [1.0 + (weight * 0.01)]}}} + 18} + base knockback} * VicimDefenseRatio * AttackerOffenseRatio * GlobalDamageRatio

If Knockback > 2500, then Knockback = 2500.

Other multipliers (crouch canceling, smash attack charging, etc) are applied later in a separate function.
Do you have any information on what VicimDefenseRatio, AttackerOffenseRatio, and GlobalDamageRatio are? I assume they have something to do with handicap and the damage ratio settings. Is that true? Does anything else affect them?
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Do you have any information on what VicimDefenseRatio, AttackerOffenseRatio, and GlobalDamageRatio are? I assume they have something to do with handicap and the damage ratio settings. Is that true? Does anything else affect them?
Global Damage Ratio is what you can change in the menus, similarly to setting Team Attack ON. Defense/offense ratios are modified in the Handicap system and for certain 1P modes. For regular VS matches, these are all 1.00.
 
Last edited:

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
Well I decided to try and brute force animations to get some information. I got some general regions. I didn't include the information on animations I already found before, so below the unknown table is not included. I know this isn't definitive but knowing this information could help to figure out the format of it.
This is a breakdown of Captain Falcon's first Jab.
Hmmm, I believe the order in the unknown table has something to do with frames. This is all I shall post for now. However, you could look into whether or not there is entries with duplicate parts in an order in the table yourself. I'll probably do that later, but I am burnt out right now. Also keep an eye out for pointers to data within these regions. Don't forget this data is just to identify general regions, which can hopefully be used later. I included the original data that is in the region so it is possible to make changes and easily revert it. Some of the things in the fingers section really interest me. There seems to be a pattern there. Also there is something that I see just way too often. (11001600). Its everywhere. Its probably some sort of declaration.
 
Last edited:

Apophis

Smash Rookie
Joined
Jan 10, 2016
Messages
2
SSM Hacks

AUDIO HACKS : SSM FILES
Overview of Audio Format - SSM
SSM files hold audio clips, just like Pl****.dat files hold textures. They're like packages. SSMs hold a lot of sound files, each one approximately 1 second long. The format for the basic sound file system in the GameCube is called DSP (also called ADPCM). This is encoded audio that provides coefficients (special values) to allow the GameCube to decode it, like a decoder ring to decode a secret code. The coefficients are the decoder ring. Remember these "coefficients", they're very important.

A word about coefficients, since they're so important. First, why are they called coefficients? The word "coefficient" in math means "the number before the variable". So in the expression "3x+5", the coefficient of x is 3. But this doesn't help in the hacking sense. I have no clue why the magic numbers in Gamecube Audio are called coefficients, I just saw it called that in an explanation somewhere on the Internet (possibly YAGCD or Halley's Comet Software). They're just called coefficients, okay, it is what it is. The real question is, "What are coefficients"? Coefficients are 16-bit values that tell the Gamecube how to interpret the audio data in SSMs, DSPs, HPSs, and other audio files. They come in groups of 16, for a toal of 256 bits. That's 32 bytes, or 0x20 in hexadecimal. Since they tell the Gamecube how to read the data, coefficients are responsible for the quality and volume of the audio. I know, this is complicated, but just bear with me here.

The audio data itself comes in 8-byte portions, where the first byte calls a coefficient that tells the Gamecube how to decode the other 7. I'll repeat this as we go along.

The way DSP is structured is the data starts 0x60 bytes (that's 96 in decimal) into the file. Before that is header data, and the magic coefficient values (responsible for the quality and volume of the audio). The actual data comes in 8-byte clumps. The first byte calls one of the 16-bit coefficients to decode the next 7 bytes of audio. As I said, I'll repeat the info a bit, and say it in different ways to try and make it clear.

An SSM file is just a bunch of DSP files. Instead of placing each DSP one after the other, the SSM will split the DSPs and then place the different parts together. All the coefficients of the DSPs are clumped together at the beginning of the SSM, which takes up a few hundred bytes. After that the actual sound data begins. So here's an example to help. I have 5 DSP files, each one a different 1-second-long sound clip. I take the coefficients from DSP#1, 2, 3, 4, and 5, and I put them one after the other at the beginning of my new file (my SSM). Then I take the audio data that's left over from #1 and put it in my SSM. Then I take the audio data that's left over from #2 and put it in my SSM, after the audio data of #1. And so on, until I finished through #5. That's more or less it, but there's a little bit more to the coefficients, which I'll explain below.

NOTE: Most sound effects are mono (one channel of audio), but a few are stereo (two channels, L and R). You can find out whether the sound is mono or stereo with ssmex.exe. When a sound effect is stereo, there are a few changes to be made in the SSM. First of all, there are two DSPs that make up the sound - one L and one R. So in the SSM, there's twice the audio data for that sound. Second, since there are two DSPs, there are two sets of coefficients. Now, from the example above, if DSP#5 was a stereo sound effect (there would be two DSPs since it's stereo, lets just duplicate it for now to make L and R), I'd take the coefficients from DSP#5-L and place them after the coefficents from DSP#4. Then I'd take the coefficients from DSP#5-R and place them after those of DSP#5-L. When I'm placing the audio data, I'd put DSP#5-L's audio data after DSP#4's audio data. Then DSP#5-R audio data goes after that. Kinda confusing...sorry.

SSM Audio Hacking
What you need:
--SSBM ISO (you knew that by now)
--Hex editor
--an audio editor. I used Soundbooth, but Goldwave is good, too. I don't know about Audacity
--ssmex.exe (look up "hcs ssmex" on Google)
--cmd.exe (command prompt)
--Wii/GC SDK (specifically dspadpcm.exe and dsptool.dll...maybe soundfile.dll, too, perhaps)
--GC-Tool

What to do:
0. Before you start
Extract the audio SSM files from the ISO with GC-Tool. The ones you might be concerned with are under \audio\us for English version sounds, while those under \audio but not under \us are Japanese version sounds. Put all these SSM files into a directory, categorize them, whatever. Heck, you can do one at a time, it doesn't matter. As long as you know what's what. Make sure you have the Wii SDK tools in the same directory, as well as ssmex.exe and your trusty command prompt.

1.Extract DSPs from the SSM
Make sure that the SSM you want to extract from is under the same folder as ssmex.exe and cmd.exe..now run cmd.exe and type in this
filename.ssm should be replaced with the SSM file that you're extracting from.
You should see a bunch of lines of data. Very useful data. The program will tell you how many DSPs there are, whether they are stereo or mono, and where they are located in the SSM. And it will extract them. (If you have Visual C++, the DSP files may have the VC++ Project icon. Don't double click when you edit them. Just right click and open with a hex editor.)

2. Convert to WAV
The SDK program dspadpcm.exe not only converts WAV->DSP, but also DSP->WAV. Nifty. So run cmd.exe and type in
NOTE: "-d" means "decode". The outputfile parameter is optional; the program by default creates a WAV with the same name as your DSP. Also, if you want it to create an AIFF instead of a WAV, type "-f" at the end of the line, as another parameter. If you want info on your DSP dumped in a TXT file, type "-c" as a parameter, too.

This generates the WAV. Open it up in your favorite audio editor, and take a look at it. The important things to check are
a. sample rate (eg, 32 kHz)
b. bit depth (eg. 16 bits)
c. channels (eg. stereo or mono)
d. length (eg. 0.629 seconds)
e. volume (eg. max of "-1 dB", whatever that means)
If you can't find any of this info out, just play the file in iTunes, and right click it, go to Get Info->Summary. The Options tab has the exact length in seconds.

We need this info because we want to make our audio that we'll replace in the game as close to the original as possible. So we'll make its settings as close as possible.

3. Using your own audio
Now, when using your audio, you have to realize it's going to be short. The clip can't be much longer than a second, really. It's just sound effects. But, there are a whole lot of possiblities, nonetheless.
-Take your audio clip, open it with the audio editor, and, if it's stereo, export the channels individually to get R and L mono channels. Pick one of them to be your in-game sound.
-Adjust the length of the clip to match the length of the original exactly. Down to the thousandth of a second.
-Adjust the volume, a lot. It should be fairly loud, louder than all the other sounds on your computer. When you save your clip, make sure the settings match those of the original.

4. WAV->DSP
Now that your audio is formatted correctly, we're going to run dspadpcm.exe again. Run cmd.exe and type
NOTE: "-e" means "encode". The outputfile parameter is optional; the program by default creates a DSP with the same name as the WAV. If you want info on your DSP dumped in a TXT file, type "-c" as a parameter, too.

Now we have our DSP!

5. Manual hexing...
Open up your hex editor of choice. Open the original SSM, the original DSP, and the new DSP. Go back to the ssmex.exe program, and drag the SSM file over the icon. This will launch the program, but it won't extract the DSPs (I don't know why, but I don't mind). Instead it will just give the info on each file. Don't close this.
Hex time.
-Compare the original DSP to your new DSP. They should be very similar in length. Best case scenario, they're exactly the same. Absloute worst, your new one is a lot longer.
-In the new DSP, copy the data from 0x60 on. This might be in the middle of a bunch of 00's, but it's correct. Open the cmd.exe window and look for the original filename. The offset data will be right by it. So, go to the SSM, and paste the copied data at the specified offset. Double check to make sure you didn't make a mistake.
-At the end of the data, if there's still a little room before it goes to the next DSP, just insert 00's or FF's until it ends. If you think you went over the limit, you're in a little trouble. Ctrl-Z undo, mate. You need to find the length of the data from the cmd window, which has the beginning and end offsets for each DSP. Copy that amount only, and paste that. **I only think that the longer ones will still work. I haven't tested, though**
-Back in the new DSP, copy the funky looking data from 0x1C to 0x3C. This is the coefficient data responsible for correctly decoding the DSP audio. What we have to do is paste it in the correct spot in the beginning of the SSM. Either count from the beginning of the SSM (every 0x48 bytes is the end of a block of coefficient data for mono files....stereo files are a bit longer since each channel needs coefficient decoders. Just count out two mono coefficient blocks for stereo) to find it, or match the original DSP data from 0x1C to 0x3C in the SSM to find it. When you find where it starts (remember the coefficient data is always 0x20, or 32, bytes long), paste your new DSP coefficient data over it. Good to go.
Save the SSM in a safe place.

6. GC-Tool it up
GC-Tool->File->Open GC-ISO->ssbm.gcm
Select the SSM from the list it makes, right click->Replace File->choose the SSM you edited
File->Close GC-ISO
Exit

And we're done! With SSM, at least.

EXAMPLE - Editing Roy's taunt (Testing :) )
NOTE: This is what I did exactly in order to get the "testing" SSM example that Steelia used in one of his youtube vids. I have notes explaining extra steps that I didn't take which would increase sound quality and volume.

0. I extracted emblem.ssm from the \audio\us folder, and put it in a folder with ssmex.exe, cmd.exe, dspadpcm.exe, and soundfile.dll

1. I run cmd.exe, and I type
which outputs a bunch of DSPs for me, named "emblem00, emblem01, emblem02...etc"

2. I press enter to quit the program, and then I type
which outputs a WAV called emblem0b.wav. I listened to it in iTunes, and found it was the "hiii-ya" for Roy. I decided to edit it.
Opening Soundbooth with emblem0b.wav revealed it was 0.629 seconds in length, at 32kHz, 16 bit depth, mono, and had a max volume of "-1 db". OK..

3. I took an old sound clip I made to test what Soundbooth could do when I first got it, and I opened it up. It just was me saying "testing" over and over. I exported it to two mono channels, since it was stereo. I chose the R channel to edit, and I cropped it to exactly 0.629 seconds. Save as Test01R.wav (32000 Hz, 16 bit depth, Mono).
NOTE: You can also manually increase the volume, which helps with hearing it in-game.

4. I run cmd.exe and type
which outputs my DSP called Test01R.dsp

5. Oh boy, hexing. I opened emblem.ssm, emblem0b.dsp, and Test01R.dsp with a hex editor (HexEdit, anyone? I happen to use that...).
-I run ssmex by dragging the emblem.ssm over the icon, and get the offset data that way.
-I copy the data from Test01R.dsp from 0x60 on, and paste it into 0xDF70, with about 17 bytes to spare, so I fill in the extra space with 00's.
NOTE: I didn't do this step the first time....>>> I copy the coefficient data from Test01R.dsp at line 0x1C, to emblem.ssm. Since emblem0b is the 12th DSP (they start at 00, not 01), I go to offset (72*12) = 864, or 0x360. That's the end of the coefficient data. So I paste the data from Test01R.dsp 16 bytes before 0x360 - at 0x340.

6. GC-Tool. You know how it goes.

And there we have it. SSM audio format, done. So go and make some sound effets/voices!!
I have no idea what you mean by hexing. I have everything else down except the hexing. Is there any videos on youtube that explain this at all because I cannot learn this stuff from just text, but my group of friends are wanting to make out own sound pack with all sounds being just one of my friends making all the sounds.
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
If I wanted to disable reverse hitboxes (hitboxes from behind the character reversing the direction) where would I start or is this already know? Hope I'm not being too needy or w/e.
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
Can someone link me to achilles custom subaction thing? I forgot which thread it was in. I am sorry. :(
 

jmlee337

Smash Journeyman
Joined
May 8, 2008
Messages
304
Slippi.gg
LEE#337
DRGN DRGN can you update the audio section of the OP to add dsp2hps?: http://smashboards.com/threads/dsp2hps-melee-music-in-2016.439620/

It obsoletes all of the previous guides and tools. It's 10x easier and produces better results. I've noticed many people still finding their way to old threads and spending unnecessary effort.

@Deconimus also has written 20XX Music Manager, which is a real game-changer for music in 4.05 that should definitely be included. They and @DoctorKirby have both also made GUI front ends to dsp2hps
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,179
Location
Sacramento, CA
DRGN DRGN can you update the audio section of the OP to add dsp2hps?: http://smashboards.com/threads/dsp2hps-melee-music-in-2016.439620/

It obsoletes all of the previous guides and tools. It's 10x easier and produces better results. I've noticed many people still finding their way to old threads and spending unnecessary effort.

@Deconimus also has written 20XX Music Manager, which is a real game-changer for music in 4.05 that should definitely be included. They and @DoctorKirby have both also made GUI front ends to dsp2hps
Yes, will do!

I've been aware of that section being outdated, but I've done very little audio hacking, so I wasn't sure what was best for that section. Which resources would you recommend to be removed?
 

jmlee337

Smash Journeyman
Joined
May 8, 2008
Messages
304
Slippi.gg
LEE#337
Yes, will do!

I've been aware of that section being outdated, but I've done very little audio hacking, so I wasn't sure what was best for that section. Which resources would you recommend to be removed?
Looks like you can get rid of the following links:

How to Create Custom HPS Music Files Using MeleeHPS (Includes BRSTM File Conversion Guide!) - written by achilles - HPS files are what contain the music in SSBM. This guide shows you how to create looped HPS files for your game.

Custom Music Guide that Makes Sense - created by lanabo - If you're a visual learner, this is the guide for you, since it's a video guide. Although, it may just be the guide for you anyway, because it's pretty good. It aims to be less technical and easier to follow than the other guides.

HPS Audio Hacking Guide - written by GodFed - HPS files hold longer audio clips, such as background music. They are somewhat confusing. This guide explains HPS file structure and how they work, as well as how to change the music.

SIMPLE Step-By-Step Music Hacking Guide for the Masses! - written by GSUB - For those of you who don't want all the technical details behind HPS hacks, check this guide out. Very nicely done.

SleepyK's Youtube Tutorials - Rather old guides; everything you need may already be covered in the guides above.


And then below in 'programs':

- hps_insert v1.1 (and dependencies) - created by GodFed - Creates HPSs out of WAV files, almost perfectly. (Source code for hps_insert available here.)

HPSAuto - created by SheiktheOgre and Goatlink - HPSAuto is a patching program that takes WAVE music files, inserts them into an HPS file (Thanks GSUB), loops (if selected), and renders the file usable in modified melee ISOs.


And remove just MeleeHps from the following entry:

MeleeHps and MeleeSsm - created by GenesisFan64 - Used for music files and SFX packs, respectively. Rumor has it MeleeHps is far superior to hps_insert. Full results and write-ups are still being worked out in the lab.
 
Last edited:
Top Bottom