• 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

snuffysam

Smash Apprentice
Joined
Nov 13, 2012
Messages
101
Very bizarre... Have you had problems with any other features in Crazy Hand not working, or is this the first one you've noticed?

Would you post a snapshot of what your FSM editor panel in Crazy Hand looks like? I want to check and see if it looks right.

Edit: Also if you haven't tried already, I would recommend taking a completely clean v1.02 iso and trying with that one. Possibly you're testing with an iso that has some other kind of jankiness on it. I just tested exactly what I said and had no issues.
Going to the Move Logic tab freezes the program, but that's probably because I didn't download the thing that goes with it yet. Besides that, nothing.

I uploaded the screenshot.

It should be noted that when I open a completely clean iso, apply the FSM patch, and navigated over to the FSM panel, the modifier was already there. I deleted the modifier and re-added it just for testing purposes. No dice. But the fact that the modifier was there regardless should probably point us in the right direction...
 

Attachments

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
Going to the Move Logic tab freezes the program, but that's probably because I didn't download the thing that goes with it yet. Besides that, nothing.

I uploaded the screenshot.

It should be noted that when I open a completely clean iso, apply the FSM patch, and navigated over to the FSM panel, the modifier was already there. I deleted the modifier and re-added it just for testing purposes. No dice. But the fact that the modifier was there regardless should probably point us in the right direction...
Everything looks correct. Sorry, I don't know what the issue could be but I'll definitely be looking into it. If you'd be willing, I may also PM you in the future with a test build to see how it runs for you.

Also... this is my first time seeing what Crazy Hand's GUI looks like on a non-windows OS and I'm seeing that some things aren't displaying quite right. The character select window should display the whole image, and the text combo boxes should be wide enough to fit all of the text without an ellipsis. Also there's so much more whitespace than on windows. This makes me worried that other things aren't displaying right either.

Would you mind posting screenshots of the other panels of Crazy Hand? I'd like to see how everything else is displaying.
 

Binvin

Smash Rookie
Joined
Feb 5, 2016
Messages
9
Location
New Jersey, United States
Actually the FSM stuff just get exported as a plain .txt file. "options.cfg" must be what he's referring to which is auto-generated by CH and is only used by the program to manage user settings (default iso directory and a couple other flags). You shouldn't ever need to open this file, and deleting it is just fine, it will generate a new one.



What happens when you try to use it? And what version of melee are you using (1.02, 1.01, 1.00, PAL)? I'm working on a new update for CH so I'll look it. Unfortunately I've never been able to test CH on Mac or Linux because I only have windows. The DOL patching system should be getting a complete makeover in the next release.
I am using 1.02 NTSC
 

snuffysam

Smash Apprentice
Joined
Nov 13, 2012
Messages
101
Everything looks correct. Sorry, I don't know what the issue could be but I'll definitely be looking into it. If you'd be willing, I may also PM you in the future with a test build to see how it runs for you.

Also... this is my first time seeing what Crazy Hand's GUI looks like on a non-windows OS and I'm seeing that some things aren't displaying quite right. The character select window should display the whole image, and the text combo boxes should be wide enough to fit all of the text without an ellipsis. Also there's so much more whitespace than on windows. This makes me worried that other things aren't displaying right either.

Would you mind posting screenshots of the other panels of Crazy Hand? I'd like to see how everything else is displaying.
Go ahead and PM me. I'll test whatever you want.

It should be noted that I had to stretch the window for that screenshot in order to see all the fields. With the default window size, this is what all the panels (except Move Logic) look like:
 

Attachments

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
Go ahead and PM me. I'll test whatever you want.

It should be noted that I had to stretch the window for that screenshot in order to see all the fields. With the default window size, this is what all the panels (except Move Logic) look like:
Awesome. Might be a while before I have a test build ready but I'll let you know when I do.

And after seeing those screenshots for CH on Mac... yikes. The window sizes should by default be set so that everything fits in the frame horizontally. I'll see what I can do to fix this, but that may be pretty difficult since I have no easy access to a Mac for testing. I'll see what I can do.

I will say though, the native GUI components mac has look soooo much better than the ones windows has haha. I'm jelly.
 
Last edited:

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
and Ampers Ampers once I open the .iso it closes Crazy Hand immediately
Sorry man, I didn't mean to ignore you. I'm super busy right now so I can't help atm, but in the meantime answer these:


Is Java up to date on your computer?
Does it immediately close? Can you see the main window open at all?
Are you sure the iso you are using isn't corrupted?
What's your OS?
If you know how to run it from console, what does the log say when it crashes?
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
Awesome. Might be a while before I have a test build ready but I'll let you know when I do.

And after seeing those screenshots for CH on Mac... yikes. The window sizes should by default be set so that everything fits in the frame horizontally. I'll see what I can do to fix this, but that may be pretty difficult since I have no easy access to a Mac for testing. I'll see what I can do.

I will say though, the native GUI components mac has look soooo much better than the ones windows has haha. I'm jelly.
Try using setLookAndFeel to make a standard UI across platforms. Mac has an OS provided L&F that you can't set for other OS, unlike the GTK L&F, etc..
 

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
Try using setLookAndFeel to make a standard UI across platforms. Mac has an OS provided L&F that you can't set for other OS, unlike the GTK L&F, etc..
Thanks for the tip I'll look into it. I forgot about look and feel.
Just to make sure I understood you right, Mac's L&F can be changed, you just can't set other operating systems to have the one Mac has by default, right?
 

Binvin

Smash Rookie
Joined
Feb 5, 2016
Messages
9
Location
New Jersey, United States
Sorry man, I didn't mean to ignore you. I'm super busy right now so I can't help atm, but in the meantime answer these:


Is Java up to date on your computer?
Does it immediately close? Can you see the main window open at all?
Are you sure the iso you are using isn't corrupted?
What's your OS?
If you know how to run it from console, what does the log say when it crashes?
No crash error. I'll try updating
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
Thanks for the tip I'll look into it. I forgot about look and feel.
Just to make sure I understood you right, Mac's L&F can be changed, you just can't set other operating systems to have the one Mac has by default, right?
Macs can be changed, but you can't change that to the global L&F, because it's vendor specific.
 

morkymork

Smash Rookie
Joined
Feb 9, 2016
Messages
16
Location
Colorado
I'm having the same problem as Binvin Binvin - I just have different specs.
Ubuntu 15.04 with OpenJDK 8, ISO works, and when I try running from console, it says it cannot access the jarfile? But it opens to the choose ISO window. When I click Open, it closes.
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
I'm having the same problem as Binvin Binvin - I just have different specs.
Ubuntu 15.04 with OpenJDK 8, ISO works, and when I try running from console, it says it cannot access the jarfile? But it opens to the choose ISO window. When I click Open, it closes.
What's the command specifically that you're using to execute the jar?
 

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
Code:
advfsm:true
PlKp.dat
File is 0x2fd00 bytes in length.
false
java.io.FileNotFoundException: def\102\PlKp.dat (The system cannot find the path specified)
        at java.io.RandomAccessFile.open0(Native Method)
        at java.io.RandomAccessFile.open(Unknown Source)
        at java.io.RandomAccessFile.<init>(Unknown Source)
        at java.io.RandomAccessFile.<init>(Unknown Source)
        at com.FileIO.getDefaultSubactions(FileIO.java:355)
        at com.FileIO.getDefaultSubactions(FileIO.java:348)
        at com.MeleeEdit.<init>(MeleeEdit.java:145)
        at com.MeleeEdit$1.run(MeleeEdit.java:1088)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.DefaultComboBoxModel.<init>(Unknown Source)
        at javax.swing.JComboBox.<init>(Unknown Source)
        at com.MeleeEdit.<init>(MeleeEdit.java:145)
        at com.MeleeEdit$1.run(MeleeEdit.java:1088)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

trying to run from the Toolbox. I can't release 2.77 when this happens. I'm not very knowledgeable in Java, but it seems like Crazy Hand cannot find the resource files when loading from MTB.

Took me 20 minutes to figure this out today, a regression since the original release.

e~ solved the issue in toolbox using shifty directory swapping. still a pretty bad issue though.
 
Last edited:

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
Code:
advfsm:true
PlKp.dat
File is 0x2fd00 bytes in length.
false
java.io.FileNotFoundException: def\102\PlKp.dat (The system cannot find the path specified)
        at java.io.RandomAccessFile.open0(Native Method)
        at java.io.RandomAccessFile.open(Unknown Source)
        at java.io.RandomAccessFile.<init>(Unknown Source)
        at java.io.RandomAccessFile.<init>(Unknown Source)
        at com.FileIO.getDefaultSubactions(FileIO.java:355)
        at com.FileIO.getDefaultSubactions(FileIO.java:348)
        at com.MeleeEdit.<init>(MeleeEdit.java:145)
        at com.MeleeEdit$1.run(MeleeEdit.java:1088)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.DefaultComboBoxModel.<init>(Unknown Source)
        at javax.swing.JComboBox.<init>(Unknown Source)
        at com.MeleeEdit.<init>(MeleeEdit.java:145)
        at com.MeleeEdit$1.run(MeleeEdit.java:1088)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

trying to run from the Toolbox. I can't release 2.77 when this happens. I'm not very knowledgeable in Java, but it seems like Crazy Hand cannot find the resource files when loading from MTB.

Took me 20 minutes to figure this out today, a regression since the original release.

e~ solved the issue in toolbox using shifty directory swapping. still a pretty bad issue though.
Uhh if you want to avoid jankiness, I could probably add in the ability to specify the root directory to read those files from as a command-line argument when executing CH. I don't fully know what the problem your having is but that may make things simpler.
 

omegagmaster

Smash Cadet
Joined
Dec 20, 2015
Messages
44
I've been using this program for a while, and I have to say, it's really great. I would really appreciate it if somebody could give or link me a run-through of the character attributes that is loaded by the program by default (like dash & run A, etc) because I'm trying to do something with Luigi, and after modifying some properties, he still has his same length wavedash (which I'm trying to decrease.) I tried looking through the SSBM data sheet but they have the same descriptions that are shown from Master Hand.

Thanks,

OmegaGmaster
 

SinsOfApathy

Smash Journeyman
Joined
Feb 24, 2015
Messages
474
NNID
Psion312
I've been using this program for a while, and I have to say, it's really great. I would really appreciate it if somebody could give or link me a run-through of the character attributes that is loaded by the program by default (like dash & run A, etc) because I'm trying to do something with Luigi, and after modifying some properties, he still has his same length wavedash (which I'm trying to decrease.) I tried looking through the SSBM data sheet but they have the same descriptions that are shown from Master Hand.

Thanks,

OmegaGmaster
Wavedashing isn't a hard coded value, because it's a consequence of the physics engine. (As in, yes, Wavedashing isn't "intentional")

Pretty sure it's related to one of the air values.
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
I've been using this program for a while, and I have to say, it's really great. I would really appreciate it if somebody could give or link me a run-through of the character attributes that is loaded by the program by default (like dash & run A, etc) because I'm trying to do something with Luigi, and after modifying some properties, he still has his same length wavedash (which I'm trying to decrease.) I tried looking through the SSBM data sheet but they have the same descriptions that are shown from Master Hand.

Thanks,

OmegaGmaster
Wavedashing is largely affected by "Friction / stop deccel". The lower the value, the less your momentum will decay over time. (I.E setting this value to zero results in no loss of momentum on the ground, negative values cause your momentum to grow, and values at one or above immediately halt all horizontal momentum on the ground.)

I think "Ground to air jump momentum multiplier" also has an influence on wavedashing/wavelanding.

Air mobility A effects how well your character can move horizontally in the air via control stick inputs(For instance, Jigglypuff has a high value and she has a large amount of control over her movement in the air). This *may* effect wavedashing/landing as well.
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
I was wondering what flag affects what moves can be cancelled by the boomerang as link/young link, would it be possible to change what moves can be cancelled or even allow all moves to be cancelled?
 

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
Found a glitch in crazy hand, replacing a subaction with an (unknown) subaction that starts with 02xxxxxx is read as the end of the subaction, likely because of the trailing 0.
 

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
Ampers Ampers Tater Tater
Can you add 9400000X format?
94000001 character disappears.
94000000 character appears.

I'll add it to my to-do list.
Additionally, the next version of Crazy Hand will allow users to enter their own formats to be recognized by Crazy Hand. You won't be able to add things like new text fields or drop down menus, but you will be able to have CH recognize new event IDs and how long they are. This will hopefully be helpful for people like you who find new formats often.
 

Absolome

Smash Cadet
Joined
Jan 3, 2014
Messages
68
Location
Asheville, NC
Wavedashing isn't a hard coded value, because it's a consequence of the physics engine. (As in, yes, Wavedashing isn't "intentional")

Pretty sure it's related to one of the air values.
IIRC it has to do with ground traction, I don't remember if that's the exact name it has in crazyhand but it's the attribute that controls how far you slide on the ground once you stop moving (aka how quickly your momentum diminishes after traveling in a direction)

It might also be affected by the speed/distance of your air dodge, but I've got no idea how to alter that outside framespeed modifiers
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Take the hitbox radius/axis offsets and multiply by 0.003906 to get the Meleemeter equivalent.

With this knowledge, you should be able to accurately make a GUI of what a hitbox radius will look like.
(Not that this couldn't already have been figured out with Magus' physics hack).
 
Last edited:

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
Hey Tater Tater I just realized that some flags and a “move ID” I’ve been poking and prodding at in RAM for a couple weeks match all of the flags used in the Move Logic table included with v1.31. Actually, I can reconstruct the whole table as currently loaded player data from the player data table (which presumably load off of the values editable here in Crazy Hand.)

To see these in Dolphin or Cheat Engine, follow a player data pointer (ex, P1 is pointed to by 0x80453130, P2 by 0x804534C0) and add the following offsets to the resulting pointer to get the exact address in RAM of any of the following during a game:

(Edit: I've updated these to use internal player data offsets)

Internal Player Data Offsets:

0x14 - “Subaction ID”

0x2070 - “Flags 1”
0x206B - “Flags 2” -- (just one byte?)

Also, the function pointers--I’ve been playing with these a bit lately and I think they have the potential to make Achilles’ recent chimera of a subaction event dance in ways that are really interesting:

0x219C - IASA function pointer
0x21A0 - Animation Interrupt function pointer
0x21A4 - Action Physics function pointer
0x21A8 - Collision Interrupt function pointer
0x21AC - Camera Behaviour function pointer

Here’s something I’m pretty certain of:

byte 0x3 of “flags 1” --
This is actually an ID. I’ve been using it as a “move ID” since it uniquely categorizes every move in a simple way that’s common between characters.

Code:
ID    Move Description
01    jab1
02    jab2
03    jab3
04    jabLoop
05    dash attack
06    ground f-tilt
07    ground u-tilt
08    ground d-tilt
09    f-smash
0A    u-smash
0B    d-smash
0C    n-air
0D    f-air
0E    b-air
0F    u-air
10    d-air
11    n-special (ground and air use these)
12    f-special
13    u-special
14    d-special
... 
33    grab
34    grab jab
35    f-throw
36    b-throw
37    u-throw
38    d-throw
... 
40    jab with Beamsword
41    tilt with Beamsword
42    smash with Beamsword
43    dash attack with Beamsword
44    jab with Homerun Bat
45    tilt with Homerun Bat
46    smash with Homerun Bat
47    dash attack with Homerun Bat
4C    jab with Parasol
4D    tilt with Parasol
4E    smash with Parasol
4F    dash attack with Parasol
4C    jab with Fan
4D    tilt with Fan
4E    smash with Fan
4F    dash attack with Fan
50    jab with Star Rod
51    tilt with Star Rod
52    smash with Star Rod
53    dash attack with Star Rod
54    jab with Lipstick
55    tilt with Lipstick
56    smash with Lipstick
57    dash attack with Lipstick
58    ??
59    shoot raygun
5A    use fireflower
5B    ??
5C    tap superscope
5D    full shot superscope
5E    Hammertime
5F    Waprstar
... 
62    throw item
63    Luigi taunt (lol)
64    turn around
65    ??
66    walking
67    dash start
68    dash loop
69    jump
6A    double jump
6B    bounce of wall
6C    downed (up facing)
6D    downed (down facing)
70    grab ledge
71    taunt


Also, “flags 2” appears to be a version of the above Move ID that isn’t 0-based. From what I can tell, it just adds 1 to byte 0x3 of “flags 1”

I also know just a couple of things about the flags:

byte 0x0 of “flags 1” --
Just padding? I’ve never seen something write to this byte.


byte 0x1 of “flags 1” --
I’ve loosely interpreted some of these bits:
Code:
80    move anchors something to bone?
40    something to do with items/downed state
20    ?
10    special moves/tumble
08    followup is available (for some moves)
04    ? (attacks?)
02    in tumble/flinching from grab jab
01    ?

byte 0x2 of “flags 1”--
Again, loosely interpreted:
Code:
80    ?
40    ?
20    ?
10    move reflects projectile
08    move involves smash input
04    move uses an aerial hitbox???
02    move uses a hitbox???
01    move uses standard projectile

---

I can also confirm what Itaru Itaru said about Event 94 -- the effect can be seen normally in the “blink” animation for various teleport-like moves. It also seems to have 2 sister events, each of which use the exact same syntax:

Event 8C -- toggles held item visibility
Event 90 -- toggles visibility of other articles (tested with the Bunny Hood)

Here are my notes on a few other unknown subaction events:

30 00 00 XX
--”Adjust Hitbox Damage”
  • XX -- Damage to replace hitbox value
  • note that there is a 3-bit hitbox ID in the first 2 bytes that is identical to 2C events:
    • xxxx xxii ixxx xxxx

64 00 00 0X
--”Ground Anchor?” (Don't know much about this one; used in many recovery moves)
  • 0 - seems to move the player to nearest point on last used platform/surface (gfycat)
  • 1 - ?
  • 2 - ?

A4 XX Y0 00
--”Animate Bodypart”
  • XX - body part selector (ex: 18 = Fox’s left eye, 20 = Fox’s right eye, 00 = Fox’s left hand)
  • Y - Animation state (ex: 0 = closed eye, 1 = half-closed eye, 2 = open eye, 3 = tightly closed eye)

C4 00 00 0X
--”Sword Trail Visibility”
  • Input written to player.0x2160
    • byte appears to use "0" "1" and "2" to initialize a status "3" of being on; and "FF" when off.
  • X = 0-based number of sword trails? May be something else, but increases number of trails.
    • special syntax C5 FF FF FF equates to “-1” byte; used to terminate sword trail
 
Last edited:

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
Hey Tater Tater I just realized that some flags and a “move ID” I’ve been poking and prodding at in RAM for a couple weeks match all of the flags used in the Move Logic table included with v1.31. Actually, I can reconstruct the whole table as currently loaded player data from the player data table (which presumably load off of the values editable here in Crazy Hand.)

To see these in Dolphin or Cheat Engine, follow a player data pointer (ex, P1 is pointed to by 0x80453130, P2 by 0x804534C0) and add the following offsets to the resulting pointer to get the exact address in RAM of any of the following during a game:

player.0x74 - “Subaction ID”

player.0x20D0 - “Flags 1”
player.0x20CB - “Flags 2” -- (just one byte?)

Also, the function pointers--I’ve been playing with these a bit lately and I think they have the potential to make Achilles’ recent chimera of a subaction event dance in ways that are really interesting:

player.0x21FC - IASA function pointer
player.0x2200 - Animation Interrupt function pointer
player.0x2204 - Action Physics function pointer
player.0x2208 - Collision Interrupt function pointer
player.0x220C - Camera Behaviour function pointer

Here’s something I’m pretty certain of:

byte 0x3 of “flags 1” --
This is actually an ID. I’ve been using it as a “move ID” since it uniquely categorizes every move in a simple way that’s common between characters.

Code:
ID    Move Description
01    jab1
02    jab2
03    jab3
04    jabLoop
05    dash attack
06    ground f-tilt
07    ground u-tilt
08    ground d-tilt
09    f-smash
0A    u-smash
0B    d-smash
0C    n-air
0D    f-air
0E    b-air
0F    u-air
10    d-air
11    n-special (ground and air use these)
12    f-special
13    u-special
14    d-special
... 
33    grab
34    grab jab
35    f-throw
36    b-throw
37    u-throw
38    d-throw
... 
40    jab with Beamsword
41    tilt with Beamsword
42    smash with Beamsword
43    dash attack with Beamsword
44    jab with Homerun Bat
45    tilt with Homerun Bat
46    smash with Homerun Bat
47    dash attack with Homerun Bat
4C    jab with Parasol
4D    tilt with Parasol
4E    smash with Parasol
4F    dash attack with Parasol
4C    jab with Fan
4D    tilt with Fan
4E    smash with Fan
4F    dash attack with Fan
50    jab with Star Rod
51    tilt with Star Rod
52    smash with Star Rod
53    dash attack with Star Rod
54    jab with Lipstick
55    tilt with Lipstick
56    smash with Lipstick
57    dash attack with Lipstick
58    ??
59    shoot raygun
5A    use fireflower
5B    ??
5C    tap superscope
5D    full shot superscope
5E    Hammertime
5F    Waprstar
... 
62    throw item
63    Luigi taunt (lol)
64    turn around
65    ??
66    walking
67    dash start
68    dash loop
69    jump
6A    double jump
6B    bounce of wall
6C    downed (up facing)
6D    downed (down facing)
70    grab ledge
71    taunt


Also, “flags 2” appears to be a version of the above Move ID that isn’t 0-based. From what I can tell, it just adds 1 to byte 0x3 of “flags 1”

I also know just a couple of things about the flags:

byte 0x0 of “flags 1” --
Just padding? I’ve never seen something write to this byte.


byte 0x1 of “flags 1” --
I’ve loosely interpreted some of these bits:
Code:
80    move anchors something to bone?
40    something to do with items/downed state
20    ?
10    special moves/tumble
08    followup is available (for some moves)
04    ? (attacks?)
02    in tumble/flinching from grab jab
01    ?

byte 0x2 of “flags 1”--
Again, loosely interpreted:
Code:
80    ?
40    ?
20    ?
10    move reflects projectile
08    move involves smash input
04    move uses an aerial hitbox???
02    move uses a hitbox???
01    move uses standard projectile

---

I can also confirm what Itaru Itaru said about Event 94 -- the effect can be seen normally in the “blink” animation for various teleport-like moves. It also seems to have 2 sister events, each of which use the exact same syntax:

Event 8C -- toggles held item visibility
Event 90 -- toggles visibility of other articles (tested with the Bunny Hood)

Here are my notes on a few other unknown subaction events:

30 00 00 XX
--”Adjust Hitbox Damage”
  • XX -- Damage to replace hitbox value
  • note that there is a 3-bit hitbox ID in the first 2 bytes that is identical to 2C events:
    • xxxx xxii ixxx xxxx

64 00 00 0X
--”Ground Anchor?” (Don't know much about this one; used in many recovery moves)
  • 0 - seems to move the player to nearest point on last used platform/surface (gfycat)
  • 1 - ?
  • 2 - ?

A4 XX Y0 00
--”Animate Bodypart”
  • XX - body part selector (ex: 18 = Fox’s left eye, 20 = Fox’s right eye, 00 = Fox’s left hand)
  • Y - Animation state (ex: 0 = closed eye, 1 = half-closed eye, 2 = open eye, 3 = tightly closed eye)

C4 00 00 0X
--”Sword Trail Visibility”
  • Input written to player.0x2160
    • byte appears to use "0" "1" and "2" to initialize a status "3" of being on; and "FF" when off.
  • X = 0-based number of sword trails? May be something else, but increases number of trails.
    • special syntax C5 FF FF FF equates to “-1” byte; used to terminate sword trail
Hey Tater Tater I just realized that some flags and a “move ID” I’ve been poking and prodding at in RAM for a couple weeks match all of the flags used in the Move Logic table included with v1.31. Actually, I can reconstruct the whole table as currently loaded player data from the player data table (which presumably load off of the values editable here in Crazy Hand.)

To see these in Dolphin or Cheat Engine, follow a player data pointer (ex, P1 is pointed to by 0x80453130, P2 by 0x804534C0) and add the following offsets to the resulting pointer to get the exact address in RAM of any of the following during a game:

player.0x74 - “Subaction ID”

player.0x20D0 - “Flags 1”
player.0x20CB - “Flags 2” -- (just one byte?)

Also, the function pointers--I’ve been playing with these a bit lately and I think they have the potential to make Achilles’ recent chimera of a subaction event dance in ways that are really interesting:

player.0x21FC - IASA function pointer
player.0x2200 - Animation Interrupt function pointer
player.0x2204 - Action Physics function pointer
player.0x2208 - Collision Interrupt function pointer
player.0x220C - Camera Behaviour function pointer

Here’s something I’m pretty certain of:

byte 0x3 of “flags 1” --
This is actually an ID. I’ve been using it as a “move ID” since it uniquely categorizes every move in a simple way that’s common between characters.

Code:
ID    Move Description
01    jab1
02    jab2
03    jab3
04    jabLoop
05    dash attack
06    ground f-tilt
07    ground u-tilt
08    ground d-tilt
09    f-smash
0A    u-smash
0B    d-smash
0C    n-air
0D    f-air
0E    b-air
0F    u-air
10    d-air
11    n-special (ground and air use these)
12    f-special
13    u-special
14    d-special
... 
33    grab
34    grab jab
35    f-throw
36    b-throw
37    u-throw
38    d-throw
... 
40    jab with Beamsword
41    tilt with Beamsword
42    smash with Beamsword
43    dash attack with Beamsword
44    jab with Homerun Bat
45    tilt with Homerun Bat
46    smash with Homerun Bat
47    dash attack with Homerun Bat
4C    jab with Parasol
4D    tilt with Parasol
4E    smash with Parasol
4F    dash attack with Parasol
4C    jab with Fan
4D    tilt with Fan
4E    smash with Fan
4F    dash attack with Fan
50    jab with Star Rod
51    tilt with Star Rod
52    smash with Star Rod
53    dash attack with Star Rod
54    jab with Lipstick
55    tilt with Lipstick
56    smash with Lipstick
57    dash attack with Lipstick
58    ??
59    shoot raygun
5A    use fireflower
5B    ??
5C    tap superscope
5D    full shot superscope
5E    Hammertime
5F    Waprstar
... 
62    throw item
63    Luigi taunt (lol)
64    turn around
65    ??
66    walking
67    dash start
68    dash loop
69    jump
6A    double jump
6B    bounce of wall
6C    downed (up facing)
6D    downed (down facing)
70    grab ledge
71    taunt


Also, “flags 2” appears to be a version of the above Move ID that isn’t 0-based. From what I can tell, it just adds 1 to byte 0x3 of “flags 1”

I also know just a couple of things about the flags:

byte 0x0 of “flags 1” --
Just padding? I’ve never seen something write to this byte.


byte 0x1 of “flags 1” --
I’ve loosely interpreted some of these bits:
Code:
80    move anchors something to bone?
40    something to do with items/downed state
20    ?
10    special moves/tumble
08    followup is available (for some moves)
04    ? (attacks?)
02    in tumble/flinching from grab jab
01    ?

byte 0x2 of “flags 1”--
Again, loosely interpreted:
Code:
80    ?
40    ?
20    ?
10    move reflects projectile
08    move involves smash input
04    move uses an aerial hitbox???
02    move uses a hitbox???
01    move uses standard projectile

---

I can also confirm what Itaru Itaru said about Event 94 -- the effect can be seen normally in the “blink” animation for various teleport-like moves. It also seems to have 2 sister events, each of which use the exact same syntax:

Event 8C -- toggles held item visibility
Event 90 -- toggles visibility of other articles (tested with the Bunny Hood)

Here are my notes on a few other unknown subaction events:

30 00 00 XX
--”Adjust Hitbox Damage”
  • XX -- Damage to replace hitbox value
  • note that there is a 3-bit hitbox ID in the first 2 bytes that is identical to 2C events:
    • xxxx xxii ixxx xxxx

64 00 00 0X
--”Ground Anchor?” (Don't know much about this one; used in many recovery moves)
  • 0 - seems to move the player to nearest point on last used platform/surface (gfycat)
  • 1 - ?
  • 2 - ?

A4 XX Y0 00
--”Animate Bodypart”
  • XX - body part selector (ex: 18 = Fox’s left eye, 20 = Fox’s right eye, 00 = Fox’s left hand)
  • Y - Animation state (ex: 0 = closed eye, 1 = half-closed eye, 2 = open eye, 3 = tightly closed eye)

C4 00 00 0X
--”Sword Trail Visibility”
  • Input written to player.0x2160
    • byte appears to use "0" "1" and "2" to initialize a status "3" of being on; and "FF" when off.
  • X = 0-based number of sword trails? May be something else, but increases number of trails.
    • special syntax C5 FF FF FF equates to “-1” byte; used to terminate sword trail
I've gotten some very janky things from the sword trails with different values, some seeming like they are trying to predict the previous position of the sword from its current position(might just be in my mind though), also high values causes some strange effects and crashing.
 
Last edited:
Top Bottom