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

Dream mods/codes

mythbust4000

Smash Journeyman
Joined
Dec 8, 2014
Messages
307
Location
Puyallup washington
NNID
517039
If you had to have one mod/code come to life right now,what would it be?
I would have a legit cbliss(costume expander) that had its own portraits, stocks, etc.
Or I would have a meleeex (like brawlex, which is a mod that adds characters)
 

omegagmaster

Smash Cadet
Joined
Dec 20, 2015
Messages
44
To be honest, it would be animations/models for me (or a tool for them) and the ability to increase the size of a Pl**.dat (to increase subaction size). These things would be really amazing to have.
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
The ability to update all pointers on the fly, which means we could move code, rewrite code (without injecting to a diff location), and increase the size of all files. That would eventually mean that we could add character data, action states, etc..
 

omegagmaster

Smash Cadet
Joined
Dec 20, 2015
Messages
44
The ability to update all pointers on the fly, which means we could move code, rewrite code (without injecting to a diff location), and increase the size of all files. That would eventually mean that we could add character data, action states, etc..
That's actually what I meant in my post, lol. But yes the ability to be able to update all the pointers would be absolutely amazing. With that, in the near future we could add more information for what could be projectiles, animations, and more.
 

Ed94

Smash Apprentice
Joined
Apr 2, 2015
Messages
164
Anything that allows you to play netplay melee while using widescreen codes and not dsynching, I don't even play 4:3 on 4:3 displays, I just can't stand that aspect ratio anymore.

Have melee run independent of dolphin, with its own p2p client manager with built in support for anthersladder matchmaking and automatically tracking data results from it.

(I can dream....)
 
Last edited:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
The ability to update all pointers on the fly, which means we could move code, rewrite code (without injecting to a diff location), and increase the size of all files. That would eventually mean that we could add character data, action states, etc..
That's actually what I meant in my post, lol. But yes the ability to be able to update all the pointers would be absolutely amazing. With that, in the near future we could add more information for what could be projectiles, animations, and more.
I have this already. It's actually not that complicated. It's part of how I made this.

The offsets of all pointers are given in the relocation table, so you just iterate over that, update (increase by the amount that you're changing by. or you could decrease to reduce space) all entries that point to or after the change, and also follow those RT entries and update the pointers that they point to, if they point to a place that comes at or after the change. Then change the size of the file and the offset for the relocation table, which are both in the file header.

Code:
def extendDataSpace( offset, diff ):
    """ This function will expand the data area at the given offset, starting at the first argument. The second argument is the amount to increase by.
        All pointers occurring after the sum of the two arguments will be recalculated. """

    def replaceHex( hexData, offset, newHex ): # Input takes a string, int, and string, respectively.
            offset = offset * 2 # Doubled to count by nibbles rather than bytes, since the data is just a string.
            codeEndPoint = offset + len(newHex)
            return hexData[:offset] + newHex + hexData[codeEndPoint:]

    global datDataHeader, datData, rtData
    if datDataHeader != '' and datData != '' and rtData != '':
        # Update the file header with the new file size and start of the relocation table.
        filesize = int( datDataHeader[:8], 16 )
        newFilesize = filesize + diff
        rtStart = int( datDataHeader[8:16], 16 ) # Size of the data block
        newRtStart = rtStart + diff
        datDataHeader = replaceHex( datDataHeader, 0, "{0:0{1}X}".format(newFilesize, 8) + "{0:0{1}X}".format(newRtStart, 8) )

        # For each entry in the relocation table, update the address it points to, and the value of the pointer there, if they point to locations beyond the extended space.
        entriesUpdated = 0
        pointersUpdated = 0
        for nib in xrange(0, len(rtData), 8):
            rtEntryNum = (nib/8)
            rtEntryAddress = rtStart + rtEntryNum * 4
            rtEntryString = rtData[nib:nib+8]
            rtEntryValue = int( rtEntryString, 16 ) # i.e. the pointer address
            pointerString = datData[rtEntryValue*2:(rtEntryValue+4)*2] # Multipled by 2 because this is per character/nibble, not per byte.
            pointerValue = int( pointerString, 16 )

            # If the pointer appears after the change, update its address in the relocation table accordingly.
            if rtEntryValue >= offset:
                newRtEntryValue = rtEntryValue + diff
                datData = replaceHex( datData, rtEntryAddress, "{0:0{1}X}".format(newRtEntryValue, 8) )
                entriesUpdated += 1

            # If the place that the pointer points to is after the space change, update its value accordingly.
            if pointerValue >= offset:
                newPointerValue = pointerValue + diff
                datData = replaceHex( datData, rtEntryValue, "{0:0{1}X}".format(newPointerValue, 8) )
                pointersUpdated += 1

        # Fill the newly extended space with zeros. (Values doubled to count by nibbles rather than bytes, since the data is just a string.)
        datData = datData[:offset*2] + '0'.zfill(diff*2) + datData[offset*2:]

        #msg('RT Entries updated: ' + str(entriesUpdated) + '\nPointers updated: ' + str(pointersUpdated))

In this example, the file's header, its data, and the relocation table were already separated. I've tested this, so I know it works. Although the root node table's data pointers often also need to be updated (if your file has more than one root node and you're not working with the last one).
 
Last edited:

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
The offsets of all pointers are given in the relocation table, so you just iterate over that, update (increase by the amount that you're changing by. or you could decrease to reduce space) all entries that point to or after the change, and also follow those RT entries and update the pointers that they point to, if they point to a place that comes at or after the change. Then change the size of the file and the offset for the relocation table, which are both in the file header.
And every single action state, stage, etc.?
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
Not 100% sure what you're asking, but if it's about what type of data uses these relocation tables: probably most if not all of the data formats use them. I haven't looked at all of the different kinds of files, but I think all the ones I've looked at use them, which includes files for characters, stages, effects (Ef__.dat), and animations (animation or AJ.dat files are a little different in that they look like multiple files built into one, where each subsection is a different animation). They're probably so universal because, as I understand it, they're part of a fundamental process for how the game transfers data into RAM, so that the relative addresses in the files can be recognized as pointers and translated into absolute memory addresses.
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
An ASM code to play sounds from a set of variable compressed hexadecimal code, with a MSB or leading byte to determine the quality of compression, and 7 bytes afterwards for the actual sound. Very compressed audio could actually be useful to save space. Is this how sound already is? I guess I have crazy ideas. I kinda simplified it but you get the gist. Also maybe integrated logical operators in Pl**.dat files?
 
Last edited:

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
An ASM code to play sounds from a set of variable compressed hexadecimal code, with a MSB or leading byte to determine the quality of compression, and 7 bytes afterwards for the actual sound. Very compressed audio could actually be useful to save space. Is this how sound already is? I guess I have crazy ideas. I kinda simplified it but you get the gist. Also maybe integrated logical operators in Pl**.dat files?
Gamecube audio samples are 2 bytes per sample, with the Audio Interface reading 16 sound samples per 0.25ms, which is 8 stereo samples @ 32KHz. To mix samples, Parameter Blocks are needed, which work like so:

Code:
Command 02: PBAddr
->
this.pb
next.pb
volume
source
sample rate
LPF
mixer
adpcm
With each PB specifying Left/Right/Surround.

Edit: And the MIDI spec itself requires only 6 bytes to play a single note one 1 channel, then turn off that channel. So yeah, just imagine all the high pitched screeches you can make with 7 bytes.
 
Last edited:

Aerros11

Smash Journeyman
Joined
Sep 5, 2009
Messages
284
A special melee mode that enables aerial clashing of attacks and allows both users to regain their double if clashed
 

oscat

Smash Journeyman
Joined
Apr 29, 2014
Messages
240
Location
So Cal
NNID
drlnklngmars
3DS FC
0318-9801-6641
A mod that lets you play the game as a 3rd person 3D platformer. Maybe someone can even import some 3D environments to roam in with friends. This would be a fun mod imo.
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
A mod that lets you play the game as a 3rd person 3D platformer. Maybe someone can even import some 3D environments to roam in with friends. This would be a fun mod imo.
Adventure Mode with co-op (and 3D movement, which is entirely possible)? Or are you talking about a follow-behind camera?
 
Last edited:

oscat

Smash Journeyman
Joined
Apr 29, 2014
Messages
240
Location
So Cal
NNID
drlnklngmars
3DS FC
0318-9801-6641
Adventure Mode with co-op (and 3D movement, which is entirely possible)? Or are you talking about a follow-behind camera?
Adventure Mode co-op with 3D movement. Is it really possible?
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
Adventure Mode co-op with 3D movement. Is it really possible?
Well, the game has a 3D depth and movement. Depth is only really used on stages that are offset from 0, like Great Bay, and specific moves (Brawl and Smash 4 have a number of moves that change your Z-Axis).

It's really a matter of being able to change that based on input, which isn't really hard to do. But stages would need to be built to support that kind of movement. Someone actually did it with Brawl and their test map was a Hyperbolic Time Chamber from what I remember. It looked awful, tbh.
 

oscat

Smash Journeyman
Joined
Apr 29, 2014
Messages
240
Location
So Cal
NNID
drlnklngmars
3DS FC
0318-9801-6641
Well, the game has a 3D depth and movement. Depth is only really used on stages that are offset from 0, like Great Bay, and specific moves (Brawl and Smash 4 have a number of moves that change your Z-Axis).

It's really a matter of being able to change that based on input, which isn't really hard to do. But stages would need to be built to support that kind of movement. Someone actually did it with Brawl and their test map was a Hyperbolic Time Chamber from what I remember. It looked awful, tbh.
Lol well at least it's possible. Ima have to find it now!
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
Adventure Mode co-op with 3D movement. Is it really possible?
Well, the game has a 3D depth and movement. Depth is only really used on stages that are offset from 0, like Great Bay, and specific moves (Brawl and Smash 4 have a number of moves that change your Z-Axis).

It's really a matter of being able to change that based on input, which isn't really hard to do. But stages would need to be built to support that kind of movement. Someone actually did it with Brawl and their test map was a Hyperbolic Time Chamber from what I remember. It looked awful, tbh.
A new camera mode to do this is possible too. I once made a camera mode that worked from the perspective of about where a character's eyes would be. That was... interesting. Lol
 

oscat

Smash Journeyman
Joined
Apr 29, 2014
Messages
240
Location
So Cal
NNID
drlnklngmars
3DS FC
0318-9801-6641
A new camera mode to do this is possible too. I once made a camera mode that worked from the perspective of about where a character's eyes would be. That was... interesting. Lol
So like a fox/falco fps and link crossbow training? x)
 
Last edited:

JbrockPony

Smash Apprentice
Joined
Jan 15, 2013
Messages
123
Location
Gerudo Valley , Chicago
NNID
JbrockPony
My dream mods:

Sonic the Hedgehog imported (model used from sonic heroes or SA2)
Solid Snake imported (model used from MGS twin snakes)

reasoning:

If you keep up with Sourcegaming or DidYouKnowGaming, Sonic and Snake were brought up as proposal during development. Unfortunately they couldn't make it in due to time constraints. I know brawl and project m exist, but i'd much prefer these guys in a pure melee engine.
 
Last edited:

Auvic

Smash Rookie
Joined
Jan 7, 2014
Messages
5
An easier way to import custom sounds into the game... the current ssm extracting, dsp to wav converting, audio editing, and hex editing for each individual file is so tedious.
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
For character's like fox, pikachu, mewtwo, shiek, etc.. with recoveries that can use analog input, would it be possible to get that analog input based on how long a digital input is pressed? I was thinking something like gathering a ratio or set of digital inputs and just getting the average analog input. Would this even be possible?
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
For character's like fox, pikachu, mewtwo, shiek, etc.. with recoveries that can use analog input, would it be possible to get that analog input based on how long a digital input is pressed? I was thinking something like gathering a ratio or set of digital inputs and just getting the average analog input. Would this even be possible?
What? You are gonna have to clarify this.

Like, "A is +15 radius, B is -15."
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
What? You are gonna have to clarify this.

Like, "A is +15 radius, B is -15."
No, like Holding up is 90, right is 0, left is 180, and down is 270. For every frame it is held add that number to a set of data. When gathering them is over get the average of these numbers.
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
No, like Holding up is 90, right is 0, left is 180, and down is 270. For every frame it is held add that number to a set of data. When gathering them is over get the average of these numbers.
Like up 2, left 1, right 3 would be 90, 90, 180, 0, 0, 0. The average of that is 60, so you can then translate that into the correct analog input. Would that be 64,200 something?
 
Last edited:

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
No, like Holding up is 90, right is 0, left is 180, and down is 270. For every frame it is held add that number to a set of data. When gathering them is over get the average of these numbers.
Seems overly complicated, given that it takes holding a single direction for the real value under normal circumstances. I mean, it wouldn't be hard to do, I guess. I just don't understand why you would want to do it.

Like up 2, left 1, right 3 would be 90, 90, 180, 0, 0, 0. The average of that is 60, so you can then translate that into the correct analog input. Would that be 64,200 something?
64, 200? What? Analog Inputs are -1 to 1 on the X,Y axis, so I'm not sure what you mean here. Plus, in this situation, it'd be easier to just provide the angle from the input, like the game already does.

There's definitely more than 5 frames in each of their recoveries. I realize that was to demonstrate the point, but I do want to make it clear that you'd need a bit of free space. Otherwise you have these random frame window that makes no sense, instead of the current angle of input direction at end of action state. It'd especially be an issue for Pikachu's recovery.

I dunno. Overall, seems incredibly convoluted and unintuitive. While I'm sure it could be implemented, you really need to work out how it's going to actually function.
 

BlayzeEmAll

Smash Rookie
Joined
Mar 4, 2014
Messages
13
NNID
AsceBlayze
A mod that made it play like streetfighter Lol... And netplay on Wii because my computer is just trash.
 
Last edited:

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
A random selection on the CSS that instead of randomly picked a CSS icon (through an already known function) picked a random character upon map loading, with a "random" icon in the CSS.
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
Would it be possible to place code in the initialization of items to cause them to despawn the frame they spawn?
Edit: I mean any and all non-player created items, or just maybe all items period if that can't be done.
 
Last edited:

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
Would it be possible to place code in the initialization of items to cause them to despawn the frame they spawn?
Edit: I mean any and all non-player created items, or just maybe all items period if that can't be done.
Yeah, I could do that right now. Or just stop them from spawning in the first place.
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
Yeah, I could do that right now. Or just stop them from spawning in the first place.
Could you give me a code that could do that? I kinda sorta changed some random values in tatahackpack somewhere a long time ago that make items crash sometimes a lot when you pick them up and I really do not want to do a full diff check of my start.dol and look through every difference.
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
Could you give me a code that could do that? I kinda sorta changed some random values in tatahackpack somewhere a long time ago that make items crash sometimes a lot when you pick them up and I really do not want to do a full diff check of my start.dol and look through every difference.
Give me a few hours, and I'll see what I can do. I want to test the most efficient method, then I'll work from there if it doesn't work.
 
Top Bottom