In Progress The Impossible Cancel

Punkline

Dr. Frankenstack
Premium
Joined
May 15, 2015
Messages
355
#82
when I put the code and begin to play, the "checkbox" it's not comfirmed, I confirm it, and the game crashes. Can someone help me?
I assume you are installing the C2 Gecko code with Dolphin?

---

First make sure you're using 1.02 Melee.

You can check by loading the iso/gcm into Melee Code Manager. It will show in the top right:



If you're using 1.02 Melee, then make sure to copy this code in its entirety when entering it into Dolphin or MCM:

$Impossible Cancel v0.20 [Punkline]
C206B090 0000006A
C03F0650 C0028874
FC000800 4182002C
C03F0654 FC000800
40820020 9061FFF8
7FC3F378 83C1FFF8
48000019 9061FFF8
7FC3F378 83C1FFF8
C0228874 4800030C
7C0802A6 90010004
9421FF30 D8210008
BC610010 83E3002C
83DF0004 8BBF2073
3B800000 3B600000
3B400000 48000041
7C6802A6 A0830000
5480067F 41820068
7C00E800 40820020
5480C6BE 7C00F000
40820014 549C8FFE
549B97FE 549ACFFE
48000044 A4830002
4BFFFFD0 4E800021
01910194 81138493
0496049C 04A204A9
05948713 47940991
0C948C13 0E940F91
90139313 53941691
16949613 17949713
00000000 807F1A58
2C030000 41820014
8063002C 38000000
90031A4C 48000104
833F0010 2C190011
408100B0 2C190018
4182004C 2C190027
41820044 2C190029
4180002C 2C19002B
40810034 2C190046
4180001C 2C19004A
40810024 2C1900E9
4180000C 2C1900EC
40810014 2C1D0000
41820068 2C1D0058
41820060 887F221E
60600080 981F221E
807F0000 480000B9
807F0010 7C03C800
41820010 2C1A0000
4082FED8 48000034
2C1B0000 4082002C
807F0004 2C030007
40820018 807F0010
2C03015E 41820014
2C030161 4182000C
807F0000 4800011D
807F0010 2C03001D
41800040 2C030026
41810038 2C1C0000
41820030 807F0000
38800001 38A00001
80CDAEB4 C0260340
C0460344 38C00000
3D808009 618C6900
7D8803A6 4E800021
8B5F221E 735A007F
9B5F221E B8610010
C8210008 382100D0
80010004 7C0803A6
4E800020 7C0802A6
90010004 9421FFE8
BFC10010 83E3002C
C03F089C D021FFF8
C022E864 807F0000
3D808006 618CF190
7D8803A6 4E800021
807F0000 3D808006
618CEBA4 7D8803A6
4E800021 807F0000
3D808006 618CC80C
7D8803A6 4E800021
807F0000 3D808006
618CA360 7D8803A6
4E800021 C002E864
C03F089C FC010000
4082001C C021FFF8
807F0000 3D808006
618CF190 7D8803A6
4E800021 BBC10010
38210018 80010004
7C0803A6 4E800020
7C0802A6 90010004
9421FFF0 93E10008
83E3002C 887F2073
2C030000 41820048
807F00E0 2C030000
41820014 3C60800C
6063B2F8 907F21A0
48000010 3C608009
60639E80 907F21A0
38600001 907F08A4
807F0000 3D808006
618CA360 7D8803A6
4E800021 83E10008
38210010 80010004
7C0803A6 4E800020
60000000 00000000
 
Joined
Jul 26, 2017
Messages
4
Location
Immokalee, Florida
#83
Use either the injection mod package or the C2 Gecko code. They're just different methods of installing the same code. (See the spoiler at the top of my OP for the code text)

After you have the code installed, “light shield” L/R inputs will be replaced with the cancel effect.

I recommend using the injection mod package. MCM will save you the gecko code handler space for other smaller codes. The C2 gecko code may be very easily used with Dolphin, however.

To use the injection mod package, first you’ll need Melee Code Manager.
  • Copy the injection mod package text from my post
  • Paste it into a normal text file
  • Save it in the “Mods Library” folder of your Melee Code Manager directory. Call it something that makes sense to you, like “Impossible Cancel”
  • Select a ISO/GCM you want to modify in MCM and go to the “Injection Mods” tab to find the code you just added.


  • Toggle on “Impossible Cancel” and hit the "Save Changes" button.

The game will now contain the code by default.





C2 codes have a convenient pipeline in the Dolphin Emulator that can be used like this:
  • First make sure “Enable Cheats” is checked on the “General” tab of your config window.
  • Right click on Melee from Dolphin and click “Properties”
  • Click the “Gecko Codes” tab, click the “edit config” button
  • Copy the C2 code text from my post
  • Paste it under the “[Gecko]” tag, or any other codes you’ve already entered


  • Save the text file.
  • Make sure the code is enabled on the checklist before starting the game.

To use the C2 code on consoles, check out the spoiler at the top of this other thread.

---

@DRGN I hope so! There’s a lot of stuff that needs some attention first though. Hopefully it’ll come along nicely~

At the moment, the experimental cancel in 0.20 uses a lot of lengthy logic to meticulously accomplish some things that might be handled more passively. I’m hopeful it can be chopped up and shrunken down in another pass after I’ve explored a few things.
I am using 1.02 with a melee netplay settings code, and dan s' widescreen hack. I'll try hackless and see if it works. Thanks for your help.

And yes, it freezes first frame.

Edit: It works, thanks!

hey uh, i did exactly everything this tutorial said, but when i open melee, it doesnt look like the code was enabled. am i doing something wrong??
 

Punkline

Dr. Frankenstack
Premium
Joined
May 15, 2015
Messages
355
#84
hey uh, i did exactly everything this tutorial said, but when i open melee, it doesnt look like the code was enabled. am i doing something wrong??
Do you have any more information? Try answering these questions:

Which code did you install?
Code:
-==-
Impossible Cancel v0.20 (library)
Stable recreation of "Melee Impossible"
[Punkline]
Version -- DOL Offset ------ Hex to Replace ---------- ASM Code

1.02 ----- 0x8006b090--- C03F0650 -> Branch
C03F0650 C0028874
FC000800 4182002C
C03F0654 FC000800
40820020 9061FFF8
7FC3F378 83C1FFF8
bl <ICNCv020_softCancel>
9061FFF8 7FC3F378
83C1FFF8 C0228874
00000000


<ICNCv020_softCancel>
#r3= external player data offset
#experimental
7C0802A6 90010004
9421FF30 D8210008
BC610010 83E3002C
83DF0004 8BBF2073
3B800000 3B600000
3B400000 48000041
7C6802A6 A0830000
5480067F 41820068
7C00E800 40820020
5480C6BE 7C00F000
40820014 549C8FFE
549B97FE 549ACFFE
48000044 A4830002
4BFFFFD0 4E800021
01910194 81138493
0496049C 04A204A9
05948713 47940991
0C948C13 0E940F91
90139313 53941691
16949613 17949713
00000000 807F1A58
2C030000 41820014
8063002C 38000000
90031A4C 480000F8
833F0010 2C190011
408100B0 2C190018
4182004C 2C190027
41820044 2C190029
4180002C 2C19002B
40810034 2C190046
4180001C 2C19004A
40810024 2C1900E9
4180000C 2C1900EC
40810014 2C1D0000
41820068 2C1D0058
41820060 887F221E
60600080 981F221E
807F0000
bl <ICNCv020_animationSpeedCancel>
807F0010 7C03C800
41820010 2C1A0000
4082FED8 48000034
2C1B0000 4082002C
807F0004 2C030007
40820018 807F0010
2C03015E 41820014
2C030161 4182000C
807F0000
bl <ICNCv020_abortActionState>
807F0010 2C03001D
41800034 2C030026
4181002C 2C1C0000
41820024 807F0000
38800001 38A00001
80CDAEB4 C0260340
C0460344 38C00000
bl 0x80096900
8B5F221E 735A007F
9B5F221E B8610010
C8210008 382100D0
80010004 7C0803A6
4E800020


<ICNCv020_animationSpeedCancel>
#r3= external player data offset
#--sets animation speed to x1000
#--updates player frame stuff, which uses animation speed to create frame unit size
#--updates player article stuff (mask out bit 0x80 of player.0x2270 if you want to avoid projectiles)
#--attempts player animation interrupt check (cancels action state)
#--sets animation speed back to old speed if still == x1000 (cases where cancel fails)
7C0802A6 90010004
9421FFE8 BFC10010
83E3002C C03F089C
D021FFF8 C022E864
807F0000
bl 0x8006f190
807F0000
bl 0x8006eba4
807F0000
bl 0x8006C80C
807F0000
bl 0x8006A360
C002E864 C03F089C
FC010000 40820010
C021FFF8 807F0000
bl 0x8006f190
BBC10010 38210018
80010004 7C0803A6
4E800020


<ICNCv020_abortActionState>
#r3= external player data offset
#--if player is in air, set animation interrupt to transition into falling
#--else, set animation interrupt to transition into standing
#--set 0x904 to a non-0 value (bypasses frame logic check for next call)
#--attempt player animation interrupt check (cancels action state)
7C0802A6 90010004
9421FFF0 93E10008
83E3002C 887F2073
2C030000 4182003C
807F00E0 2C030000
41820014 3C60800C
6063B2F8 907F21A0
48000010 3C608009
60639E80 907F21A0
38600001 907F08A4
807F0000
bl 0x8006A360
83E10008 38210010
80010004 7C0803A6
4E800020
Code:
$Impossible Cancel v0.20 [Punkline]
C206B090 0000006A
C03F0650 C0028874
FC000800 4182002C
C03F0654 FC000800
40820020 9061FFF8
7FC3F378 83C1FFF8
48000019 9061FFF8
7FC3F378 83C1FFF8
C0228874 4800030C
7C0802A6 90010004
9421FF30 D8210008
BC610010 83E3002C
83DF0004 8BBF2073
3B800000 3B600000
3B400000 48000041
7C6802A6 A0830000
5480067F 41820068
7C00E800 40820020
5480C6BE 7C00F000
40820014 549C8FFE
549B97FE 549ACFFE
48000044 A4830002
4BFFFFD0 4E800021
01910194 81138493
0496049C 04A204A9
05948713 47940991
0C948C13 0E940F91
90139313 53941691
16949613 17949713
00000000 807F1A58
2C030000 41820014
8063002C 38000000
90031A4C 48000104
833F0010 2C190011
408100B0 2C190018
4182004C 2C190027
41820044 2C190029
4180002C 2C19002B
40810034 2C190046
4180001C 2C19004A
40810024 2C1900E9
4180000C 2C1900EC
40810014 2C1D0000
41820068 2C1D0058
41820060 887F221E
60600080 981F221E
807F0000 480000B9
807F0010 7C03C800
41820010 2C1A0000
4082FED8 48000034
2C1B0000 4082002C
807F0004 2C030007
40820018 807F0010
2C03015E 41820014
2C030161 4182000C
807F0000 4800011D
807F0010 2C03001D
41800040 2C030026
41810038 2C1C0000
41820030 807F0000
38800001 38A00001
80CDAEB4 C0260340
C0460344 38C00000
3D808009 618C6900
7D8803A6 4E800021
8B5F221E 735A007F
9B5F221E B8610010
C8210008 382100D0
80010004 7C0803A6
4E800020 7C0802A6
90010004 9421FFE8
BFC10010 83E3002C
C03F089C D021FFF8
C022E864 807F0000
3D808006 618CF190
7D8803A6 4E800021
807F0000 3D808006
618CEBA4 7D8803A6
4E800021 807F0000
3D808006 618CC80C
7D8803A6 4E800021
807F0000 3D808006
618CA360 7D8803A6
4E800021 C002E864
C03F089C FC010000
4082001C C021FFF8
807F0000 3D808006
618CF190 7D8803A6
4E800021 BBC10010
38210018 80010004
7C0803A6 4E800020
7C0802A6 90010004
9421FFF0 93E10008
83E3002C 887F2073
2C030000 41820048
807F00E0 2C030000
41820014 3C60800C
6063B2F8 907F21A0
48000010 3C608009
60639E80 907F21A0
38600001 907F08A4
807F0000 3D808006
618CA360 7D8803A6
4E800021 83E10008
38210010 80010004
7C0803A6 4E800020
60000000 00000000

What did you install the code with?
  • Melee Code Manager?
  • Dolphin?
  • Something else?

What version of Melee are you using?

What codes do you have installed besides this one?

Are you using Crazy Hand with frame speed modifiers enabled?

If you're using Melee Code Manager, what code regions do you have enabled?
 

Sly_

DON'T FAKE THE FUNK ON A NASTY DUNK...
Premium
Joined
Jan 1, 2015
Messages
18
Location
eugene OR
#87
Any chance you could make this activated with the X button instead of light press trigger? would make it easier for TASing. The dpad left for lightshield creates an issue where I can't cancel a subaction if I'm holding either of the trigger for whatever reason, often adding at least an extra frame to using the cancel. It also disallows me to use codes in 20XX during TAS's because it uses the load state command, making an ugly sound :(

As for the code itself... It's really made Melee tas even more fun for me :)
here are some examples...

 
Last edited:

Punkline

Dr. Frankenstack
Premium
Joined
May 15, 2015
Messages
355
#88
Sly_ Sly_ Haha, excellent videos! I’m glad you’re enjoying the code.

The original code intercepts the button logic being written to fighter GObjs and removes the light shield information to prevent shield actions from interfering with the cancel; which is likely causing the button problem you described. The cancel was written as a standalone function, so it’s easy to make new implementations of the same mechanic.

Here’s a version that masks out the X button logic for non-CPU players, and uses it as the new trigger for the cancel. This one should ignore the shoulder buttons:

Impossible Cancel 0.20 - X Button
Code:
-==-

Impossible Cancel v0.20 - X Button
X Button inputs are replaced with impossible cancel.
[Punkline]
1.02 ----- 8006b028 --- 901f065c -> Branch
5405056B 540005A8 901F065C 41A20024 80A30004 54A0056B 41A20018 88BF221F 70A00008 4082000C 7FC3F378
bl <ICNCv020_softCancel>
00000000
<ICNCv020_softCancel>
7C0802A6 90010004 9421FF30 D8210008 BC610010 83E3002C 83DF0004 8BBF2073 3B800000 3B600000 3B400000 48000041 7C6802A6 A0830000 5480067F 41820068 7C00E800 40820020 5480C6BE 7C00F000 40820014 549C8FFE 549B97FE 549ACFFE 48000044 A4830002 4BFFFFD0 4E800021 01910194 81138493 0496049C 04A204A9 05948713 47940991 0C948C13 0E940F91 90139313 53941691 16949613 17949713 00000000 807F1A58 2C030000 41820014 8063002C 38000000 90031A4C 480000F8 833F0010 2C190011 408100B0 2C190018 4182004C 2C190027 41820044 2C190029 4180002C 2C19002B 40810034 2C190046 4180001C 2C19004A 40810024 2C1900E9 4180000C 2C1900EC 40810014 2C1D0000 41820068 2C1D0058 41820060 887F221E 60600080 981F221E 807F0000
bl <ICNCv020_animationSpeedCancel>
807F0010 7C03C800 41820010 2C1A0000 4082FED8 48000034 2C1B0000 4082002C 807F0004 2C030007 40820018 807F0010 2C03015E 41820014 2C030161 4182000C 807F0000
bl <ICNCv020_abortActionState>
807F0010 2C03001D 41800034 2C030026 4181002C 2C1C0000 41820024 807F0000 38800001 38A00001 80CDAEB4 C0260340 C0460344 38C00000
bl 0x80096900
8B5F221E 735A007F 9B5F221E B8610010 C8210008 382100D0 80010004 7C0803A6 4E800020
<ICNCv020_animationSpeedCancel>
7C0802A6 90010004 9421FFE8 BFC10010 83E3002C C03F089C D021FFF8 C022E864 807F0000
bl 0x8006f190
807F0000
bl 0x8006eba4
807F0000
bl 0x8006C80C
807F0000
bl 0x8006A360
C002E864 C03F089C FC010000 40820010 C021FFF8 807F0000
bl 0x8006f190
BBC10010 38210018 80010004 7C0803A6 4E800020
<ICNCv020_abortActionState>
7C0802A6 90010004 9421FFF0 93E10008 83E3002C 887F2073 2C030000 4182003C 807F00E0 2C030000 41820014 3C60800C 6063B2F8 907F21A0 48000010 3C608009 60639E80 907F21A0 38600001 907F08A4 807F0000
bl 0x8006A360
83E10008 38210010 80010004 7C0803A6 4E800020
#


For those who are curious, the only change made to the code is the injection that calls <ICNCv020_softCancel> :
Code:
1.02 ----- 8006b028 --- 901f065c -> Branch
# r3 = pad structure belonging to this player

rlwinm. r5, r0, 0, 21, 21
rlwinm  r0, r0, 0, 22, 20
# check for X button

stw r0, 0x65C(r31)
# original instruction, with masked out X button

beq+ _return
# do nothing if button is not pressed

_check_if_held:
lwz r5, 0x4(r3)
rlwinm. r0, r5, 0, 21, 21
beq+ _return
# do nothing if button is being held

_check_if_CPU:
lbz r5, 0x221F(r31)
andi. r0, r5, 0x08
bne- _return
# do nothing if player is CPU controlled

mr r3, r30
bl <ICNCv020_softCancel>
# else, begin cancel

_return:
.long 0

Happy TASing~
 
Last edited:

SWHProGame

Smash Rookie
Joined
Mar 27, 2011
Messages
7
#89
Hey there Punkline Punkline .

First of thanks for your work to making and (re)create the Impossible Cancel for Melee.
I've got an issue on Console (Wii). If I play with the Dol Mod Version it freeze after chancel the ground attacks immediately. For air attacks it works so far (as I stated).

Some Infos:
• Wii 4.1E with the latest HBC Version, latest cIOS (Hermes v5.1mod) and USB-Loader GX v3.0 r1244.
Which code did you install?
• The Dol Mod (v 0.20).
What did you install the code with?
• Melee Code Manager (v4.0).
What version of Melee are you using?
• I'm on Melee 1.02 (ofc).
What codes do you have installed besides this one?
• Only the Normal C-Stick Functionality in 1P Mode.
Are you using Crazy Hand with frame speed modifiers enabled?
• No.
If you're using Melee Code Manager, what code regions do you have enabled?
• Everything except 20XXHP 4.07 Regions but Enable Gecko Codes included.

Should I try the d2x-cIOS v10 instead the Hermes v5.1mod? And maybe try the Gecko Code instead the Dol Mod (or disable the Enable Gecko Codes in the code regions section)?

/SWHProGame
 

Punkline

Dr. Frankenstack
Premium
Joined
May 15, 2015
Messages
355
#90
Hey there Punkline Punkline .

First of thanks for your work to making and (re)create the Impossible Cancel for Melee.
I've got an issue on Console (Wii). If I play with the Dol Mod Version it freeze after chancel the ground attacks immediately. For air attacks it works so far (as I stated).

Some Infos:
• Wii 4.1E with the latest HBC Version, latest cIOS (Hermes v5.1mod) and USB-Loader GX v3.0 r1244.

• The Dol Mod (v 0.20).

• Melee Code Manager (v4.0).

• I'm on Melee 1.02 (ofc).

• Only the Normal C-Stick Functionality in 1P Mode.

• No.

• Everything except 20XXHP 4.07 Regions but Enable Gecko Codes included.

Should I try the d2x-cIOS v10 instead the Hermes v5.1mod? And maybe try the Gecko Code instead the Dol Mod (or disable the Enable Gecko Codes in the code regions section)?

/SWHProGame
Thanks for filling in those details. I don’t currently have my console set up to test this, but I have had a couple of others report that there seem to be problems using the cancel on consoles. Between consoles and emulation, there are sometimes things that may cause crashes in one environment and not the other.

The fact that it doesn’t crash when canceling in the air is a good clue that might help me look into this. The cancel does different things under different circumstances, so it would be helpful in narrowing down the problem if you could tell me more about what ground states seem to cause the crash. Is it everything? A specific character? Just B-specials? Looping animations? Is the crash consistent, or does it only happen sometimes?
 

SWHProGame

Smash Rookie
Joined
Mar 27, 2011
Messages
7
#91
Is it everything? A specific character?
• Any char I think. (tested with C. Falcon, Fox, Falco, Peach, Mario, Luigi, Marth, Roy, [...]) and as I stated any ground move. :/
Looping animations?
• No animations loop, just fully freeze (music still plays and controller rumbles constantly [if activated]).
Is the crash consistent, or does it only happen sometimes?
• With your version it's consistent. If I try the Balanced and Turbo Version from Itaru Itaru which are works so far, I only stated some random freezes.

/SWHProGame
 

Punkline

Dr. Frankenstack
Premium
Joined
May 15, 2015
Messages
355
#92
S SWHProGame - do either of these older gecko code concepts also cause the crash? The new code uses a combination of these codes' cancel methods to make a much cleaner cancel, so if one of them were to not cause a crash then it would help narrow down the cause of the problem:

Code:
$Impossible Cancel v0.1.4b (Melee 1.02) [Punkline]
C206B090 0000002F
48000058 000E0016
001D0026 00CD00CE
00DB00DE 040F5556
57585986 8905055F
60656606 145E6107
075D5E60 610A0B55
560E0E5D 626E1010
5F600000 00000000
10260038 00000000
00000000 00000000
00000000 00000000
7F0802A6 48000005
7FE802A6 7F0803A6
3BFFFFDC 831E06B0
2C180000 418200F4
929F0008 92DF000C
92FF0010 933F0014
92BF0018 8ABE006C
7EB5FA14 831E06B4
2C180000 4082000C
3B000001 9B150000
8B150000 2C180001
408200A4 82DE0070
82FE0064 8A9F0004
A33F0006 7F39F850
A3190000 7C16C000
41800010 A3190002
7C16C000 40810070
3A94FFFC 3B390004
2C140000 4181FFDC
8A9F0005 8B190000
7C17C000 40820030
8F190001 2C180020
4081FFF8 3A800000
2C180020 40810018
63180100 7C16C000
8F190001 41820028
4BFFFFE8 3A94FFFF
3B390001 2C140000
4181FFBC 3B000001
931E0904 931E0908
4800000C 3B000000
9B1F0000 829F0008
82DF000C 82FF0010
833F0014 82BF0018
3BFE0060 7FD8F378
C0228874 00000000
Code:
$Animation Cancel Concept v0.1.2 (Melee 1.02) [Achilles1515] [Punkline]
C206B844 00000007
838306C8 579F0001
41820028 579F06F7
40820020 C022E864
3FE08006 63FFF190
7FE803A6 7C7F1B78
4E800021 7FE3FB78
7C7C1B78 00000000
C2071048 00000006
80A308FC 3CC0447A
7C053000 60650060
40820014 3CC08007
60C611C4 7CC803A6
4E800020 80CA0008
60000000 00000000
 

SWHProGame

Smash Rookie
Joined
Mar 27, 2011
Messages
7
#93
do either of these older gecko code concepts also cause the crash?
• Sadly yes. Crash on every ground move. neutral and b-specials (arials works fine as for 0.20b).
I try to use the impossible and then the animation cancel stand alone.

Impossible Cancel (0.1.4b)
• Freezes right after cancel the move (air, ground and b-specials)
Animation Cancel 0.1.2
• No freeze encounter so far.

/SWHSmash
 
Last edited:

Punkline

Dr. Frankenstack
Premium
Joined
May 15, 2015
Messages
355
#94
• Sadly yes. Crash on every ground move. neutral and b-specials (arials works fine as for 0.20b).
I try to use the impossible and then the animation cancel stand alone.

Impossible Cancel (0.1.4b)
• Freezes right after cancel the move (air, ground and b-specials)
Animation Cancel 0.1.2
• No freeze encounter so far.

/SWHSmash
That’s what I was hoping to hear, thanks. I think I understand the problem now because of your feedback.

The exploit used to create the cancel behavior essentially uses an invalid value in a frame blending variable in order to trigger a transition into the next animation in the action state machine. It would appear that this invalid variable is accepted in the environments I've tested on, but not in yours. This is a unique behavior that is hard to reproduce without modifying several parts of the game, and is used to easily create “continuations” instead of “resets” for certain cancel scenarios.

I will begin developing a new method that relies entirely on animation frames to accomplish the same result. I think it should be possible to get the benefits of the old exploit by directly modifying the AObjs that animate the player joints; as is accomplished in a crude way from the old animation exploit.

I will make a proof of concept soon, and let you know if it works. If it does, you can try it on your setup to see if it causes any problems. If it doesn’t, then I will use it to make an update to this code so that I can finally squash this bug once and for all.
 
Last edited:

Punkline

Dr. Frankenstack
Premium
Joined
May 15, 2015
Messages
355
#96
The animation concept turned out to work well. I think I’ll be able to use it to rewrite the cancel more efficiently.

For now, I’ve got this modified version of the old cancel working without using the animation blend exploit. A few action states may now have some interesting bugs that I still need to look into in more detail. For example, you can now cancel part of sheik’s chain animation in a way where the chain graphic becomes stuck in the air.

Regardless of the possible bugs, it shouldn’t cause any more crashing if the exploit was indeed the cause of the problem.

Can you do me a favor S SWHProGame and test this code on your console setup, and see if it freezes anywhere? If it doesn't, then I'll use it to start developing a new, cleaner version of the code. I'll also see if I can add some of the features sprinkled around in various concepts in this thread.

Code:
-==-

Impossible Cancel 0.21 (concept)
[Punkline]
1.02 ----- 0x8006b090--- C03F0650 -> Branch
C03F0650 C0028874 FC000800 4182002C C03F0654 FC000800 40820020 9061FFF8 7FC3F378 83C1FFF8
bl <ICNCv021_softCancel>
9061FFF8 7FC3F378 83C1FFF8 C0228874 00000000
<ICNCv021_softCancel>
7C0802A6 90010004 9421FF30 D8210008 BC610010 83E3002C 83DF0004 8BBF2073 3B800000 3B600000 3B400000 48000041 7C6802A6 A0830000 5480067F 41820068 7C00E800 40820020 5480C6BE 7C00F000 40820014 549C8FFE 549B97FE 549ACFFE 48000044 A4830002 4BFFFFD0 4E800021 01910194 81138493 0496049C 04A204A9 05948713 47940991 0C948C13 0E940F91 90139313 53941691 16949613 17949713 00000000 807F1A58 2C030000 41820014 8063002C 38000000 90031A4C 480000F8 833F0010 2C190011 408100B0 2C190018 4182004C 2C190027 41820044 2C190029 4180002C 2C19002B 40810034 2C190046 4180001C 2C19004A 40810024 2C1900E9 4180000C 2C1900EC 40810014 2C1D0000 41820068 2C1D0058 41820060 887F221E 60600080 981F221E 807F0000
bl <ICNCv021_animationSpeedCancel>
807F0010 7C03C800 41820010 2C1A0000 4082FED8 48000034 2C1B0000 4082002C 807F0004 2C030007 40820018 807F0010 2C03015E 41820014 2C030161 4182000C 807F0000
bl <ICNCv021_abortActionState>
807F0010 2C03001D 41800034 2C030026 4181002C 2C1C0000 41820024 807F0000 38800001 38A00001 80CDAEB4 C0260340 C0460344 38C00000
bl 0x80096900
8B5F221E 735A007F 9B5F221E B8610010 C8210008 382100D0 80010004 7C0803A6 4E800020
<ICNCv021_animationSpeedCancel>
7C0802A6 90010004 9421FFE8 BFC10010 83E3002C C03F089C D021FFF8 C022E864 807F0000
bl 0x8006f190
807F0000
bl 0x8006eba4
807F0000
bl 0x8006C80C
807F0000
bl 0x8006A360
C002E864 C03F089C FC010000 40820010 C021FFF8 807F0000
bl 0x8006f190
BBC10010 38210018 80010004 7C0803A6 4E800020
<ICNCv021_abortActionState> 1.02
8083002C 800400E0 2C000000 38A00000 38C00000 C0228044 C0428028 C0628060 4082000C 3880000E
b 0x800693ac
3880001D
b 0x800693ac
 
Last edited:

SWHProGame

Smash Rookie
Joined
Mar 27, 2011
Messages
7
#97
Hey Punkline Punkline

sorry for the late reply. I've tested your new concept and for now it works without any issues. Every move are canceled correctly. If I encounter any error or new freeze, I'll write in here. :)

/SWHSmash
 
Last edited:

Sly_

DON'T FAKE THE FUNK ON A NASTY DUNK...
Premium
Joined
Jan 1, 2015
Messages
18
Location
eugene OR
#98
If it's not too hard, any chance you could make a Gecko version of the code? Or if there were any resource for converting MCM mods myself that would be helpful
 

Punkline

Dr. Frankenstack
Premium
Joined
May 15, 2015
Messages
355
#99
If it's not too hard, any chance you could make a Gecko version of the code? Or if there were any resource for converting MCM mods myself that would be helpful
Sure. The code is a bit too complex to simply convert like normal, but when I rewrite it I’ll be sure to implement some mytoc pointers so that refactoring it as a gecko code will be easier to do.

In general though, codes made with standalone functions will require some extra steps before they can work as gecko codes. With mytoc pointers, it'll be easier to update this code in the future with gecko support. It’ll probably be a little while before I get to work on it, but I’ll also be sure to implement some new options for configuring which button(s) trigger the cancel.
 
Last edited:
Top