ROM Hack A Guide to Sm4shCommand

  • Thread starter Thread starter Yudowat
  • Start date Start date
  • Views Views 14,269
  • Replies Replies 16
  • Likes Likes 2

Yudowat

That one guy that shows up occasionally
Member
Joined
Jun 12, 2015
Messages
552
Reaction score
177
Trophies
0
XP
361
Country
Australia
In this guide, we will make a moveset mod together. You can then use the knowledge gained to make your own!

Sm4shCommand (Soon to be replaced by FITX, I will update the Guide when it becomes the standard.) by @Sammi Husky is an application that lets you edit fighter ACMD files, and that's what we're using today! Download the latest nightly version

Setup
  1. Open Sm4shCommand, then select File>Open>Fighter (Or press CTRL+ALT+O)
  2. Open "animcmd\fighter\purin" in your dump and click Select Folder (Backup the files in this folder before starting, or alternatively, Select the folder with the copied files, leaving the original dump untouched.)
  3. In the workspace panel on the right, expand "ACMD". You should now be able to see every script for Jigglypuff, as she was the character we opened in step 2.
  4. Click "Tools>Parse Animations" and open "motion\fighter" in your dump, then click Select Folder. The application will take a moment to parse the animations, and it may seem to be unresponsive, but just wait a moment and some scripts (but not all) will be labelled differently, from 0xXXXXXXXX to something like AttackAirF or ThrowHi.
Editing (Hitbox data)
We'll be editing a few of Jigglypuff's moves to expand our knowledge of ACMD. I recommend reading each of these spoilers as some slightly different information is covered in each.
Neutral Air
We're going to change neutral air to meteor smash the opponent, simply because it's fun.
  1. Find and open the script for Neutral Air, it will be labelled as AttackAirN. (Attack Air Neutral) Then switch to the tab labelled game instead of effect.
  2. Now we're going to explain some terms in ACMD:
    Asynchronous_Timer - This makes the game wait until the specified frame to perform an action.
    Synchronous_Timer - This makes the game wait the specified number of frames since the last timer (Synchronous or Asynchronous) to perform an action​
  3. Using that information we can work this out:
    Asynchronous - ON frame 6, Hitbox comes out (there are actually 2 in this example)
    Synchronous - AFTER 2 frames (frame 8), a hitbox is replaced, and one is removed.
    Hitbox - Pretty Self-Explanitory​
  4. We can check with KuroganeHammer, and the site says we're correct!
  5. So let's look into the parts of the first 2 hitboxes.
    Code:
    Hitbox(ID=0x0, Part=0x0, Bone=0xA, Damage=9, Angle=0x60, KBG=0x78, FKB=0x0, BKB=0x28, Size=4, Z=0, Y=0, X=0, Effect=0x0, Trip=0, Hitlag=1, SDI=1, Clang=0x1, Unknown=0x1, ShieldDamage=0x0, SFXType=0x2, Ground/Air=0x2, Direct/Indirect=0x3, Unknown=0x1, Unknown=0x6)
    ID - A way to identify different hitboxes, the game gives them an ID, incrementing by 1 each time (In this move we have ID 0 and 1)
    Bone - Sets which bone of the model the hitbox is linked to
    Damage - How much damage the hitbox deals
    Angle - Which direction the hitbox will send the opponent if it connects. Upwards is 90°, Downwards is 270°, of course. But 0 is AWAY, not right. (it depends on which of your sides your opponent is on) 180 is INWARDS, hitting the opponent towards you.
    KBG, FKB(WBKB), and BKB - Knockback Growth, Forced Knockback (Weight Based Knockback), and Base Knockback.
    Size - How big the hitbox is.
    Z, Y, and X - XYZ offsets of the hitbox
    Thanks to Meshima's Document
    0 Normal
    1 None/Detect?
    2 Slash
    3 Electric Hitlag Multiplier=1.5, unable to tech?
    4 Freezing
    5 Flame
    6 Coin
    7 Reverse
    8 Slip
    9 Sleep
    a Unused?
    b Bury Doesn't count as jab lock times
    c Stun
    d Unused?
    e Flower
    f Unused?
    10 Death Used for Ornes (3DS Smash Run, not sure if used for anything else)
    11 Grass (Probably) Unused for any moves in Smash4.
    12 Water Greninja stuff, Corrin Counter Surge
    13 Darkness
    14 Paralyze
    15 Aura
    16 Plunge
    17 Down (Probably) Unused for any moves in Smash4.
    18 Adhension Megaman Side-B1, Mii Gunner Side-B2
    19 Stab Cosmetic Slash variant
    1a Magic
    1b Flinchless1 Fox Up-throw Blaster
    1c Flinchless2 Fox Down-throw Blaster
    1d Solar WFT Neutral-B1
    1e (Focus Attack) Ryu Down-B1
    1f (Disable) Mewtwo Down-B1, Final Smash
    20 (Dragon Lunge) Corrin Side-B1
    21 Unknown DuckHunt Can 0%
    22 Unknown Probably have its effect, but unknown.
    23 Unknown Probably have its effect, but unknown.
    24 (Bullet Climax) Bayo Neutral-B1
    Trip - If the attack trips the opponent
    Hitlag - Multiplier determining how long characters are stuck in Hitlag
    SDI - Multiplier determining the effect of SDI, making it easier or harder.
    ShieldDamage - How much extra shield damage the hitbox deals
    Ground/Air - Determines if the hitbox only connects with fighters on the ground, in the air, or both.
    Direct/Indirect -
    So using that information we will make puff's nair hit the opponent downwards. Be sure to edit both hitboxes!
  6. Change the angle to 270 in hex, this website tells me to input 10E.
  7. Why not add some extra damage? Change Damage=11 to Damage=15
  8. We want it to be able to meteor early, so change BKB=0x1E to BKB=0x80. (BKB stands for "Base knockback", which is the amount of kb an attack with deliver before being influenced by percents (KBG, or knockback growth))
  9. To tack on some extra damage if they survive, we'll give both hitboxes the flower effect, slowly dealing damage. (the same effect as Rest) Change Effect=0x0 to Effect=0xE

    And with that, Neutral Air is done! Click the X on the AttackAirN Tab (Don't close the Sm4shCommand window! Just close the tab!) Then select File>Save (Save As... is buggy in my experience, this is why we backed up the files beforehand)
Down Special - Rest
We're going to make Rest similar to melee, but with some changes.
  1. Open the Script called SpecialLwL (SpecialLwR just tells the game to use the script called SpecialLwL, so by editing SpecialLwL we edit them both technically) then go to the game tab like last time.
  2. We can see on frame 2, the rest hitbox comes out, and on frame 3, the hitboxes are removed. Instead of that, we will change the first Asynchronous Timer to frame 1 to make rest a frame 1 attack.
  3. Next, we'll change the effect from 0xE (flower) to 0x5 (fire).
  4. Then we'll adjust the angle from 0x58 (88, almost directly upwards) to 0x169 (361, the sakurai angle.)
  5. Now we increase the damage from 20 to 28
  6. Now we decrease the BKB, 0x64 to 0x4E, but significantly increase the KBG (0x42 to 0x78), allowing it to kill at very early percents due to the damage buff.
  7. For fun, we're going to make this move cancellable on frame 20. After the "Remove_All_Hitboxes()", make a new line and type
    Code:
    Asynchronous_Timer(Frames=20)
    followed by another newline and
    Code:
    Allow_Interupt()
    (Make sure the Script_End() is still the only code in the last line! Without it being there, the entire moveset will become corrupt!)
    And with that, we're done! Save the file with the same method as last time
Now that the files are saved, put the edited game.bin, expression.bin, effect.bin, sound.bin and motion.mtable onto your SD (SaltySD/smash/animcmd/fighter/purin) and try it out!

This guide is very much a WIP. If there's something you want me to cover in this guide or if something is incorrect/missing, please let me know :D
 
Last edited by Halvorsen,
I'm trying to make all of this guide work, but I'm not sure where I'm going wrong. Whenever I tried to save using either "X, File>Save" or "File>Save,X", it would show up in the program as saved. However when I revisited it after closing smash command, none of the changes saved.

So I just did "hit X, file>Save" after each step, then I did Save As to a folder (result #4).
Then I assumed that some things don't save right when closed, so I kept both tabs open, saved and Saved As (result #5)

Result #1: Attacks the same, Specials dont work
Result #2 and 3: Attacks the same, Specials the same
Result #4: Nair can finally spike, all specials are broken.
Result #5: Attack is the same, Specials broken

Am I doing something wrong? Sorry in advance.
 
I'm trying to make all of this guide work, but I'm not sure where I'm going wrong. Whenever I tried to save using either "X, File>Save" or "File>Save,X", it would show up in the program as saved. However when I revisited it after closing smash command, none of the changes saved.

So I just did "hit X, file>Save" after each step, then I did Save As to a folder (result #4).
Then I assumed that some things don't save right when closed, so I kept both tabs open, saved and Saved As (result #5)

Result #1: Attacks the same, Specials dont work
Result #2 and 3: Attacks the same, Specials the same
Result #4: Nair can finally spike, all specials are broken.
Result #5: Attack is the same, Specials broken

Am I doing something wrong? Sorry in advance.
Hm, everything seems fine actually. I can't say I know exactly what's going on, sorry man :(
 
I went over the guide again today, and recorded the process I went through (along with some music because I was bored). This attempt did nothing for the Neutral Air, but broke the specials.
This is the process (music is playing):
 
Nice tutorial, is it possible to replace Rolling (block+side) with fox's or falco's Side-B ? i would love to do this for all my characters if it's possible lol
 
I went over the guide again today, and recorded the process I went through (along with some music because I was bored). This attempt did nothing for the Neutral Air, but broke the specials.
This is the process (music is playing):

Sorry for being late mate, it is because you entered the Angle wrong. The angle has to be 0x10E and not 10E
by the way, save as works better then save actually.

--------------------- MERGED ---------------------------

Probably Veeeeery late, but whatever
(MODDING IN 2k17 LUL)
, I tried it myself and it broke for me too somehow
 
Last edited by benCat07,
This probably will be unanswered, but is there a solution to the Specials not working?
I don't know what you're talking about. If you're having old issues, upgrade to the latest SmashCommand or use FITX instead.
 
Never mind, I figured out what I did wrong. It would always compile with the Wii U endians, so I just used A FTIX Helper GUI to change it. Thanks for the tutorial anyways!
 
Never mind, I figured out what I did wrong. It would always compile with the Wii U endians, so I just used A FTIX Helper GUI to change it. Thanks for the tutorial anyways!
How did you get it to work? no matter what i do, it doesn't quite work for me, i see the FITD window flicker for a moment but it does nothing...
 
How did you get it to work? no matter what i do, it doesn't quite work for me, i see the FITD window flicker for a moment but it does nothing...
I think I used this Wii U tutorial for the command line stuff
https://gamebanana.com/tuts/12079
Just remember when recompiling that it will recompile for Wii U, so as a way to fix that I used the FitX Helper GUI found on Gamebanana to recompile it for 3DS
https://gamebanana.com/tools/6143
Sorry if this was vague and/or confusing, I haven't done this in a while so I don't remember the whole process.
 
Hello everyone i want to change an arrow to an explosive arrow and do it like this: first hitbox impact and another hitbox after impact on opponent(fire hitbox + explosion graphic) or the arrow just explode if touch walls/ground. How should i do that?

I tried the same as the bombs of link/toon link conditions but didnt work, i manage to give toon link dark arrows with dark particle effect but i dont know how to make the arrow to recognize wall/ground and opponent with the first hitbox, actually if i try to put another hitbox and try to save, it gives me a jit error something about:
Index outside the boundaries of the matrix.

Can someone help me?
 
Last edited by Inf-Toonlink,

Site & Scene News

Popular threads in this forum