• 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!

Hopefully a Beginner Friendly PSA Guide.

DelxDoom

Smash Lord
Joined
Sep 9, 2006
Messages
1,555
Okay, so you know the other guide(s) either just help the people who already know how to do stuff in PSA or etc.

Paprika's Guide (The first one)
http://www.smashboards.com/showthread.php?t=243626

Big PSA List of Events and stuff
http://www.smashboards.com/showthread.php?p=8225324#post8225324


This should hopefully help out those who want to get into PSA, but could use help just learning how to do stuff.

So uh, I hope it's easy enough to understand.



TSON's Really Cool Guide on how to Start Everything Up Okay

In fact, this guide probably renders the beginning of my guide a little useless.

Download it, download pac files - data that is used for each character.

PSA saves in .pac format. To use your edited PAC in your game, replace the one in the fighter folder on your SD card with your new PAC. You should probably save backup unedited PACs though.
The format is FitCharactername.pac. For Mario, it’ll be FitMario.pac in the mario folder, for Jigglypuff, FitPurin.pac in the purin folder, and so on. Squirtle is zenigame, Charizard is lizardon. Bowser is koopa. Etc etc etc.

First things first.
Open your PSA program and a pac file and you should notice some tabs. You should be able to figure out how to navigate between the tabs.

Attributes of the character should be self explanatory. Most are labeled, but some are not. They all have some purpose though, I don’t know them all myself. There is a chart somewhere but I lost it. Anyways, don’t try to edit Weight too much because it is probably buggy.



Okay, here's where I start talking about stuff TSON hadn't got to.
Events.
The first thing that the new PSA user usually wants to know is how to edit moves.
First, be familiar with Events. Events are the building blocks of Sub Routines, Sub Actions, and Specials in PSA.

So yeah, from just looking at most of the windows you see Create, Delete, Modify. These involve events, and the window that pops up for Modify lets you do cool stuff.

Events are basically everything. There are hitbox events, graphics events, sound events, if/then events, loop events, speed events, camera events, etc. If you have taken a Computer Science class in school it will be easier to understand the meaning of some of the events.
Also note that a lot of the numbers used in Events are in Hexadecimal. If you do not know what that is, use the computer calculator and under View choose Scientific. “Normal counting” is Dec, and Hexadecimal is Hex.
Events use numbers. Values are in hex, Scalars are usually normal numbers and use decimals a lot for precision. Everything else like variables are blah.

There are threads on SWF that have lots of identified events. I linked to probably the best one up at the top.

Note that the named events in PSA were named by the creator of the program. Not all events are named. Many useful events are not named. They all however, have a specific number code.
The Event window has the number code in the bottom right hand corner when you are changing it.



SubActions!
-Every time the character uses an animation it is using a Sub Action. There is a subaction for standing still, for running, jumping, landing, all attacks, throws, swimming, item moves, etc. This is where most people edit because it is the easiest to control. They are made of Events, and sometimes Sub Routines.



-Specials are obviously the B moves. In here, the code points towards the Sub Actions to do, but also has stuff like the timer on ROB’s laser, Wario’s fart, or charges on Samus beam etc, or limits on whether you can use the move or not. I don’t mess around here personally myself because I tried a few times and froze my game multiple times.

An IMPORTANT note:

Offsets are the location of the move. If you add Events, you change the Offset (and add to the size of the file). This might not matter, but it does sometimes. The “Goto” event points to a different offset, usually of a SubAction or SubRoutine. If the offset of something changes and the Goto event still points to the old offset, bad things happen. This is probably why messing with Specials didn’t work for me.
Also, Samus and Zero Suit Samus have small file limits so be careful. Usually, if you’re going to change a move, instead of removing the unwanted code you should change the unwanted code to the “nop” Event (which basically does nothing and acts as a placeholder) in case you need that event for later editing.

Move Editing 101

Check out SubActions. Your attacks will have a Subaction number in Hexadecimal.
You can find out which ones are which in other threads.

There is a box that tells the game what animation to use for that Subaction. To “edit” this, you can switch the animation to another one that the character has.
- If you want to switch the animation with another character’s animation, you need BrawlBox and the FitMotion files of the characters you want to switch moves of.
- If you want to edit the animation, you also need BrawlBox, the FitMotion file of the animation you want to edit, and major skills.

Usually there will be a few Offensive collision Events. When you open one up, you should have a list of components of that Offensive collision.
- Bone/ID: The bone is where the hitbox is and the ID is just the name of that hitbox (to differentiate between another hitbox). All hitboxes are circular, so that is why some moves have more than just one hitbox; to be more precise with the hitbox.
- Damage, Trajectory, Base Knockback (starting knockback) and Knockback growth should be obvious. Note that there are 8 digits to replace, and everything is in Hexadecimal here. Also note that the first four digits usually do something else, strangely enough.
- I’d like to repeat that these three Values are in Hexadecimal. Do NOT change the Value option to Scalar or something else, etc.
- Size – This is actually a scalar. It’s the size of the hitbox circle. 10 is about the size of Jigglypuff, I think.

FLAGS are very important. You have an 8 digit value that is very editable.
In the flags are the data for ,
- HIT EFFECTS SUCH AS FIRE, FREEZE, LIGHTNING, DARKNESS, AURA, STUN (think ZSS dsmash or laser), “IMPALE” (think DK’s side b), and a few more.
- SOUND EFFECTS ON HIT
- If the hitbox hits grounded only, air only, or both
- Priority

Probably some other things. the Firey/whatever stuff involves the last two.


Terminate Collisions basically gets rid of all the hitboxes.

Editing the speed of a move. There are two ways to do this.
First you must understand that a move ends in two ways:
- When the animation is finished
- When the Allow interrupt Event is used.


To edit animation speed, you can use the event 04070100
Set parameter 0 to "scalar", and put in the number you want to multiply the speed of the animation by. 2 means it is twice as fast, .5 means half as fast. Usually a .1 change is a pretty noticeable difference!
-This is one of the more useful events that is probably unnamed in your program. Note that Synchronous/Asynchronous timers are unaffected by this, so you might need to change those events accordingly to make the rest of the move match up timewise.
-If the animation finishes before all of the move, then well, you won’t get all of the move. Lol.

Allow interrupt is a nifty tool that adds IASA. Usually you will use an Asynchronous Timer before this event to basically tell when the move can be interrupted.


-----------------------------
Some other specific stuff.


-To make a multi-hit move, use Set Loop
Hitbox
Terminate Collisions
Usually a synchronous timer
Execute loop


-Windbox
Special Hit Collision
Flags: 00030000 (can hit enemies in air or on ground)
Undefined: 00000016
Undefined: E04FFFC0

Everything else works like a normal hit collision.
 

ds22

Smash Lord
Joined
Aug 30, 2009
Messages
1,662
Location
Rotterdam, The Netherlands
I have a question.
I want to change this command, Change Action: 0-0, 0-10, 6-0, to something that immobilizes the PSA to use jump moves or Up-B but gives the opportunity to attack.
I know that Sonic and Snake can do this, but I didn't find any useful info in there .pac files.
Do you know into what I have to change the 0-10 value in the command?
 

DelxDoom

Smash Lord
Joined
Sep 9, 2006
Messages
1,555
First off, I also wanted to learn how to do this. As far as I know, it cannot be done the same way Snake/Sonic's works.

Instead, you can do a workaround that requires work and is dumb, but basically, whenever you do an Up B you set a Long Term bit (whatever number, just remember what it is). Then, you set an If that bit is not set, do the Up B.

Then you can add Allow Interupt to FallSpecial

So basically the character cannot up b in the air more than once.

So now you need to add the "Clear ____ Long term bit" to many SubActions such as getting hit, landing on the ground, or landing with a move.






So if anyone has a simpler solution, that'd be great lol
 

ds22

Smash Lord
Joined
Aug 30, 2009
Messages
1,662
Location
Rotterdam, The Netherlands
First off, I also wanted to learn how to do this. As far as I know, it cannot be done the same way Snake/Sonic's works.

Instead, you can do a workaround that requires work and is dumb, but basically, whenever you do an Up B you set a Long Term bit (whatever number, just remember what it is). Then, you set an If that bit is not set, do the Up B.

Then you can add Allow Interupt to FallSpecial

So basically the character cannot up b in the air more than once.

So now you need to add the "Clear ____ Long term bit" to many SubActions such as getting hit, landing on the ground, or landing with a move.






So if anyone has a simpler solution, that'd be great lol
What are the numbers of Long term bit and Clear ____ Long term bit?
 

DelxDoom

Smash Lord
Joined
Sep 9, 2006
Messages
1,555
**** lmao i forgot about my old thread...
I know you're one of the more knowledgable PSAers who post. Link meh >.>


@ds22, choose whatever number you want, just remember what it is and use it consistently for that variable.

I personally use 111, but you can use whatever number.
 

ds22

Smash Lord
Joined
Aug 30, 2009
Messages
1,662
Location
Rotterdam, The Netherlands
I know you're one of the more knowledgable PSAers who post. Link meh >.>


@ds22, choose whatever number you want, just remember what it is and use it consistently for that variable.

I personally use 111, but you can use whatever number.
I mean what is the number of those events.
 

brawlshifter

Smash Lord
Joined
Oct 8, 2009
Messages
1,195
Location
If you look at this, you're a stalker: NorCal
This thread is good and all, and I'm sure it will help people, but The Paprika Killer's PSA Guide is plenty easy enough for beginners. It greatly helped me when I had no knowledge of PSA. Also, just as a suggestion, it might be good to link to The Paprika Killer's guide or to the Big PSA List Thread so that people can know what to put for Flags, GFX, etc.
 

superyoshi888

Smash Lord
Joined
Apr 8, 2008
Messages
1,026
Are there any unused graphical effects that are shared by all characters? I had an idea but it requires an unused one.
 
Joined
Oct 9, 2008
Messages
8,905
Location
Vinyl Scratch's Party Bungalo
NNID
Budget_Player
This thread is good and all, and I'm sure it will help people, but The Paprika Killer's PSA Guide is plenty easy enough for beginners. It greatly helped me when I had no knowledge of PSA. Also, just as a suggestion, it might be good to link to The Paprika Killer's guide or to the Big PSA List Thread so that people can know what to put for Flags, GFX, etc.
Ew no. That guide makes no sense whatsoever for a beginner. :laugh: Seriously, It took me a while to even understand WTF that guy was talking about.

Yeah that's good and all but what is the numbers of Long term bit and Clear ____ Long term bit command?
Because I can't seem to find it.
You're looking for Bit Variable Set and Bit Variable Clear. The variable just has to be Runtime Longterm and some random number.
 

ds22

Smash Lord
Joined
Aug 30, 2009
Messages
1,662
Location
Rotterdam, The Netherlands
Well the char is Ike.
It's this structure (smash attacks v0.1beta):
Set Bit Variable: LA-Float[111] = true
If: Not Bit is Set
0B000200: 0-2, 0-1
09000100: 0-2,
Set Air/Ground: In Air
0E080400: 1-0, 1-2BF20, 1-0, 0-1,
Timer: time=60000 intervals

It's his Air Up-B.
And it has the FallF animation.
 

ds22

Smash Lord
Joined
Aug 30, 2009
Messages
1,662
Location
Rotterdam, The Netherlands
Well how's it structured? And which char, which action, etc.
Well the char is Ike.
It's this structure (smash attacks v0.1beta):
Set Bit Variable: LA-Float[111] = true
If: Not Bit is Set
0B000200: 0-2, 0-1
09000100: 0-2,
Set Air/Ground: In Air
0E080400: 1-0, 1-2BF20, 1-0, 0-1,
Timer: time=60000 intervals

It's his Air Up-B.
And it has the FallF animation.
You have any idea what I need to change?
 

[TSON]

Hella.
Joined
May 7, 2008
Messages
3,422
Location
Macomb, MI
NNID
oTSONo
You're saying:

OK so set this.

If it isn't set somehow, do this:


However, since you just set it, there's no way that could happen. And on top of that, you aren't telling it what to do if the bit is set (which it is).
 

DelxDoom

Smash Lord
Joined
Sep 9, 2006
Messages
1,555
bumped for you. Do you want to continue yours or shall I continue mine?
I dunno. Maybe we could merge. Could you show me yours?


@ ds22
you need to put the setting the Bit inside of the If (if it's not set, then it'll set. if it is set, then it won't do anything)
Also, did you remember to End If at the end?
 

[TSON]

Hella.
Joined
May 7, 2008
Messages
3,422
Location
Macomb, MI
NNID
oTSONo
We could ask for a lock, then get 4 posts, me, you, me, you (in that order?) and just go from there? Iunno.

Or one of us could do it D:
 

ds22

Smash Lord
Joined
Aug 30, 2009
Messages
1,662
Location
Rotterdam, The Netherlands
Ok, I now have this as Action 114 (only the Air Up-B, which I'm editing):
Else:
Change SubAction: sub action=1E4
Change Action: action=10, requirement=Animation End
Change Action: action=16, Requirement=On Ground
End If:

And the 1E4 SubAction looks like this:
If Not Bit is Set:
Set Bit Variable: LA-Float[111] = true
0B000200: 0-2, 0-1,
09000100: 0-2,
Set Air/Ground: In Air
0E080400: 1-0, 1-2BF20, 1-0, 0-1,
Timer: time=60000 intervals
End If:

I added things like Allow Interrupt to FallSpecial, FallSpecialF, FallSpecialB and Clear Bit Variable: LA-Float[111] = false to things like getting hit and landings.

The problem now is,
It works and it doesn't work.
It works so that I can perform attacks in the air without the possibility to do Up-B until an attack is performed.
Did this by adding some of Snake's Up-B data to FallSpecial, FallSpecialF and FallSpecialB, namely this:
02090200: 0-12, 0-274D,
02090200: 0-12, 0-274E,
02090200: 0-B, 0-2773,
Which I placed under Allow Interrupt:

After performing an attack he gains the ability to Up-B again. (Which is annoying.)
And sometimes he doesn't go up when doing the Up-B.

I'm so close yet this happens.
 

[TSON]

Hella.
Joined
May 7, 2008
Messages
3,422
Location
Macomb, MI
NNID
oTSONo
You started the air upB with an Else? :/

If you're only doing one thing without an if anywhere, just do

Change SubAction: sub action=1E4
Change Action: action=10, requirement=Animation End
Change Action: action=16, Requirement=On Ground

And why are you setting a float to a boolean anyway? That's Bit's job

EDIT: and on 1E4,

If Not Bit is Set:
Set Bit Variable: LA-Float[111] = true
0B000200: 0-2, 0-1,
09000100: 0-2,
Set Air/Ground: In Air
0E080400: 1-0, 1-2BF20, 1-0, 0-1,
Timer: time=60000 intervals
End If:

OK so you're telling it that if LA-Float isn't set, then set it. But you aren't telling it what to do if it is.

If Not Bit is Set: LA-Float[111] = true
Set Bit Variable: LA-Float[111] = true
0B000200: 0-2, 0-1,
09000100: 0-2,
Set Air/Ground: In Air
0E080400: 1-0, 1-2BF20, 1-0, 0-1,
Timer: time=60000 intervals
Else:
Clear Bit Variable: LA-Float[111] = true
0B000200: 0-2, 0-1,
09000100: 0-2,
Set Air/Ground: In Air
0E080400: 1-0, 1-2BF20, 1-0, 0-1,
Timer: time=60000 intervals
End If:

Try that.
 
Top Bottom