Thanks for the info (wasn't exactly what I needed, I've done enough Brawl modding to get the gist of this stuff), it turns out Crazy Hand was just reading my Roy improperly? I loaded a new Roy DAT instead and everything looks fine. Probably should have tried that before I asked anything.
Since I'm a Roy player, I've always been frustrated with some of his inane hitboxes (specifically dair), and mostly I'm looking to fix some of those. In general, I want to shift him to a more purely horizontal playstyle in contrast to Marth's vertical one, and I'm looking into some ideas for a horizontal pseudo-chaingrab, or tech-chase chaingrab at the least, using f-throw or b-throw. I've also messed with his movement a little, making him a little faster but also cutting his aerial capabilities down further. I'm focusing on a ground game that emphasizes tilts and such instead of aerial combos.
But in any case, I want to get around to touching up a couple of characters. My first change since I didn't guess the Roy issue was changing C. Falcon's side-B to a multihitting electric move instead. I really like how it feels to use.
Do I need to get the code manager to install these? I just haven't looked into it.
----------------------------------
A few more questions:
1) The "Move Logic" option in Crazy Hand just freezes the program for me. Is this just my problem? It seems like it works for everyone else.
2) I've run into an issue where, every time I mess with C. Falcon's moves for more than a tiny amount, the game will start throwing errors when he tries to grab, right before the transition to a successful grab. Why is this happening? I've been careful not to change the total byte length of any of the modified moves, since I assume that isn't OK when it comes to Melee.
3) How would I go about allowing jump cancelling for a move? Is that some mysterious thing under "Move Logic" that I just can't access since it crashes for me? I want to do this for a number of actions, so it would be great if someone could explain that.
4) Last one, I promise: Do I have to keep each move the same length, or is there a way to extend it? I thought I saw something somewhere about pointing it to a different location via hex editing. I'd love to do that, but I'd need a more clear and detailed explanation than I ran across, because I've only done hex editing for one other game and I don't pick it up super fast.
Thanks for any help you can offer!
~Tya
EDIT:
Ignore the italicized questions. They seem to be issues incurred by using v1.00. Derp.
Sounds awesome!
It seems like you got this already, but just an FYI; pointers and other static RAM addresses are generally noted within the context of Melee 1.02.
Melee Code Manager isn’t required for codes (you can just use the gecko codes they’re usually shared as if you prefer,) but the difference in space it allows for compared to the default gecko code handler makes the advantage enormous in addition to convenient--so I’d recommend it if you’re working with a vanilla copy of Melee.
---
To do a jump cancel, I believe you can throw
800caed0 in the
IASA function slot of a move on the move logic table to restrict input interrupts to only grounded jumps for the duration of the action state. You can also use the custom character data event to assign the same pointer to internal player data offset 0x219C and manually time an interrupt window.
And yes, you can extend the length of subaction event data length. If you subtract the header length of a Plxx.dat file (0x20 bytes) from an offset, you can use the resulting number to reference a location in the file via event 14 (
goto) and later use event 18 (
return) to return from where you came from. 1C (
subroutine) acts like goto, but doesn't write a return that you can use. Crazy Hand conveniently lists these effective offsets with each event.
You'll have to test if it's safe or not, but there seems to be a
bit of free space for Roy starting at effective offset
0x7970. So, if you write subaction events to that place in the .dat, they can be read by any subaction that includes an event that looks like this:
14000000 0000
7970
If you edit an existing 14 or 1C event to do this for you, then it should work without issue. If writing a new 14 or 1C event though, I think you need to modify the relocation table so that the location where you're referencing a new offset at is converted into a pointer once loaded into the game.
You can alternatively use the custom character data subaction event to do the same thing with static RAM addresses instead of .dat offsets. This is what I do, personally. If you do this, you can make decisions to gut things like the debug mode menu and/or tournament mode menu to net more bytes than you’ll ever need, and write to them with multiline static overwrites in MCM.
I believe the tournament mode menu region starts at
801910e0. (0x18DCC0, as a file offset)
So, similarly to how you'd do it with a goto event, write your new event data starting at that point in the DOL with whatever means you prefer. When it's written to the DOL, use the custom F8 event to access the internal player data offset that parses subaction events, and write your custom event location to it with this syntax:
F8FF000C 020003EC
801910E0