|
|
« on: November 01, 2015, 07:57:48 PM » |
|
From Brawl Minus comes entirely new PSA commands! This was all done from Mawootad from the Brawl Minus Dev Team. These new commands allow you to limit aerial Specials, have a Sub Routine that lasts outside the Action it was activated in, and changing Character Attributes on the fly. Limited Specials [Mawootad] 4A000000 8077f218 60000001 00000000 D2000000 00000017 2C040112 41A000A0 2C040115 41A10098 807F00D8 80630064 81830000 818C0018 3C801000 38840047 7D8903A6 4E800421 5460843E 2C002718 40A20054 80810010 3884FEEE 5484083C 20A40020 5C602FBF 40A20014 38A5FFF8 5C602FBF 41A20030 48000050 38A00001 7CA42030 3CA01000 38A50047 807F00D8 80630064 81830000 818C0030 7D8903A6 4E800421 819E0000 7FE5FB78 7FC3F378 80810010 818C0014 7D8903A6 4E800421 38600001 48000008 38600000 00000000 14000004 2C030001 14000008 41A201CC 4A000000 8077f3b4 62000000 00000000 14000008 41A20030 C283c814 0000000C 4E800421 807900D8 80630064 81830000 818C0018 3C801000 38840047 7D8903A6 4E800421 5460843E 2C002718 40A20030 5460C63E 5464002E 7C840378 807900D8 80630064 81830000 818C001C 3CA01000 38A50047 7D8903A6 4E800421 00000000 Independent Subroutines [Mawootad] C277CFB4 00000021 2C000005 41A00014 2C000007 41820014 41810008 3803FFFB 2C000003 480000E8 3B600000 7FC3F378 38000000 7FC3F378 90010080 38810080 98010084 7F65DB78 819E0000 818C0020 7D8903A6 4E800421 2C030000 41820020 88810084 28040001 41820014 80610080 80030000 2C000000 41A2000C 38600001 4800007C 2C1B0001 41820010 3B7B0001 83830004 4BFFFF98 83630004 807D0020 7C7D1B78 81830000 818C0018 7D8903A6 4E800421 7C7F1B78 3BC00000 48000034 819D0010 387D0010 7FC4F378 818C0010 7D8903A6 4E800421 80030008 7C1C0000 40A2000C B363000C 48000010 3BDE0001 7C1EF800 4180FFCC 38600001 3D808078 398CD56C 7D8903A6 4E800420 00000000 C277d098 00000006 7C1F0378 819E0000 7FC3F378 818C0010 7D8903A6 4E800421 2C030005 41A0000C 57E006F7 48000008 57E0077B 00000000 C277d0cc 00000003 7C600774 2C000005 41A00008 3803FFFB 2C000000 00000000 0477cf8c 2C000008 C278250c 00000019 28040060 40A200B8 7F63DB78 38800000 3D808078 398C22E0 7D8903A6 4E800421 80030000 2C000000 41A2000C 38600001 4800007C 83A30004 807C00D8 8063006C 80630020 7C7B1B78 81830000 818C0018 7D8903A6 4E800421 7C7F1B78 3BC00000 48000040 819B0010 387B0010 7FC4F378 818C0010 7D8903A6 4E800421 80030008 7C1D0000 40A20018 80630000 8063000C 7C600034 5403D97E 48000014 3BDE0001 7C1EF800 4180FFC0 38600001 3D808078 398C54B4 7D8903A6 4E800420 2804004C 60000000 00000000 On the Fly Attribute Modification (Item Crash Fix) [codes, Mawootad] C27AD58C 00000019 28000020 418000B8 28000025 408000B0 1FA0000C 3BBDFE80 80FF00D8 3C6080B8 808368D8 806700C4 1C8401C8 38A00BB8 54A0103A 7C632214 7C630214 3B83D138 57DFA53E 57DE053E 48000005 7C0802A6 3BBD001C 7FBD0214 7FA903A6 57C0103A 7C1C042E 4E800420 7FFC052E 48000034 60000000 EC00F82A 7C1C052E 48000024 EC00F828 7C1C052E 48000018 EC0007F2 7C1C052E 4800000C EC00F824 7C1C052E 3BDE0001 7C1EF800 4081FFB4 3D80807B 398CD5BC 7D8903A6 4E800420 3C6080AD 60000000 00000000 047ACE78 2C000025 C27ACEA0 00000005 28000025 4080001C 28000020 41A00014 3C60807B 3863D2A0 7C6903A6 4E800420 60000000 00000000 Adds the commands 12200200 - 12240200 -- set, add, subtract, multiply, and divide attribute range. Commands take two inputs, the first is a variable or scalar, the second is a specially formatted variable. The second command should be a variable (type is irrelevant) with a hexadecimal id of 0xBBBAAA. AAA is first attribute to write to, as counted in the 0-indexed attribute value table. BBB is the last attribute to write to. If BBB is less than AAA, the single attribute referenced by AAA is modified. The code does not check whether the given attribute is valid and specifying a value for AAA or BBB that is too large may result in crashes. Attribute changes reset upon respawning.
Parameter 1 uses Scalar while Parameter 2 uses an IC-Basic Variable. These commands won't work with Integer Attributes though, so if you wanted to find a specific attribute, you would count down while skipping any Integer Attributes. The Attributes start at IC-Basic [ 0 ].
Example: Attribute Range Set (12200200): 152, IC-Basic [40] would change the Weight Attribute to 152 until the character dies or if the attribute is changed again. This thread will be updated with more info, as Mawootad still needs to write down documentation on it (and I'm still asking him things).
|
|
« Last Edit: July 20, 2018, 01:34:23 PM by KingJigglypuff »
|
Logged
|
|
|
|
|
|
|
« Reply #1 on: November 01, 2015, 08:01:23 PM » |
|
This is so hype.
But maybe too little too late v:
|
|
|
Logged
|
In other words, LURK MORE. In other news, birds fly, sun shines, fishes swim, and the sky is [censored]ing BLUE. 3. ... You seriously don't know who Clinton is? If only hacking Brawl paid bills. O snap But you are in a Smash Bros. thread. You can't have an opinion here.
|
|
|
|
|
|
« Reply #2 on: November 01, 2015, 09:01:39 PM » |
|
Hey, just wanted to provide some technical info and usage tips for these codes. First off for independent subroutines, the currently available specials (last byte of the basic) are set to the max available specials whenever the fighter becomes grounded (grabs a ledge or physically makes contact with the ground and are decremented each time the corresponding special is used. When a given group of bits becomes 0 and it has a max number of specials set that special cannot be activated. This has a couple of important things to note: 1) if you have a special that changes to itself (specifically to the first 11X action) for some reason it will consume multiple uses of the special and potentially fail to work properly, 2) if the user becomes grounded during the special they will recover all uses (many DO NOT become grounded even when they touch the ground), and 3) if the user uses the special and remains grounded for the entire move the special's uses will be consumed and will not refresh until the user jumps or lands. The specials also do not refresh on taking damage, as this is not always intended behavior and refreshing on taking damage is fairly easy to implement. Create a subroutine setting LA-Basic[71] to the value of your choice and copy past that subroutine call to wait1, squat, swim, and if you want refresh on damage all of the damage and captureDamage subactions.
For the independent subroutines code threads 5-8 are generally safe to use (I think, 7 and 8 are safe on every fighter as far as I can tell). Thread 0 is the action thread, threads 1-4 are the subaction threads (main, gfx, sfx, and other tabs in PSA), thread 9 is the default concurrent infinite loop thread, thread A is the default independent subroutine thread. Articles and other non-fighter entities that run PSA commands do not necessarily have the same number of threads as fighters, and may not have any free threads. Also, the specific thread number does matter for some commands, flash overlay effects for instance behave differently when called from thread A. In terms of how to use independent subroutines, there are a couple of very nice general purpose uses. The first is for generating flashing effects for fully charged moves. The way that you'd implement one of these is something like:
if flashing condition if thread is null: A independent subroutine: (Thread A): @flashing subroutine end if end if
With the flashing subroutine of the form (this is actually how flashing effects are implemented in Brawl)
Flash Overlay Effect: Color 1 Sync Wait: 1 frame Change Flash Overlay Color: Transition Time=4 Color 2 Sync Wait: 4 frames Terminate Flash Effect Synch Wait: 1 frame goto: @flashing subroutine
The second general purpose method for independent subroutines is in conjunction with limited specials to create cooldowns for specials. This is implemented using two different threads, one of which runs once per character frame and one which runs once per actual frame. So if you wanted to give neutral special a 3 second cooldown starting from when it's activated you could put the following code in neutral special:
Float variable set: LA-Float[255] = 180
Then in an independent subroutine in thread 8 you can run this code: if compare: LA-Float[255] > 0 Float variable subtract: LA-Float[255] - 1 End if Sync wait: 1 frame Goto start
And in thread 7 run this code:
If compare: LA-Float[255] > 0 Basic variable set: LA-Basic[71] = 27180100 else Basic variable set: LA-Basic[71] = 0 end if sync wait: .1 frames goto start
This code turns on limited specials and sets neutral special to be limited and have no remaining uses whenever LA-Float[255] is non-zero. Because of how action changes are checked this very easily prevents neutral special from ever being activated when you don't want it to be.
The final comment I'd like to make is to mention that attribute modification makes no attempts to limit the user to sane inputs. If you run Attribute Range Set: IC-Basic[10,000,000] = 0 the code will gladly attempt to 0 out the 5 kilobytes of memory you told it to zero out, probably crashing your game. At the same time, if you happen to know where some relevant piece of information occurs relative to the fighter's attribute table you may be able to use attribute modification to write to that value. Also, I suspect that the way attribute modification is written may remove certain safeguards on bad PSA commands, specifically 12 type commands with a subtype of 14-1F (commands which do not exist) may attempt to branch into random memory crashing the game. This is very easily avoidable though, since you shouldn't be using non-existent commands in the first place.
|
|
« Last Edit: January 23, 2016, 06:40:32 PM by Mawootad »
|
Logged
|
|
|
|
|
|
|
« Reply #3 on: February 06, 2016, 09:40:43 AM » |
|
This is so hype.
But maybe too little too late v:
Still Super hype though!
|
|
|
Logged
|
|
|
|
|
|
|
« Reply #4 on: March 05, 2016, 11:41:59 AM » |
|
I never used Brawl Minus before so please excuse my question if it seems like the answer is obvious. Would I be able to have another action take place, be it a completely different move or a damage penalty (over exertion) for example?
Honestly, I have little experience when it comes to modding Brawl, I have messed with textures, attributes, and effects mostly. I haven't had the time to dive in and try out my ideas, assuming they would work.
|
|
|
Logged
|
|
|
|
|
|
|
« Reply #5 on: March 05, 2016, 03:04:13 PM » |
|
You should have made a post in A/A Help, but to answer your question, if what you want is the character to go into a different Action upon spamming the same move over and over, then it can be possible. For damage reduction, there's already a mechanic in the game that stales the damage of moves if used over and over.
|
|
|
Logged
|
|
|
|
|
|
|
« Reply #6 on: March 09, 2016, 02:47:40 PM » |
|
Wait. "Character Attributes on the fly" ? Basically, making a character heavier and such on the fly, via PSA command instead of messing around with momentum ?
... This is beautiful. (and also, exactly what was needed for Shulk's PSA, lol)
|
|
|
Logged
|
|
|
|
|
|
|
« Reply #7 on: March 09, 2016, 03:00:10 PM » |
|
That's correct.
|
|
|
Logged
|
|
|
|
|
|
|
« Reply #8 on: March 23, 2016, 03:35:28 PM » |
|
So question, would I need to use the GCT codes provided below or can I use subroutines and such in the PSA to actually edit the attributes? Need to know because I'm helping KTH and LJSTAR with the Shulk PSA which is coming along really nice I might say.
|
|
|
Logged
|
|
|
|
|
|
|
« Reply #9 on: March 23, 2016, 04:17:03 PM » |
|
You need to use the gct codes.
|
|
|
Logged
|
|
|
|
|
|
|
« Reply #10 on: March 22, 2017, 09:48:07 AM » |
|
Does this code work with Project M?
|
|
|
Logged
|
Killer Queen has already touched this signature
|
|
|
|
|
|
« Reply #11 on: July 20, 2018, 01:33:31 PM » |
|
This is gonna be a huge-ass necro, I know, but it's important. Codes (also known as TheGag96) made a fix for the Attribute Modification code so it no longer breaks Rolling Crates, Lip's Stick, Springs, and Soccer Balls. The OP has been updated to use this fixed code. Does this code work with Project M? Yes.
|
|
« Last Edit: July 20, 2018, 01:34:42 PM by KingJigglypuff »
|
Logged
|
|
|
|
|
|