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

Completed [Achilles] Interrupt Passives (Tech/Tech Rolls)

Aerros11

Smash Journeyman
Joined
Sep 5, 2009
Messages
284
Achilles did everything~

For anyone who wants to use the second code, first use the first code (interrupt passivestand f/b)

1.
INTERRUPT PASSIVESTAND F/B (1.02) [Achilles]
-Interrupt_Kneebend replaces Interrupt_PassiveStandF/B
-Jump out of a tech roll at any time
Gecko Code:

043C4110 800CAED0
043C4130 800CAED0

DOL:
OFFSET 0x3C1110 | 80098ADC ---> 800CAED0
OFFSET 0x3C1130 | 80098ADC ---> 800CAED0
_____________________________________________

2.
Passive/PassiveStandF/PassiveStandB only Jump Cancellable After Frame 20 (1.02) [Achilles]
-Jump out of a tech and tech roll only after frame 20

Gecko Code:

C20CAED0 00000006
80030070 2C0000C7
41800020 2C0000C9
41810018 C022DF50
C0430448 FC020840
40800008 4E800020
7C0802A6 00000000
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Passive/PassiveStandF/PassiveStandB only Jump Cancellable After Frame 20

C20CAED0 00000006
80030070 2C0000C7
41800020 2C0000C9
41810018 C022DF50
C0430448 FC020840
40800008 4E800020
7C0802A6 00000000

Code:
inject @ 800caed0 = Interrupt_Jump_Grounded
- function input = r3 = external data offset pointer

lwz    r0,0x70(r3)    # load current action state
cmpwi    r0,0xc7        # 0xC7 = passive (neutral tech)
blt-    END_DEFAULT
cmpwi    r0,0xc9        # 0xC9 = passivestandb (back roll tech)
bgt-    END_DEFAULT
lfs    f1,-0x20b0(r2)    # load 20 (float) from table of contents
lfs    f2,0x448(r3)    # load action state frame count
fcmpo    cr0,f2,f1    # is current frame count greater than or equal to 20?
bge-    END_DEFAULT
blr            # if not, skip jump interrupt function

END_DEFAULT:
mflr    r0    # default code line
Obviously, you need to change the Interrupts for those action states to 800CAED0.
 
Last edited:

Aerros11

Smash Journeyman
Joined
Sep 5, 2009
Messages
284
Achilles1515 Achilles1515

XD I caught on a while ago

This should make things more fair...well at least from my point of view.

Hey, is it alright if I ask what you think about the implementation of your code into vanilla melee? As in would you have liked it if the original game had this coding upon release all those years ago?
 

Aerros11

Smash Journeyman
Joined
Sep 5, 2009
Messages
284
Wow, you even wrote C20CAED0 instead of C2098ADC to match the already changed code

That's very thoughtful of you. Thanks again
It works perfectly~

EDIT: So for anyone who wants this code for THEIR game based on vanilla melee please use the following instead:

First use this:

Interrupt_Kneebend replaces Interrupt_PassiveStandF/B (1.02) [Achilles]
043C4110 800CAED0
043C4130 800CAED0

Then use the other code:

Passive/PassiveStandF/PassiveStandB only Jump Cancellable After Frame 20 (1.02) [Achilles]
C20CAED0 00000006
80030070 2C0000C7
41800020 2C0000C9
41810018 C022DF50
C0430448 FC020840
40800008 4E800020

7C0802A6 00000000
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Wow, you even wrote C20CAED0 instead of C2098ADC to match the already changed code

That's very thoughtful of you. Thanks again
It works perfectly~

EDIT: So for anyone who wants this code for THEIR game based on vanilla melee please use the following instead:

C2098ADC 00000006
80030070 2C0000C7
41800020 2C0000C9
41810018 C022DF50
C0430448 FC020840
40800008 4E800020
7C0802A6 00000000
That code will not work, because the default function at 80098ADC is to do nothing, which is why you can't act out those action states. So instead of doing nothing, after frame 20 you will be executing "mflr r0" and then going into the function underneath 80098ADC which I have no idea what it does.

But this brings up an interesting point, in that the better way of writing the code would be to inject it at 80098ADC, check for frame 20, and if so, then branch into the jump interrupt. That way, you would not have to change the interrupt functions for the action states to 800CAED0, your inject code would just branch to it when necessary.

As for my opinion on the actual mechanic, I think it's okay, but I think I would rather keep tech chasing as a thing. I would personally prefer Roll Reversing, as I have termed it in my mind, where you can reverse the direction of your roll after X amount of frames. If you reversed a forward roll on frame 26, then you would enter backwards roll, starting at frame 26. Only one reversal available per initial tech roll.
 

Aerros11

Smash Journeyman
Joined
Sep 5, 2009
Messages
284
That code will not work, because the default function at 80098ADC is to do nothing, which is why you can't act out those action states. So instead of doing nothing, after frame 20 you will be executing "mflr r0" and then going into the function underneath 80098ADC which I have no idea what it does.

But this brings up an interesting point, in that the better way of writing the code would be to inject it at 80098ADC, check for frame 20, and if so, then branch into the jump interrupt. That way, you would not have to change the interrupt functions for the action states to 800CAED0, your inject code would just branch to it when necessary.

As for my opinion on the actual mechanic, I think it's okay, but I think I would rather keep tech chasing as a thing. I would personally prefer Roll Reversing, as I have termed it in my mind, where you can reverse the direction of your roll after X amount of frames. If you reversed a forward roll on frame 26, then you would enter backwards roll, starting at frame 26. Only one reversal available per initial tech roll.
Ouch, I guess I'm mistaken about that 98ADC stuff but others might want the code and will end up finding out it won't work for them. I'll update my comment from before with the right instructions then.

About Reverse Rolling, I wanted to know whether or not you thought the original system was ideal. I'm glad you don't think so. Between your system and mine, I honestly don't know which is right.

What I do know is that you should ask the design lead for SDR to consider yours since yours is best for anything close to vanilla. It doesn't hurt to ask. Well anyway thanks for making the requested code even though it's not your ideal system either. You've helped a lot of people...and it doesn't mean much but I wish you the best~
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Ouch, I guess I'm mistaken about that 98ADC stuff but others might want the code and will end up finding out it won't work for them. I'll update my comment from before with the right instructions then.

About Reverse Rolling, I wanted to know whether or not you thought the original system was ideal. I'm glad you don't think so. Between your system and mine, I honestly don't know which is right.

What I do know is that you should ask the design lead for SDR to consider yours since yours is best for anything close to vanilla. It doesn't hurt to ask. Well anyway thanks for making the requested code even though it's not your ideal system either. You've helped a lot of people...and it doesn't mean much but I wish you the best~
Just to clarify, I'm not saying the original system is not ideal or that my idea of roll reversing is better than what is currently in place. When I said "I would personally prefer roll reversing," I meant it as if I was being forced to make a change to the system. Not that I specifically think it is better or anything. It's just a thought without much weight or passion behind it.
 
Last edited:

Aerros11

Smash Journeyman
Joined
Sep 5, 2009
Messages
284
Just to clarify, I'm not saying the original system is not ideal or that my idea of roll reversing is better than what is currently in place. When I said "I would personally prefer roll reversing," I meant it as if I was being forced to make a change to the system. Not that I specifically think it is better or anything. It's just a thought without much weight or passion behind it.
Hm.


.... .... ....
'____'

Gotchya.
 
Last edited:

tatatat0

Smash Journeyman
Joined
Jan 28, 2015
Messages
412
Passive/PassiveStandF/PassiveStandB only Jump Cancellable After Frame 20

C20CAED0 00000006
80030070 2C0000C7
41800020 2C0000C9
41810018 C022DF50
C0430448 FC020840
40800008 4E800020
7C0802A6 00000000

Code:
inject @ 800caed0 = Interrupt_Jump_Grounded
- function input = r3 = external data offset pointer

lwz    r0,0x70(r3)    # load current action state
cmpwi    r0,0xc7        # 0xC7 = passive (neutral tech)
blt-    END_DEFAULT
cmpwi    r0,0xc9        # 0xC9 = passivestandb (back roll tech)
bgt-    END_DEFAULT
lfs    f1,-0x20b0(r2)    # load 20 (float) from table of contents
lfs    f2,0x448(r3)    # load action state frame count
fcmpo    cr0,f2,f1    # is current frame count greater than or equal to 20?
bge-    END_DEFAULT
blr            # if not, skip jump interrupt function

END_DEFAULT:
mflr    r0    # default code line
Obviously, you need to change the Interrupts for those action states to 800CAED0.
Can you explain what
-0x20b0 is???
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
How does that outputs 20 and where does register 2 comes from.
Register 2 always holds the same value, 804df9e0.

r2 = rtoc (table of contents)

the instruction is:
lfs f1,-0x20b0(r2)............which also equals.......lfs f1,-0x20b0(rtoc)

0x804df9e0 - 0x20b0 = 0x4DD930

Go to 804dd930 in the RAM and you'll see:
Capture.PNG


Load the float at that address into floating point register 1.
 
Last edited:

Aerros11

Smash Journeyman
Joined
Sep 5, 2009
Messages
284
Achilles1515 Achilles1515 , you think you can merge your idea and mine together so that characters have an additional option out of tech? (as in allow jumping after frame 20 and allow changing direction on and after frame 26...maybe frame 20 is better for the latter, that's up to you)

I didn't think of it till now and I'm kind of embarrased. Also, sorry for just asking you for favors. I hope Shield Breaker can honor your idea but it's understandable if you'd rather decline.

Thanks~
 
Top Bottom