• 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

darkside1222

Smash Cadet
Joined
Apr 22, 2010
Messages
31
I tried increasing the allocated size in every combination of 512,1024, and 1600(Highest value I could get where the program still ran) and got an OutOfMemoryError every time.

The exact error I get is:

java.io.IOException: Map failed
at sun.nio.ch.FileChannelImpl.map(Unknown Source)
at isotool.filesystem.ISOFileSystem.setFileData(ISOFileSystem.java:48)
at isotool.filesystem.ISOFileSystem.<init>(ISOFileSystem.java:32)
at isotool.filesystem.ISOFile.createRootFolders(ISOFile.java:86)
at isotool.filesystem.ISOFile.readSectors(ISOFile.java:77)
at isotool.filesystem.ISOFile.<init>(ISOFile.java:35)
at com.FileIO.loadISOFile(FileIO.java:82)
at com.MeleeEdit.main(MeleeEdit.java:430)
Caused by: java.lang.OutOfMemoryError: Map failed
at sun.nio.ch.FileChannelImpl.map0(Native Method)
... 8 more


Since we're caching each fighter file anyways, I think it might be a good idea to extract copies of fighter data to a folder when loading the ISO instead of caching them in the program itself. You could then use CrazyHand to edit the extracted fighter files, and then write changes from those files to the ISO.

I wouldn't suggest such a roundabout method of editing files except if I'm getting these errors I assume some other users will as well.

Thoughts or opinions on this?
Please try the newer version that I posted above if u haven't (https://www.dropbox.com/s/tzqptgc3ie93djj/Crazy Hand Tater.zip?dl=0). I'm currently looking into other ways of optimizing and your option that u suggested will be considered but not until I try other things.
 
Last edited:

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
I tried increasing the allocated size in every combination of 512,1024, and 1600(Highest value I could get where the program still ran) and got an OutOfMemoryError every time.

The exact error I get is:

java.io.IOException: Map failed
at sun.nio.ch.FileChannelImpl.map(Unknown Source)
at isotool.filesystem.ISOFileSystem.setFileData(ISOFileSystem.java:48)
at isotool.filesystem.ISOFileSystem.<init>(ISOFileSystem.java:32)
at isotool.filesystem.ISOFile.createRootFolders(ISOFile.java:86)
at isotool.filesystem.ISOFile.readSectors(ISOFile.java:77)
at isotool.filesystem.ISOFile.<init>(ISOFile.java:35)
at com.FileIO.loadISOFile(FileIO.java:82)
at com.MeleeEdit.main(MeleeEdit.java:430)
Caused by: java.lang.OutOfMemoryError: Map failed
at sun.nio.ch.FileChannelImpl.map0(Native Method)
... 8 more


Since we're caching each fighter file anyways, I think it might be a good idea to extract copies of fighter data to a folder when loading the ISO instead of caching them in the program itself. You could then use CrazyHand to edit the extracted fighter files, and then write changes from those files to the ISO.

I wouldn't suggest such a roundabout method of editing files except if I'm getting these errors I assume some other users will as well.

Thoughts or opinions on this?
I had a similar thought about saving things locally for editing. My only concern with that would be a loss in speed. Hopefully it wouldn't be anything too substantial.

I'd also like to get some other people to test the program on their machines to see how common this issue is, or if it's possibly a problem on your computer alone.
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
I had a similar thought about saving things locally for editing. My only concern with that would be a loss in speed. Hopefully it wouldn't be anything too substantial.

I'd also like to get some other people to test the program on their machines to see how common this issue is, or if it's possibly a problem on your computer alone.
I had a couple of friends test it out as well(The latest "tater" build haha). One was able to run Crazy Hand fine, and another had the same issue as I'm having. Me and my friend having the same issue as me updated Java far more recently than the friend that is able to run Crazy Hand. It might just be a coincidence, but I think that's noteworthy
 

Tcll

Smash Lord
Joined
Jul 10, 2010
Messages
1,780
Location
The Gates of Darkness
NNID
Tcll5850
why you using java anyways, why not use python and do what I'm doing with UMC. :/
(compact everything needed (including an interpreter) and build an exe to launch your python.exe with your loader.py)
^I used Game Maker 8 to build my exe, and then changed the icon... heh
feel free to look around: https://copy.com/3Zg7S8HwFyVaXstm

if you want performance, compile a C extension with python.
I garuntee people won't be getting out of memory issues.

java sucks because you have to clear the memory manually, and has a dirty syntax.
python has the cleanest and simplest syntax I know of, and has a built-in garbage collector.

but if you want pointer support and such, consider writing a C extension.
(I don't believe you need to worry about header files when compiling with python)


in any case, congrats on what you have done so far with java. :)
I won't ever touch that disgusting language... lol

but at least it isn't smelly like any .NET language :p
 
Last edited:

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
why you using java anyways, why not use python and do what I'm doing with UMC. :/
(compact everything needed (including an interpreter) and build an exe to launch your python.exe with your loader.py)
^I used Game Maker 8 to build my exe, and then changed the icon... heh
feel free to look around: https://copy.com/3Zg7S8HwFyVaXstm

if you want performance, compile a C extension with python.
I garuntee people won't be getting out of memory issues.

java sucks because you have to clear the memory manually, and has a dirty syntax.
python has the cleanest and simplest syntax I know of, and has a built-in garbage collector.

but if you want pointer support and such, consider writing a C extension.
(I don't believe you need to worry about header files when compiling with python)


in any case, congrats on what you have done so far with java. :)
I won't ever touch that disgusting language... lol

but at least it isn't smelly like any .NET language :p

The reason I started this project in Java was simply because It's my most familiar language by far. I've barely worked with Python and to be honest I really don't have the time to learn a new language for this at the moment. It would be nice if everything was written in the same language so that we could collaborate, but I think we'll just have to get by with separate programs.

By the way, I think you might be getting Java confused with another language because it has a garbage collector too. You might be thinking of C++.
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
The reason I started this project in Java was simply because It's my most familiar language by far. I've barely worked with Python and to be honest I really don't have the time to learn a new language for this at the moment. It would be nice if everything was written in the same language so that we could collaborate, but I think we'll just have to get by with separate programs.

By the way, I think you might be getting Java confused with another language because it has a garbage collector too. You might be thinking of C++.

I've fiddled with Python before(Technically it was the first programming language I ever touched, but I don't really count it because all I did was make a small text game haha) The syntax isn't my favorite thing in the world but since there's most likely going to be an issue with loading ISO's in java for some users, should we consider using Python just to dump ISO files/write edited files to the ISO?

My line of thought for how the program would work is:

Launch a .exe file which would start the ISO loading script in Python
A file explorer window pops up, and the user selects the ISO they want to edit
Python script dumps any files we specify(We could write them in a configuration file, allowing more freedom from advanced users as well) from the ISO to a folder specific for that ISO (So that edits between different ISO files aren't overwritten/mixed together)
Once the Python script is finished dumping files, it would run CrazyHand.jar which would be the editing software itself.
Saved changes would be saved to the files dumped by the Python script
When CrazyHand saves changes, it runs a Python script to write the changed files to the ISO.

I can write the code myself since I'm hardly ever busy :p
 

oksas

oak-sauce
Joined
Apr 12, 2011
Messages
458
been messing around with the version that darkside posted yesterday, everything is working great so far :D fulfilled my lifelong dream of giving falcon a shine and a good upsmash
 

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
I've fiddled with Python before(Technically it was the first programming language I ever touched, but I don't really count it because all I did was make a small text game haha) The syntax isn't my favorite thing in the world but since there's most likely going to be an issue with loading ISO's in java for some users, should we consider using Python just to dump ISO files/write edited files to the ISO?

My line of thought for how the program would work is:

Launch a .exe file which would start the ISO loading script in Python
A file explorer window pops up, and the user selects the ISO they want to edit
Python script dumps any files we specify(We could write them in a configuration file, allowing more freedom from advanced users as well) from the ISO to a folder specific for that ISO (So that edits between different ISO files aren't overwritten/mixed together)
Once the Python script is finished dumping files, it would run CrazyHand.jar which would be the editing software itself.
Saved changes would be saved to the files dumped by the Python script
When CrazyHand saves changes, it runs a Python script to write the changed files to the ISO.

I can write the code myself since I'm hardly ever busy :p
If you'd like to give it a shot, then go for it. I honestly know next to nothing about python so I have no idea if this would really be more efficient or not.
 

Tcll

Smash Lord
Joined
Jul 10, 2010
Messages
1,780
Location
The Gates of Darkness
NNID
Tcll5850
I've fiddled with Python before(Technically it was the first programming language I ever touched, but I don't really count it because all I did was make a small text game haha) The syntax isn't my favorite thing in the world but since there's most likely going to be an issue with loading ISO's in java for some users, should we consider using Python just to dump ISO files/write edited files to the ISO?
I absolutely LOVE the syntax (it enforces clean-styled code)

but yea, don't underestemate python considering what I've been able to do so far:

^I'm even using the CPU-sided OpenGL FFP for this, meaning my code is 100% python. ;)
though I won't say it's all good, because, being interpreted, the language itself is slow, however, it's paired with C via python .pyd modules,
so you can get your speed from them :)

just make sure you start with x86 and not x64
or even better, auto-detect the CPU and OS to determine x64 ;)

BAT file
CPU test (windows only):
if "%PROCESSOR_ARCHITECTURE%"=="x86"
OS test (windows only):
IF EXIST "%PROGRAMFILES(X86)%"
 
Last edited:

darkside1222

Smash Cadet
Joined
Apr 22, 2010
Messages
31
While using python would be nice, it won't be necessary since this build should fix the issue. I tested the old build that has the memory issue on my old laptop and it had the same problem as @ Tater Tater and other people but this test build worked on the laptop with no problems with memory.


Old Build:



New Build: Now works


Please try out this test build:

https://www.dropbox.com/s/y0gemsok5a7k25j/Crazy Hand TEST.zip?dl=0
 
Last edited:

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
Alright everybody, version 1.10 of Crazy Hand is now official available:

Crazy Hand v1.10






Most of the features in this new release have already been shown in various test builds shared by darkside but here's the recap of everything that has been added since v1.00.

You can now:
--Edit every subaction, not just the ones common to all characters. This means you can edit subactions for special moves and the unique subactions for crazy/master hand.
--Swap animations. You can swap the animation of any subaction with the animation of another subaction.
--Open iso's directly. You no longer need to go through GCRebuilder to extract and rebuild the iso, the changes are now done directly to the iso. (thanks to darkside1222)
--Open dolphin while Crazy Hand is still running. Previously Dolphin would give you an error if you attempted to load an iso that was already open in Crazy Hand. Now they can be open side by side as long as you don't edit anything whilst the iso is being run in Dolphin.
--Edit throws (thanks to tater)
--Edit body states (thanks to tater)
--Toggle on/off reading raw hex values for events. I.E. instead of diaplying a hitbox that shows damage, knockback, angle, etc... it will just display the hex values instead. This is handy if you are changing what kind of events are in a subaction. The toggle is in the "other" menu.


That's all that I can think of at the moment. As always, if anybody has any question/comments/bug reports I'll be more than happy to help.

Enjoy!
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
Great work on the latest release c:

Sorry I couldn't contribute much-- once I started having those memory issues I couldn't really help, but now that that's fixed I can start working again.

One fun thing I noticed with animation swapping: If you put an animation that has momentum/movement associated with it (Ganon's F-smash, for example) onto an aerial move, then land with it during the frames that there would normally be movement(The end of Ganon's F-smash when he steps forward) it will add that momentum to the character.

Spoiler because gifs take time to load
Landing slide



Landing after the animation has fully finished(No slide)



Holding the opposite direction while landing

 

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
Great work on the latest release c:

Sorry I couldn't contribute much-- once I started having those memory issues I couldn't really help, but now that that's fixed I can start working again.

One fun thing I noticed with animation swapping: If you put an animation that has momentum/movement associated with it (Ganon's F-smash, for example) onto an aerial move, then land with it during the frames that there would normally be movement(The end of Ganon's F-smash when he steps forward) it will add that momentum to the character.

Spoiler because gifs take time to load
Landing slide



Landing after the animation has fully finished(No slide)



Holding the opposite direction while landing


Glad to hear that you plan to continue working on the program. Do you know what you plan to work on next?
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
Glad to hear that you plan to continue working on the program. Do you know what you plan to work on next?
I'm good with pretty much anything, but I've been thinking about GUI improvements/ease of use features and would like to get you and darkside's thoughts on them.

-Script box changes

Either add a small button in the corner of script boxes(Top right seems like the least obtrusive option) or have a drop-down menu appear when a script box is right-clicked(Less obtrusive visually, but might not be as user-friendly) for the features below:

More interactive script box options. For instance, on hitbox scripts the user selects "View launch trajectory". A small window would be created with a graphic display of what the launch trajectory would look like(Depending on the knowledge we have of the game's math, it could be just the initial launch angle or the full launch angle). Similar options could be applied to knockback/knockback growth, size, etc.

In-depth script editing

Users would have the ability to change placements of each script within a subroutine via dragging the box with their mouse.

Users would be able to "swap" a script they don't need with a script of equal or lesser size.

Users are allowed to add/delete scripts as they please(See below for the solution to size errors)

If a subroutine does not have the proper amount of data(Either more or less than it originally had) The save button will be grayed-out and there will be a notice on the screen stating that they need to add or remove a certain amount of data before being able to save.

If there's not enough data in a subroutine but the user doesn't wish to add any more scripts, they can use the "Fill space with empty timers" button to put however many timer scripts are needed at the end of the subroutine to retain proper file size. These timer scripts would be either 0 or 1 frame, 1 frame timers would be somewhat problematic for in-game mechanics, but I'm not sure if 0 frame timers are without issues either. I'll test that and see which works best.


(Speculative, as I'm not sure this would work in 100% of cases)
Go to subroutine
When clicking on a subroutine script box, the user would be able to go to the pointer specified by the subroutine box. I'd imagine subroutines stay within a character's .dat file but I'm not positive.


There's more but it's not as large as above and my lunch is here, so I'll edit this post afterwards with the rest.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Great work on the latest release c:

Sorry I couldn't contribute much-- once I started having those memory issues I couldn't really help, but now that that's fixed I can start working again.

One fun thing I noticed with animation swapping: If you put an animation that has momentum/movement associated with it (Ganon's F-smash, for example) onto an aerial move, then land with it during the frames that there would normally be movement(The end of Ganon's F-smash when he steps forward) it will add that momentum to the character.

Spoiler because gifs take time to load
Landing slide



Landing after the animation has fully finished(No slide)



Holding the opposite direction while landing

Is that a new nair? lol.
If there's not enough data in a subroutine but the user doesn't wish to add any more scripts, they can use the "Fill space with empty timers" button to put however many timer scripts are needed at the end of the subroutine to retain proper file size. These timer scripts would be either 0 or 1 frame, 1 frame timers would be somewhat problematic for in-game mechanics, but I'm not sure if 0 frame timers are without issues either. I'll test that and see which works best.
You can just leave it blank. You don't need to fill it with stuff. You could probably then use that space with any other subaction by making a goto (never personally tried, but probably).
 

oksas

oak-sauce
Joined
Apr 12, 2011
Messages
458
so Tater, if what you outline here got implemented, this would mean things like being able to add additional hitboxes, or sound effects, or graphical effects in the right circumstances? by replacing stuff, that is
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
so Tater, if what you outline here got implemented, this would mean things like being able to add additional hitboxes, or sound effects, or graphical effects in the right circumstances? by replacing stuff, that is
Yep! You'll be able to add any script you want to a subaction, but you'll have to sacrifice something else of equal or lesser size. That's the best I can promise for now.

Is that a new nair? lol.

You can just leave it blank. You don't need to fill it with stuff. You could probably then use that space with any other subaction by making a goto (never personally tried, but probably).
Hmm, I'll look into that... It would definitely be better than cluttering the window up with 1-frame timers :p

And it's *kind of* a new nair... I put ganon's down-B animation on his nair. No animation/model editing as of yet... I still want to make that a possibility but it's complicated to say the least, so it's on the back burner for now.
 

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
@ Tater Tater , what you described with changing around scripts is very close to what I planned to do as well. If you'd like to work on that I'll get started on something else. Here's what I had envisioned:

In the top right corner of every event are would be buttons to delete it, or shift it up or down. Then additionally there would be a drop down menu that could select what kind of event it is and update it if you change it. I think you might run into a lot of problems with adding drag and drop features to the scripts, which is why I came to the decision of just having a shift up and down button. I looked into it briefly and drag/drop looked difficult, and we'd likely have to redo quite a bit of code.

How does that sound to you? Would you want to try and implement something like this?


Also, what I've been doing to fill gaps in scripts when I end up with space in the middle is just throw in a self-damage event that is set to 0: "CC 00 00 00". That effectively does nothing because it just does 0 damage to the character. But Achilles is right, if you throw a "00 00 00 00" in the middle of a script the game will stop reading it at that point so you don't need to fill the rest up with stuff. You only need a filler if you want it to get rid of a previously existing event without replacing it with something new.


In the mean time I'm going to finally try to implement the frame speed modifiers. I have a 4-day weekend coming up for St. Pat's so I might be able to get some work done then.
 

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
I've been testing the program, it looks very good. However, I've found some problems using the version 1.10:

• When I randomize all characters, it doesn't save them. There should be a "Save all" button in the "other" submenu, or it saves automatically when randomizing. Right now, the only way to save all the randomized characters is to go to each of them, and use the save button at the bottom of the software.

• Let's say I check the up-smash of Fox, I go randomize again. When I return to the" subactions (Attack only)", it defaults back to the first entry of the menu (which is jab 1), but the visual is still up-smash. I need to re-select up-smash, even if the bar is already on it, to load the right info. It should check and already load the right thing.

• Have an option to load an ISO in the "other" submenu. Someone might want to load another ISO without closing and opening again Crazy Hand.

• Add the special B attacks to the "Subactions (Attacks only)" submenu. I tried to find the Rest attack for instance, I got big trouble, so combining them with normal attacks, I think it would be fine. Or you can do another category, like "Subactions (Specials only)"

I'll write more when I find other troubles. If you want more feedback, you can ask me questions
 

NintenNess

Smash Journeyman
Joined
Aug 9, 2014
Messages
481
Location
Washington State
I've been testing the program, it looks very good. However, I've found some problems using the version 1.10:

• When I randomize all characters, it doesn't save them. There should be a "Save all" button in the "other" submenu, or it saves automatically when randomizing. Right now, the only way to save all the randomized characters is to go to each of them, and use the save button at the bottom of the software.
I have the same problem about the randomize options. It worked on 1.0..... It's odd why it isn't working properly on 1.1 version. Like flieskiller said, It would be able to save automatically when you're randomizing.
 
Last edited:

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
@ flieskiller flieskiller and @ NintenNess NintenNess ,

thanks for the input. I hadn't noticed the issue with randomization not saving properly. I can't look at it now but I'll check it out as soon as I can. Should be a super easy fix.
Regarding the subactions not updating right, that's a glitch that I did notice and plan to fix soon.
Regarding the special move subactions, I know tater was working on that a while back but I don't know how much progress he made. The problem with them is that not all characters have special move stuff stored in the same places. That may or may not ever become a reality, but finding special moves in the "all" category isn't too bad. All of the special moves are almost always at the very end of the list and all begin with "special". "SpecialLw" would be puff's down B.
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
@ flieskiller flieskiller and @ NintenNess NintenNess ,

thanks for the input. I hadn't noticed the issue with randomization not saving properly. I can't look at it now but I'll check it out as soon as I can. Should be a super easy fix.
Regarding the subactions not updating right, that's a glitch that I did notice and plan to fix soon.
Regarding the special move subactions, I know tater was working on that a while back but I don't know how much progress he made. The problem with them is that not all characters have special move stuff stored in the same places. That may or may not ever become a reality, but finding special moves in the "all" category isn't too bad. All of the special moves are almost always at the very end of the list and all begin with "special". "SpecialLw" would be puff's down B.

I'm working on special moves as we speak--Mapping them took the most time because I had to do it manually(Or at least, I didn't think of a better way to do it until I was almost finished anyways :p) The next major release will have special moves in the attacks section for all characters... Except possibly Kirby. He has a LOT of special moves and I remember them giving me trouble when I tried loading them into CrazyHand.

EDIT:Done. The only thing that needs to be done to special moves is polishing their names which isn't a necessity for test builds.
 
Last edited:

CeLL

Smash Lord
Joined
Jan 26, 2014
Messages
1,026
Location
Washington
When I try to open an iso the program closes.

Nevermind I'm an idiot.
 
Last edited:

MagicScrumpy

Smash Journeyman
Joined
Feb 25, 2015
Messages
251
Location
Ann Arbor, Michigan
I'm beginning to work on something that easily copies certain parts of hitbox data (the desired parts being selectable) from one move to another in a streamlined way (this would be useful in, say, giving Fox's down air hitboxes just the knockback values of Falco's). When it's done, I can post my work on it if you guys want it and/or would find it a good addition to the program.

I love working on it. This is amazing practice for me because I tend to write very messy code.
 

flieskiller

Smash Journeyman
Joined
Jan 3, 2013
Messages
426
I tried randoming 1.10 again, and I noticed: starting at Sheik in the character list, it's not random, as if the randomizer stopped working there.

Sheik, Yoshi, Young Link and Zelda are all the vanilla version when I randomize. Giga Bowser and the wireframes too, but they're less important.
 

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
@ MagicScrumpy MagicScrumpy ,
That sounds like a good idea. If you get something stable working feel free to post it on GitHub.

@ flieskiller flieskiller ,
That's odd, I'll look into it. I don't know when I'll get a chance to though, might not be until next weekend. I'm very busy with school right now.
 

oksas

oak-sauce
Joined
Apr 12, 2011
Messages
458
program has been working great! one bug though. it seems whenever you select any of Falco or Fox's non-medium-angled fsmashes in the attack list, the program weirds out and stops displaying info until you close it. it happened to me multiple times so I imagine it's pretty replicable
 

Ampers

Smash Journeyman
Joined
Feb 2, 2015
Messages
237
Location
St. Louis, MO
program has been working great! one bug though. it seems whenever you select any of Falco or Fox's non-medium-angled fsmashes in the attack list, the program weirds out and stops displaying info until you close it. it happened to me multiple times so I imagine it's pretty replicable
Hmm, that's really weird. I'll see if I can find a fix for it. I'll need to check and see if that worked in previous versions because if it did, something new must be breaking it. If that's the case, @ D darkside1222 might know what the issue is.
 

darkside1222

Smash Cadet
Joined
Apr 22, 2010
Messages
31
program has been working great! one bug though. it seems whenever you select any of Falco or Fox's non-medium-angled fsmashes in the attack list, the program weirds out and stops displaying info until you close it. it happened to me multiple times so I imagine it's pretty replicable
That's very odd. It only happens on the released v1.10 version but it has been fixed in the unreleased version on github.
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
That's... very bizarre. Oh well, problem solved I suppose haha.
I don't think we're out of the woods yet...

The reason it was happening is because a chunk of data was read that the program interpreted as a BodyStateScript (0x68) but it had a body state value of 108, which threw an OutOfBoundsException from BodyStateScript. It's similar to when BodyStateScript caused issues with some characters attributes being loaded during development a couple versions back. Either 0x68 is used for more than just body states(And has varying script lengths for 0x68) or it's an uncommon error with how character data files are read.

The reason it works in the latest build on GitHub is because I made BodyStateScript check if the body state value(108, in this case) was higher than 2, and if so to set it to 2 to prevent the program from crashing. It's a temporary solution and could cause issues if the user saves data that was 108 as 2 due to BodyStateScript.

As a matter of fact, the values in fox/falco's mid-high forward-smash may actually be attributes or other chunks of data we haven't messed around with due to their placement in the file:

Saving the script as-is(replacing 108 with 2) and playing the game as fox works fine, until you die. At which point the game freezes. So this chunk of subactions(any Fsmash that is not (middle) has the same entries at the same location) is most likely what is called when fox/falco respawns, and should not be edited.

We should either remove BodyStateScript(again :/ ) or remove/re-label angled F-smash menu options for characters that do not have angled F-smashes, since those entries appear to be used for other aspects of the character(Donkey Kong has some data that looks like part of a move stored in it, for instance upon more inspection than a glance looks like similar data to fox/falco's angled Fsmash data.)
 
Last edited:

oksas

oak-sauce
Joined
Apr 12, 2011
Messages
458
huge thanks to you 3 again for this awesome program. been using this a lot lately. the new functionality to move actions up/down looks awesome and could be really useful in a lot of places, I think.

have you guys considered adding more functionality for sounds and fx actions? the thread here by Itaru gives the basics of all that. having the sound effect/graphic effect boxes look more like the hitbox modules would be great. also, there's the combined sound+graphic command Itaru notes in that thread (DC00XXXX 000YYYYY 00007F40) that could also be useful. in my mod right now, for example, at the beginning of falcon's down special (which has been turned into a shine), there's a sound effect, some timers, a graphic effect, and another sound effect before the hitboxes. I only have need for one sound effect but having two graphic effects could be nice, so I turned that first sound effect into one of the combined actions (which is the same length as the sound only action) so I can have two graphic effects. doing so confuses the program though and when the initial 44 in the first sound effect is changed into the combined action's DC, saving results in the program only recognizing the first 4 pairs of numbers for SpecialLw. changing the DC back to 44 reverts it back so I can continue editing the rest of the move as usual, but I just have to make sure I switch it back before saving and playing again, if that makes sense
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
huge thanks to you 3 again for this awesome program. been using this a lot lately. the new functionality to move actions up/down looks awesome and could be really useful in a lot of places, I think.

have you guys considered adding more functionality for sounds and fx actions? the thread here by Itaru gives the basics of all that. having the sound effect/graphic effect boxes look more like the hitbox modules would be great. also, there's the combined sound+graphic command Itaru notes in that thread (DC00XXXX 000YYYYY 00007F40) that could also be useful. in my mod right now, for example, at the beginning of falcon's down special (which has been turned into a shine), there's a sound effect, some timers, a graphic effect, and another sound effect before the hitboxes. I only have need for one sound effect but having two graphic effects could be nice, so I turned that first sound effect into one of the combined actions (which is the same length as the sound only action) so I can have two graphic effects. doing so confuses the program though and when the initial 44 in the first sound effect is changed into the combined action's DC, saving results in the program only recognizing the first 4 pairs of numbers for SpecialLw. changing the DC back to 44 reverts it back so I can continue editing the rest of the move as usual, but I just have to make sure I switch it back before saving and playing again, if that makes sense
I've been meaning to mention this. It seems as though any "Sound Effect" event can be made into a "Sound Effect + Graphic Effect" because they are both the same length. That's how I tested all those graphic effects. I changed Falcon's knee sound in the RAM to a sound + graphic and then just incremented the graphic ID one by one while having the game running.
 

oksas

oak-sauce
Joined
Apr 12, 2011
Messages
458
that sounds so much easier... I'm editing three different graphics from falcon's moves at a time with this program, putting the sd in the wii, booting, testing, taking notes, then doing it all over again. apparently I need to get myself dolphin. I assume it's a pretty fast process, what you're describing? would that be a difficult process to do for a simpleton like myself? doing it via dolphin would also make it much easier to take pictures, and imo having pictures of these would be immensely helpful because descriptions can only go so far.
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
that sounds so much easier... I'm editing three different graphics from falcon's moves at a time with this program, putting the sd in the wii, booting, testing, recording, then doing it all over again. apparently I need to get myself dolphin. I assume it's a pretty fast process, what you're describing? would that be a difficult process to do for a simpleton like myself?
It's as fast as you want to make it. You have the game running and can view the RAM at the same time. The you basically just dump the RAM, search it for C. Falc's move data (just copy from his DAT and search), and then you have the location of where the data is stored in-game. It is read every time Falcon performs a move, so you can edit it real time and changes will take effect the next time he uses the move. This is the best way to edit hitbox data for testing as well.

You have to watch Dan Salvato's Wii Hacking Tutorial to get a feel for how Debug Dolphin works. It's linked in the Melee Hacks and You thread.
 
Last edited:

oksas

oak-sauce
Joined
Apr 12, 2011
Messages
458
excellent. I'll definitely check that out; sounds about 10x faster than the method I was using. thanks achilles :D
 

Tater

Smash Journeyman
Joined
Apr 10, 2014
Messages
201
Location
Socal
NNID
Taternater
3DS FC
2406-5307-2936
huge thanks to you 3 again for this awesome program. been using this a lot lately. the new functionality to move actions up/down looks awesome and could be really useful in a lot of places, I think.

have you guys considered adding more functionality for sounds and fx actions? the thread here by Itaru gives the basics of all that. having the sound effect/graphic effect boxes look more like the hitbox modules would be great. also, there's the combined sound+graphic command Itaru notes in that thread (DC00XXXX 000YYYYY 00007F40) that could also be useful. in my mod right now, for example, at the beginning of falcon's down special (which has been turned into a shine), there's a sound effect, some timers, a graphic effect, and another sound effect before the hitboxes. I only have need for one sound effect but having two graphic effects could be nice, so I turned that first sound effect into one of the combined actions (which is the same length as the sound only action) so I can have two graphic effects. doing so confuses the program though and when the initial 44 in the first sound effect is changed into the combined action's DC, saving results in the program only recognizing the first 4 pairs of numbers for SpecialLw. changing the DC back to 44 reverts it back so I can continue editing the rest of the move as usual, but I just have to make sure I switch it back before saving and playing again, if that makes sense

Glad to hear you're enjoying the program! c:

I've actually wanted to dive into SFX/GFX scripts for a while now, but I've been trying to polish things I threw in haphazardly before working on anything new. Knowing that a combined GFX/SFX script is the same size and a GFX/SFX script is helpful. I can definitely make a quickie script that has two seperate text fields for GFX and SFX. I would like to add options to them so it's more like hitbox scripts but I'm unfamiliar with the locations of GFX/SFX. I'll do some looking into that later but if you or @ Achilles1515 Achilles1515 know any good starting points it'd be appreciated.

I think I can squeeze in the (simple) combined effects script for the next release though :)
 
Top Bottom