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

Crazy Hand v1.31 - Character editing program

SnuggleWuffle

Smash Rookie
Joined
Feb 1, 2015
Messages
6
NNID
SnuggleWuffle
I figured out my problem. Now i just need to understand these terms so i can efficiently mod patches.
 

UltiMario

Out of Obscurity
Joined
Sep 23, 2007
Messages
10,439
Location
Maryland
NNID
UltiMario
3DS FC
1719-3180-2455
So does anyone have a clue how Confusion works? The throw doesn't exactly ignore the Throw/Release flags in the subaction, but it doesn't look like you can impact BKB, KBG, or angle in any meaningful way. What's the trick with this thing?
 

Fug Ebin Meme

Smash Rookie
Joined
Aug 8, 2016
Messages
12
Location
Vancouver Island
My melee mod has too many FSM entries, and is starting to glitch out and duplicate the last few. Is there anything I can do or will I just have to remove some and continue without adding more FSM's?
 
Last edited:

Frumpis

Smash Rookie
Joined
Jan 19, 2015
Messages
3
Location
Arlington Heights, Illinois
NNID
drcevapovic
I tried to open crazy hand using that Java thingy, but it won't let me open it. Can anyone help?

It gives me this error message in the imgur image file

http://i.imgur.com/Gpp0za6.png












Hello everybody.

This is Crazy Hand. It is a character editing program for Melee that allows you to quickly and easily edit things such as character attributes, hitboxes, subactions, and more.




























The program is now pretty self explanatory. All you need to do is acquire a melee ISO and open it with Crazy Hand. From there, edit whatever you want and press save when done.

Please note! Crazy Hand is a java program, meaning that it is a .JAR file instead of a .EXE file. double click it just like you would any other executable file to run the program. If you have a program like WinRAR installed on your computer, double clicking it may try to open it as an archive file. You don't want this, so instead right click it >> Open with >> Java Platform Binary. This may vary slightly by operating system, but the general process is the same.

The entire project is open source and code is being maintained on GitHub. If you would like to take a look at it and potentially contribute, here's the link to our page: Crazy Hand GitHub

Huge thanks to Tater and darkside1222 for the code that they have both contributed to this project.
In addition I'd like to say major thanks to everybody else who has supported us on this project so far. This includes, but is not limited to Stratocaster, Achilles1515, DRGN, Magus, Itaru, LanceInThePants...
You guys have all been incredible help to me on this project. Not all of you directly helped me, but the amount of research and documentation that I read from many of you has just been unbelievably helpful. I would be nowhere without you guys. You rock!


Here is the download link: Crazy Hand v1.31

If you have any questions/comments/bug reports, please feel free to let us know.
 
Last edited:

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
I tried to open crazy hand using that Java thingy, but it won't let me open it. Can anyone help?

It gives me this error message in the imgur image file

http://i.imgur.com/Gpp0za6.png
I'll need a little bit more information than that to help :p

-Are you sure you have the latest version of Java installed?
-How are you launching Crazy Hand?
-Has Crazy Hand worked for you on this computer in the past?
-What OS are you using?

If you are using windows, please follow these steps:

1. Open notepad and paste this text:
java -jar CrazyHand.jar -Xms512m -Xmx1024m
pause

2. Hit save, then under "File Name" write runCrazyHand.bat
3. Under "Save as type" select All Files
4. Save the file in your Crazy Hand folder
5. Rename "Crazy Hand v1.31" to "CrazyHand"
6. Double-click on runCrazyHand.bat to run Crazy Hand
7. A black window (command prompt) should pop up; take a screenshot of what it says once Crazy Hand stops working and post it here.
 

StarPlatinum70

Smash Rookie
Joined
Aug 21, 2016
Messages
23
Still can't get CrazyHand's "Projectile" option to work. I want to give Link's ftilt a projectile, but I can't. How do I make him launch a Falco Laser beam from his sword, and how do I and how do I make his Taunt give him a Beam Sword?
Can that even be done in melee?
 

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
Can that even be done in melee?
I don’t think there is an “add projectile” option. Are you talking about the custom subaction event? Either way, I don’t think it’s possible to do what you’re asking.

Assuming you are referring to the projectile menu option in Crazy Hand; as I explained earlier, it is only for editing projectile hitboxes. You can use it to change the hitbox properties of Mario’s fireball, for example.
To explain a little further; Falco's laser beam is limited to Falco. It's a part of his character data, and at the moment it's something that can only be loaded and used by falco. This is true of all character projectiles that come from moves.

You can trick the game into letting you use some character projectiles that are appropriate for your character by following my instructions here using the custom character data modification event. I just tested it with falco lasers though, and they don't use the projectile flag so I don't know how to spawn them.

---

You can also use the custom projectile subaction event to spawn a beamsword for your character. With this event you can also spawn some other projectiles that are NOT character specific, though many of them don't work without problems.
 
Last edited:

UnclePunch

Smash Ace
Joined
Nov 9, 2014
Messages
673
Not sure where to post this but it looks like peach has some down B midair data?



Can any animations / syntax be assigned to this?
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
Not sure where to post this but it looks like peach has some down B midair data?



Can any animations / syntax be assigned to this?
Actually, Peach's SpecialLw/SpecialLwHit/SpecialAirLw/SpecialAirLwHit are assigned to neutral-B (That is to say, using toad) and her turnip pull (SpecialN) is assigned to down-B. I'm not entirely sure why the developers did this, but I can only imagine that turnip pull was originally planned to be neutral-B and changed later because it's more intuitive to press down+B to pull something from the ground.
 

UnclePunch

Smash Ace
Joined
Nov 9, 2014
Messages
673
Crazy Hand crashes when loading Mario's move logic. Looking through Magus' notes, he seemed to have left him out and while searching the dol, it doesn't seem to exist. Is this actually the case or am i missing something?
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
Crazy Hand crashes when loading Mario's move logic. Looking through Magus' notes, he seemed to have left him out and while searching the dol, it doesn't seem to exist. Is this actually the case or am i missing something?
Uh.... I have no idea why I didn't add Mario to the move logic table. I remember something about Mario and "all" being kinda intertwined but I don't remember exactly. I'll take a look at it and get back to you.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Marth Up-Special Floats
Offset 0x30 = 0.25 = Minimum x-joystick magnitude in opposite facing direction necessary to turn around.

Offset 0x34 = 0.5 = Minimum x-joystick magnitude to modify directionalization distance.

(Offsets are relative to the start of his floating point data --> basically the offsets the game uses)
The same values are likely used for Roy.
 
Last edited:

TheonlycompetitiveRoy

Smash Rookie
Joined
Sep 28, 2016
Messages
3
Could anyone figure out for me how to make Din's fire (Zelda F-B) Fully controllable? (as in like, up, down, left, right, and acceleration controls)? or if someone could figure out how to replace a character with another (replace Pichu with Lloyd per-se)
 

WindShineZ

Smash Cadet
Joined
Jan 19, 2016
Messages
27
NNID
iAmZ97
Could anyone figure out for me how to make Din's fire (Zelda F-B) Fully controllable? (as in like, up, down, left, right, and acceleration controls)? or if someone could figure out how to replace a character with another (replace Pichu with Lloyd per-se)
character specific attributes for zelda and im pretty sure replacing characters is impossible
 
Last edited:

Fug Ebin Meme

Smash Rookie
Joined
Aug 8, 2016
Messages
12
Location
Vancouver Island
Would it be possible to have an import/export function for move logic? I'm asking because manually copying and pasting the hex from the start.dol doesn't work properly for some reason.
 
Last edited:

AAAAAA

Smash Cadet
Joined
Aug 24, 2016
Messages
49
does anyone know how to make a character float in air? It would be cool if i could Mewtwo float while using his N-Air
 

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
does anyone know how to make a character float in air? It would be cool if i could Mewtwo float while using his N-Air
You can sort of fake this with character data modifications.

Have a look at Achilles's OP for the custom subaction event syntax:
Custom Subaction Format
F8FFAAAA BBCCDDDD EEEEEEEE .... BBCCDDDD EEEEEEEE ... BBCCDDDD EEEEEEEE ....

F8 = subaction command byte (always keep as 0xF8)
FF = flag for custom function (always keep as 0xFF)
AAAA = length of this custom subaction ( = 0x4 + 0x8*[# of char data offset mods])
ex. just one char data offset mod would have a total length of 0xC. Two mods at once would be 0x14. etc..​

The following data is for modifying a character data offset value. Modifications can be repeated in succession, as long as the "length of this custom subaction" is modified accordingly.

BB = modification type
00 = byte [8-bit]
01 = half word [16-bit]
02 = word [32-bit]
03 = floating point number [32-bit]​
CC = modification operation flag
00 = overwrite value at character data offset

01 = AND with value at character data offset
02 = OR with value at character data offset
03 = add to value at character data offset
04 = subtract from value at character data offset
05 = multiply with value at character data offset
06 = divide current value at char data offset with new value
+0x80 = [for floats to x-axis values] multiply new value by character facing direction
1.00 = facing right, -1.00 = facing left (these aren't important to know)​
DDDD = character data offset
*Note: take the offset from the SSBM spreadsheet and subtract 0x60 from it as the value to use here​
EEEEEEEE = new value to be placed @ character data offset
- in reference to x-axis values (e.g. velocity), with the 0x80 flag above enabled, positive float means forward and negative means backward​

NOTE: The BB and CC flags above do not add, except the 0x80 with the CC flag. So, setting the CC flag to 0x85 means to take the new value, multiply it by the facing direction, and then take the value [presumably a float] currently at the char data offset and multiply it by previous result.
I highly recommend experimenting with this event. You can reference the SSBM Data Sheet in order to see what many of the internal player data offsets have available for manipulation.

This is what I came up with:

F8FF0014 03000084 3F600000 02012218 FFFFF7FF

F8 - parse opcode (leave these 2 as they are to define "character data modification" event)
FF - function

0014 - this event is 0x14 in length (20 bytes; 5 event lines)

03 - value is float data type
00 - overwrite old value with new value
0084 - self-made vertical velocity value is at internal player data offset 0x84
3F600000 - write "0.875" to float at 0x84

02 - value is 32-bit word
01 - we are using new value as a bitwise AND mask to turn off a specific flag
2218 - fastfall flag is contained within internal player data word 0x2218
FFFFF7FF - bitwise AND FFFFF7FF with word at 0x2218 to turn off 00000800 flag

---

All together, it resets the fastfall flag and overwrites the player's self-made velocity with a value that gives them a slight bump upwards. It nullifies the previous vertical velocity that was caused by player actions.

You can add it pretty easily to Mewtwo's N-air by replacing a GFX event before his hitbox loop:

 
Last edited:

AAAAAA

Smash Cadet
Joined
Aug 24, 2016
Messages
49
Thanks
You can sort of fake this with character data modifications.

Have a look at Achilles's OP for the custom subaction event syntax:


I highly recommend experimenting with this event. You can reference the SSBM Data Sheet in order to see what many of the internal player data offsets available for manipulation.

This is what I came up with:

F8FF0014 03000084 3F600000 02012218 FFFFF7FF

F8 - parse opcode (leave these 2 as they are to define "character data modification" event)
FF - function

0014 - this event is 0x14 in length (20 bytes; 5 event lines)

03 - value is float data type
00 - overwrite old value with new value
0084 - self-made vertical velocity value is at internal player data offset 0x84
3F600000 - write "0.875" to float at 0x84

02 - value is 32-bit word
01 - we are using new value as a bitwise AND mask to turn off a specific flag
2218 - fastfall flag is contained within internal player data word 0x2218
FFFFF7FF - bitwise AND FFFFF7FF with word at 0x2218 to turn off 00000800 flag

---

All together, it resets the fastfall flag and overwrites the player's self-made velocity with a value that gives them a slight bump upwards. It nullifies the previous vertical velocity that was caused by player actions.

You can add it pretty easily to Mewtwo's N-air by replacing a GFX event before his hitbox loop:

Thanks
 

AAAAAA

Smash Cadet
Joined
Aug 24, 2016
Messages
49
So is there no way to change character movement in sub-actions with out codes? You would have to change something else? Im kind of new to hacking with syntax except for a few things, But i know how to use crazy hand.
 

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
So is there no way to change character movement in sub-actions with out codes? You would have to change something else? Im kind of new to hacking with syntax except for a few things, But i know how to use crazy hand.
You can do this in a way with move logic, I think. The physics action function of an action state sometimes contains extra instructions that deal with velocity changes, so you might be able to find a function that has a desirable effect.

This is complicated by the fact that move logic for normal attacks is usually shared between every character, and so you can't just alter a single character's normal moves like this. It's possible to change these mid-action via subaction event; but only with the custom code I mentioned earlier.

So no, not that I'm aware of when it comes to normals.

---

A note about move logic with B-specials though; if you consider that any function can be placed in these pointer slots so long as they just use the argument r3 = player entity; you can really exploit it.

For example, this function (8007E2FC) appears to nullify all velocities of a player as a part of hitting a blast zone, and teleporting back to spawn. It's also used during ledge grabs. It's likely not what you're looking for in terms of "floating" but serves as an example of a function that works with velocities, and isn't necessarily intended to be used directly with move logic.

When placed in a B-special physics action function slot on the move logic table in Crazy Hand, you can expect it to nail your character in place for the duration of that action.

 

gogocharter

Smash Rookie
Joined
Oct 5, 2016
Messages
2
While I was trying some new mods from MagicScrumpy, I came to realise that when I rapid jab my wii and dolphin crashes for no reason. Later on I camo to conclusion that after installing the FSM engine on 20xx 4.05 the game crashes for no reason when any charaacter rapid jab.

Is there an explination or a solution for this? or is it a bug?
 

UnclePunch

Smash Ace
Joined
Nov 9, 2014
Messages
673
You can do this in a way with move logic, I think. The physics action function of an action state sometimes contains extra instructions that deal with velocity changes, so you might be able to find a function that has a desirable effect.

This is complicated by the fact that move logic for normal attacks is usually shared between every character, and so you can't just alter a single character's normal moves like this. It's possible to change these mid-action via subaction event; but only with the custom code I mentioned earlier.

So no, not that I'm aware of when it comes to normals.

---

A note about move logic with B-specials though; if you consider that any function can be placed in these pointer slots so long as they just use the argument r3 = player entity; you can really exploit it.

For example, this function (8007E2FC) appears to nullify all velocities of a player as a part of hitting a blast zone, and teleporting back to spawn. It's also used during ledge grabs. It's likely not what you're looking for in terms of "floating" but serves as an example of a function that works with velocities, and isn't necessarily intended to be used directly with move logic.

When placed in a B-special physics action function slot on the move logic table in Crazy Hand, you can expect it to nail your character in place for the duration of that action.

Can you help me find one that descends the character? I've been using luigi's down B action physics function but it doesn't work in those random character + stage matchups where his cyclone starts charged...
 

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
While I was trying some new mods from MagicScrumpy, I came to realise that when I rapid jab my wii and dolphin crashes for no reason. Later on I camo to conclusion that after installing the FSM engine on 20xx 4.05 the game crashes for no reason when any charaacter rapid jab.

Is there an explination or a solution for this? or is it a bug?
There are a few different mods for preventing characters from rapid jabbing. Do you have one of them and other mods enabled? It's possible there could be conflicts between mods. Also, how are you applying mods to your game? Gecko codes? I don't know how the Gecko codehandler responds to or handles mods that may conflict (e.g. two or more trying to use the same injection point). The Melee Code Manager now has a feature to detect such things though. You could try applying your codes with that and see if it warns you of anything.
 
Last edited:

TheonlycompetitiveRoy

Smash Rookie
Joined
Sep 28, 2016
Messages
3
character specific attributes for zelda and im pretty sure replacing characters is impossible
well, by replace a character, i mean, like, replace the model, i could work out the animations and whatnot myself after that, but i just need to figure out how to replace the model. and i know about zelda's character specific attributes, but the problem is, i messed something up, and ended up making it only go straight, and now i can't fix it.
 
Last edited:

UnclePunch

Smash Ace
Joined
Nov 9, 2014
Messages
673
Middle Mang Middle Mang

You liked that comment so I assume you're looking for Mario's Move Logic, it's at 0x3C4160 in the start dol. If you need help editing it without crazy hand PM me or something and I'll walk you through it.
 
Last edited:

WindShineZ

Smash Cadet
Joined
Jan 19, 2016
Messages
27
NNID
iAmZ97
well, by replace a character, i mean, like, replace the model, i could work out the animations and whatnot myself after that, but i just need to figure out how to replace the model. and i know about zelda's character specific attributes, but the problem is, i messed something up, and ended up making it only go straight, and now i can't fix it.
ive never seen any melee model imports/replacements and ive been in the modding scene for a good while, im pretty sure modeling is only a thing for stages
 

UltiMario

Out of Obscurity
Joined
Sep 23, 2007
Messages
10,439
Location
Maryland
NNID
UltiMario
3DS FC
1719-3180-2455
Does anyone know how to prevent Zelda from entering Special Fall after Side-B or DK after Neutral-B?
 
Last edited:

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
Does anyone know how to prevent Zelda from entering Special Fall after Side-B or DK after Neutral-B?
Try changing the animation interrupts in the move logic table - https://smashboards.com/threads/how...tly-out-of-his-teleport.442579/#post-21500465

Note that for Zelda, this will not prevent the move from killing her doublejump.


Is it possible to allow Samus to charge her Charge Shot in the air using Crazy Hand?
I don't know enough to give you a confident answer, but I would imagine that it would be with the right information. It would probably require some ASM though.

It might be worth looking into how Mewtwo's aerial Shadowball charge works. I don't know much about either moves' mechanics except that their charge timers are probably held in the character-specific variables at the end of the internal player data block.
 
Last edited:

SmashModGod

Smash Cadet
Joined
Jun 10, 2016
Messages
36
Location
Jacksonville
Hey i'm using crazyhand 1.31 (most current, right?) and trying to add 800CAED0 jump cancel IASA to jiggz rest and it keeps not saving my changes ever! I did it to one other move so far on cFalc which worked fine, but for rest it's just never saving my change. I go to another move and go back and nothing's saved. Even when I save the the file, the IASA option keeps going back to 5C 00 00 00 00 and never saves my 800CAED0 please help!! I'm messaging Ampers etc @ it
 

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
Hey i'm using crazyhand 1.31 (most current, right?) and trying to add 800CAED0 jump cancel IASA to jiggz rest and it keeps not saving my changes ever! I did it to one other move so far on cFalc which worked fine, but for rest it's just never saving my change. I go to another move and go back and nothing's saved. Even when I save the the file, the IASA option keeps going back to 5C 00 00 00 00 and never saves my 800CAED0 please help!! I'm messaging Ampers etc @ it
5C000000 is the IASA flag event syntax. It tells the game that the player entity has extra IASA options for the rest of the action state duration, and can't be used for anything else unless you install this custom subaction event.

800CAED0 is an address that contains ASM instructions for Fox's grounded jump IASA out of shine, and is not an event syntax. To make use of it, you need to modify action state logic; which is just some data in start.dol that keeps track of what function pointers to use when adding instructions to the end of each controller button update.

Crazy Hand makes a table out of it called the Move logic table. B-special moves can be modified from it in the way you're trying to do like so:
 
Last edited:

Ripple

ᗣᗣᗣᗣ ᗧ·····•·····
Joined
Sep 4, 2006
Messages
9,632
Does anyone know how to prevent Zelda from entering Special Fall after Side-B or DK after Neutral-B?
Punkline Punkline leave this one to old man ripple :p

DK no fall

character offset 3B6C - Free Fall/Landing Lag disabled 20.0 -> 0.00

Zelda no fall

character offset 39AC - Landing Lag/Freefall 24 -> 0

Zelda keeping DJ after side-b

main.dol code

@137D64 - 981E1968 -> 60000000
@138070 - 981E1968 -> 60000000


and don't forget to give ness the same treatment :)

Ness no special fall character offset @3680 30 > 0

Ness keeps DJ after NB

main.dol
@11382C - 981E1968 -> 60000000
@113AC8 - 981E1968 -> 60000000


and don't forget about kirby hats

Ness hat @5048 30 > 0

@FB670 - 981E1968 -> 60000000
@FB90C - 981E1968 -> 60000000


DK hat @5028 20 >0

@fd52c - 900422E8 -> 60000000
 
Last edited:

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
Woah! I need to pay more attention to these attributes. I like that this method of removing special falling is non-destructive to the action state logic. Nice work Ripple Ripple !

It’s cool to see more ASM stuff around here, btw. I’m seeing this doublejump burn pop up a lot in questions lately, so I’ve been considering just hunting them all down and making a big table of static overwrites.

You know, if you’d like to share nops like this in a way that mere mortals can use to install without any prior knowledge of DOL modding--check out MCM. By sharing these as a mod containing static overwrites, they can be installed without even needing to open start.dol~

Also, MCM can be used to convert DOL offsets between Melee versions (and into RAM addresses.) I notice you’re using Melee 1.00, so this would be helpful if you wanted to port things to 1.02

An example, using your findings with Zelda (copy and paste this into a text file in your Mods Library)
Code:
    -==-


Zelda Side-B Preserves Jumps
Zelda doesn't burn her remaining doublejump on side-B
[Ripple]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code
1.02 ------ 0x13845C ---- 981E1968 -> 60000000
----------- 0x138768 ---- 981E1968 -> 60000000
1.01 ------ 0x1381A0 ---- 981E1968 -> 60000000
----------- 0x1384AC ---- 981E1968 -> 60000000
1.00 ------ 0x137D64 ---- 981E1968 -> 60000000
----------- 0x138070 ---- 981E1968 -> 60000000
PAL ------- 0x138C00 ---- 981E1968 -> 60000000
----------- 0x138F0C ---- 981E1968 -> 60000000
 
Last edited:

SmashModGod

Smash Cadet
Joined
Jun 10, 2016
Messages
36
Location
Jacksonville
Crazy Hand makes a table out of it called the Move logic table. B-special moves can be modified from it in the way you're trying to do like so:
That's awesome, so this is what I'll do ti make jigg'z rest jump-cancelable?

Great community, thanks for the help! CHand is sooooo helpful to have also, I thought I was gonna have to use my hex editor for everything

Crazy Hand makes a table out of it called the Move logic table. B-special moves can be modified from it in the way you're trying to do like so:
How do i find a certain move (like rest)?

all the moves there have strange names, and not all moves are available under "Move Logic" like jab 1 jab 2 etc

Looking for rest, but I only see moves like "SpecialLwR0x16" etc (wth is that?? lol)

jhhúokn jhnk
 
Last edited by a moderator:

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
How do i find a certain move (like rest)?

all the moves there have strange names, and not all moves are available under "Move Logic" like jab 1 jab 2 etc

Looking for rest, but I only see moves like "SpecialLwR0x16" etc (wth is that?? lol)
There are exceptions for some unique moves, but in general it goes like this:

N = Neutral
S = Side
Hi = High (up)
Lw = low (down)
Some moves have L (Left) and R (Right) variations depending on your facing

So for rest, try both "SpecialLwL" and "SpecialLwR"
 

SmashModGod

Smash Cadet
Joined
Jun 10, 2016
Messages
36
Location
Jacksonville
Thanks so much! super helpful, i woulda never figured that out I just be slow :p many thx!


EUREKA IT WORKS MY ETERNAL GRATITUDE seriously

Any idea how to make a move cancelable into another move? like know falcon can spam knee in silly melee?

I want to make shine interruptible into another shine, so you can keep pressing down-B to multishine super easy no jump etc required
 
Last edited by a moderator:

DRGN

Technowizard
Moderator
Joined
Aug 20, 2005
Messages
2,178
Location
Sacramento, CA
EUREKA IT WORKS MY ETERNAL GRATITUDE seriously

Any idea how to make a move cancelable into another move? like know falcon can spam knee in silly melee?

I want to make shine interruptible into another shine, so you can keep pressing down-B to multishine super easy no jump etc required
If you have multiple things to post consecutively, please try to keep it to one post (mostly it just helps to keep threads clean and easier to search through). There's an edit button too, if you post and realize a little bit later that you have more to add. :)
 

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
Any idea how to make a move cancelable into another move? like know falcon can spam knee in silly melee?

I want to make shine interruptible into another shine, so you can keep pressing down-B to multishine super easy no jump etc required
I'll go into some details, because move logic is a popular topic lately.
Edit - cleaned up a couple things and added a little info

The IASA function (what you're modifying to provide a jump cancel) is what the game puts in charge of determining how controller inputs may constitute specific action state transitions that start new moves.

So with that knowledge, you can look at IASA functions (and the rest of the move logic table) as a little library of functions with behaviors that are predictable based on your knowledge of how each move works; which is very useful for experimenting. For example, functions from one move can sometimes successfully be swapped with another for desirable results.

This isn't a comprehensive list, but includes what I know about each function:
  • Animation Interrupt functions -
    • tell the game what action state to use when the move expires (from time)
  • IASA functions -
    • have extra instructions for handling the current state differently based on controller inputs
    • tell the game how to initiate new moves based off of controller inputs
  • Action Physics functions -
    • have extra instructions for the physics update each frame (like velocities)
  • Collision Interrupt functions -
    • have extra instructions for handling how a player clips with walls/floors/ceilings/slopes and other players
    • tell the game how to initiate ground interrupts like ledge teetering etc
    • tell the game what interrupt to use when landing an aerial
  • Camera Behavior functions -
    • determine how the camera tracks a player (and is usually the same between each move)
The game uses different character-specific action state logic tables to define all unique moves (more specifically, "action states.") Other states are identical between movesets and thus can't be modified distinctly by character (see the SSBM Data Sheet for a list of these common IDs. They consist of states 0x154 and below)

Because of this, only unique moves appear on the move logic table. To reference the move logic of common action states, you must either use a hex editor to study start.dol, or use debug mode in Dolphin to view emulated memory in a player entity. Doing so will net you some powerful tools for experimenting.

For example, the IASA functions used in standing (8008A4D4) or falling (800CB334) states can be used in many cases to create "turbo" moves that include interrupt logic for--well, anything you could do from a standing/falling state.

By looking closely at the actual instructions (with the help of the Community Symbol Map in debug Dolphin) you can see how these functions comprise mostly of other interrupt functions all stacked together. For the most part, these are usable in place of the host IASA function (just like how 800CAED0 can be used to provide ONLY the jump canceling effect of Fox's shine IASA; which is actually 800E8B14)

---

In one of the posts I linked above, I put together a little list of some interrupt functions from my (outdated) symbols map. Note that these pointers will only work in Melee v1.02 and must be ported for other versions:
Code:
8007d528 : ac_Interrupt_Fastfall_CheckToExecute
80081298 : ac_Interrupt_CliffCatch
8008169c : ac_Interrupt_Walljump
8008a4d4 : ac_Interrupt_AS_Wait
8008bfc4 : ac_Interrupt_F-Smash
8008c830 : ac_Interrupt_UpSmash
8008c948 : ac_Interrupt_UpSmash/LightThrowHi_FromKneebend
8008cad4 : ac_Interrupt_AS_Wait_CheckIASAflagforEnabledFirst
8008d08c : ac_Interrupt_AS_AttackAirN
8008d194 : ac_Interrupt_AS_AttackAirF
8008d29c : ac_Interrupt_AS_AttackAirB
8008d3a4 : ac_Interrupt_AS_AttackAirHi
8008d4ac : ac_Interrupt_AS_AttackAirLw
80090828 : ac_Interrupt_AS_DamageFall_Tumble
80091a2c : ac_Interrupt_Check
80092758 : ac_Interrupt_AS_Shielding
80093694 : ac_Interrupt_GuardReflect
80094e54 : ac_Interrupt_Item_CheckInstantAForThrow
80095328 : ac_Interrupt_ItemCheckForSomething
80096540 : ac_Interrupt_Side-B_Grounded
8009665c : ac_Interrupt_BbuttonInstant&Battacks
80096af4 : ac_Interrupt_AS_SpecialFall
8009802c : ac_Interrupt_AS_DownWaitU/D
800980bc : ac_Interrupt_DownStandU/D
80098214 : ac_Interrupt_DownBack/ForwardU/D
80098400 : ac_Interrupt_DownAttackU/D_FromDownBound
800984d4 : ac_Interrupt_DownAttackU/D_FromDownBoundWait
80098730 : ac_Interrupt_NeutralTech
80098928 : ac_Interrupt_TechRollF/B
8009917c : ac_Interrupt_Roll
80099264 : ac_Interrupt_Roll_OnlyCheckForL/R
80099794 : ac_Interrupt_SpotDodgeWithShieldHeldCheck
8009980c : ac_Interrupt_SpotDodge
80099a58 : ac_Interrupt_EscapeAir_Airdodge
80099c24 : ac_Interrupt_AS_EscapeAir_Airdodge
8009a080 : ac_Interrupt_ShieldDrop
8009a3c8 : ac_Interrupt_LedgeTeeter
8009a8fc : ac_Interrupt_AS_CliffWait
8009b170 : ac_Interrupt_CliffJump
8009eda4 : ac_Interrupt_StopWall
8009ef68 : ac_Interrupt_StopCeil
800c1d38 : ac_Interrupt_Edge/WalljumpTeching
800c23a0 : ac_Interrupt_CeilingTech
800c9618 : ac_Interrupt_AS_WalkSlow/Middle
800c97dc : ac_Interrupt_Turn
800c9cec : ac_Interrupt_TurnRun_KeepSameFrame
800c9d40 : ac_Interrupt_TurnRun
800c9ed8 : ac_Interrupt_AS_TurnRun
800ca094 : ac_Interrupt_TurnOrDash
800ca230 : ac_Interrupt_AS_Dash
800ca5f0 : ac_Interrupt_Run
800ca644 : ac_Interrupt_Run_Again
800ca830 : ac_Interrupt_AS_Run
800CAE80 : ac_Interrupt_JumpCheckInputOnly
800CAED0 : ac_Interrupt_Jump_Grounded
800caf78 : ac_Interrupt_AS_TurnRunActualChecks
800cb024 : ac_Interrupt_GroundJumpFromShield
800cb334 : ac_Interrupt_AS_JumpF
800cb5fc : ac_Interrupt_AS_Kneebend
800cb870 : ac_Interrupt_AerialJumpGoTo
800cb950 : ac_Interrupt_AerialJump
800ccaac : ac_Interrupt_AS_Fall
800ccd34 : ac_Interrupt_AS_Fall_Prefunction
800cce50 : ac_Interrupt_AS_Fall_Prefunction2
800d5d78 : ac_Interrupt_AS_Landing
800d5f84 : ac_Interrupt_JoystickDownRevivalPlatFall
800d5fb0 : ac_Interrupt_Squat
800d65d8 : ac_Interrupt_SquatReverse
800d6694 : ac_Interrupt_AS_SquatReverse
800d6824 : ac_Interrupt_Neutral-B_Grounded
800d688c : ac_Interrupt_Down-B_CheckInputOnly
800d68c0 : ac_Interrupt_Down-B_Grounded
800d6928 : ac_Interrupt_Up-B_CheckInputOnly
800d695c : ac_Interrupt_Up-B_Grounded
800D705C : ac_Interrupt_ItemCatch8FrameBufferEnableCheck
800d7100 : ac_Interrupt_CatchItem
800D8990 : ac_Interrupt_Grab_Standing
800d8a38 : ac_Interrupt_Grab_FromRun
800d8b9c : ac_Interrupt_CatchDash
800de9b8 : ac_Interrupt_D-PadUpInstantPressed?
800de9d8 : ac_Interrupt_Taunt
800e6adc : ac_Interrupt_Fox_AS_NeutralB_CheckForBbuttonPress

From this list, you may be able to find an appropriate interrupt for a desired IASA function modification.

Specifically for the case of making an automatic multishine, 800d68c0 "ac_Interrupt_Down-B_Grounded" for "SpecialLwLoop" and 8009665c "ac_Interrupt_BbuttonInstant&Battacks" for "SpecialAirlLwLoop" will do a pretty good job:


Note that because this replaces Fox's shine IASA, his former input interrupts for the move don't work as they once did; meaning the shine can no longer be jump canceled. Also, when looking at Fox's move logic table, it would appear that he has a duplicate entry for "SpecialLw" that doesn't seem to work--so make sure to edit the one closer to the top (or just both of them.)
 
Last edited:
Top Bottom