ROM Hack A Guide to Sm4shCommand

Yudowat

That one guy that shows up occasionally
OP
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
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,

DestroyedClone

New Member
Newbie
Joined
Oct 13, 2016
Messages
3
Trophies
0
Age
23
Location
California
Website
www.youtube.com
XP
59
Country
United States
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.
 

Yudowat

That one guy that shows up occasionally
OP
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
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 :(
 

DestroyedClone

New Member
Newbie
Joined
Oct 13, 2016
Messages
3
Trophies
0
Age
23
Location
California
Website
www.youtube.com
XP
59
Country
United States
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):
 

LegendaryOutcast

Well-Known Member
Newcomer
Joined
May 3, 2016
Messages
61
Trophies
0
Age
32
XP
149
Country
United States
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
 

benCat07

Member
Newcomer
Joined
Mar 9, 2017
Messages
8
Trophies
0
Age
23
XP
51
Country
Gambia, The
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,

Yudowat

That one guy that shows up occasionally
OP
Member
Joined
Jun 12, 2015
Messages
552
Trophies
0
XP
341
Country
Australia
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.
 

Alex119098

Well-Known Member
Member
Joined
Dec 6, 2015
Messages
142
Trophies
0
Location
Deep Space
XP
292
Country
United States
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!
 

benCat07

Member
Newcomer
Joined
Mar 9, 2017
Messages
8
Trophies
0
Age
23
XP
51
Country
Gambia, The
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...
 

Alex119098

Well-Known Member
Member
Joined
Dec 6, 2015
Messages
142
Trophies
0
Location
Deep Space
XP
292
Country
United States
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.
 

Inf-Toonlink

New Member
Newbie
Joined
Feb 17, 2019
Messages
2
Trophies
0
Age
31
XP
51
Country
Mexico
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

General chit-chat
Help Users
    Veho @ Veho: https://www.keepretro.com/products/miyoo-a30