don't click here

Projectile reflecting shield

Discussion in 'Engineering & Reverse Engineering' started by Hitaxas, Mar 30, 2008.

Thread Status:
Not open for further replies.
  1. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    I am porting over the projectile reflecting shield from S3 to S2, and I believe I have everything converted correctly, but it still won't work.

    Here's the code

    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='geshimain'><!--eg1--><pre class="asm">[color= #adadad; font-style: italic;]; loc_3F862:[/color]
    Touch_ChkHurt: [color= #adadad; font-style: italic;]; XREF: Touch_ChkValue[/color]
    [color= #00bfff;]tst[/color].[color= #00bfff;]b[/color] <span style="">(</span>[color= #ff0000;]$[/color][color= #ff0000;]FFFFFE2D[/color]<span style="">)</span>.[color= #00bfff;]w[/color] [color= #adadad; font-style: italic;]; is Sonic invincible?[/color]
    [color= #00bfff;]beq[/color] Touch_Hurt [color= #adadad; font-style: italic;]; if not, branch[/color]
    &nbsp;
    loc_1AFE6: [color= #adadad; font-style: italic;]; XREF: Touch_Hurt[/color]
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]-1[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]rts[/color]
    &nbsp;
    Touch_ChkHurt2:
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;]2B[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] Touch_ChkHurt_Bounce_Projectile [color= #adadad; font-style: italic;];return_15AC4[/color]
    [color= #00bfff;]tst[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]30[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] return_15AC4
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]4[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]24[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bcc[/color].[color= #00bfff;]s[/color] return_15AC4
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] [color= #ff0000;]$[/color][color= #ff0000;]C[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]12[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]ext[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">d0</span>
    [color= #00bfff;]asl[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">d0</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">d3</span>,[color= #ff0000;]$[/color][color= #ff0000;]C[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">a0</span>,<span style="font-weight:bold;">a2</span>
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">a1</span>,<span style="font-weight:bold;">a0</span>
    [color= #00bfff;]jsr[/color] <span style="">(</span>HurtSonic<span style="">)</span>.[color= #00bfff;]l[/color]
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">a2</span>,<span style="font-weight:bold;">a0</span>
    &nbsp;
    return_15AC4:
    [color= #00bfff;]rts[/color]

    Touch_ChkHurt_NoPowerUp: [color= #adadad; font-style: italic;]; CODE XREF: sub_FE6E+3B8j[/color]
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]21[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]bne[/color] Touch_ChkHurt2
    &nbsp;
    Touch_ChkHurt_HaveShield: [color= #adadad; font-style: italic;]; CODE XREF: sub_FE6E+3C6j[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;]2B[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]andi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]beq[/color] Touch_ChkHurt2
    &nbsp;
    Touch_ChkHurt_Bounce_Projectile: [color= #adadad; font-style: italic;]; reflects bee's energy bullet[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]10[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]12[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]10[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]12[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcAngle<span style="">)</span>.[color= #00bfff;]l[/color] [color= #adadad; font-style: italic;];GetArcTan[/color]
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcSine<span style="">)</span>.[color= #00bfff;]l[/color]
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]18[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,[color= #ff0000;]$[/color][color= #ff0000;]1A[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]clr[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]28[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bra[/color] return_15AC4</pre><!--gc2--><!--OyBsb2NfM0Y4NjI6ClRvdWNoX0Noa0h1cnQ6CQkJCTsgWFJFRjogVG91Y2hfQ2hrVmFsdWUKCQl0c3Qu
    YgkoJiMwMzY7RkZGRkZFMkQpLncJOyBpcyBTb25pYyBpbnZpbmNpYmxlPwoJCWJlcQlUb3VjaF9IdXJ0C
    TsgaWYgbm90LCBicmFuY2gKCmxvY18xQUZFNjoJCQkJOyBYUkVGOiBUb3VjaF9IdXJ0CgkJbW92ZXEJIy
    0xLGQwCgkJcnRzCgpUb3VjaF9DaGtIdXJ0MjoKCWJ0c3QJIzEsJiMwMzY7MkIoYTEpCglibmUucwlUb3V
    jaF9DaGtIdXJ0X0JvdW5jZV9Qcm9qZWN0aWxlIDtyZXR1cm5fMTVBQzQKCXRzdC53CSYjMDM2OzMwKGEx
    KQoJYm5lLnMJcmV0dXJuXzE1QUM0CgljbXBpLmIJIzQsJiMwMzY7MjQoYTEpCgliY2MucwlyZXR1cm5fM
    TVBQzQKCW1vdmUubAkmIzAzNjtDKGExKSxkMwoJbW92ZS53CSYjMDM2OzEyKGExKSxkMAoJZXh0LmwJZD
    AKCWFzbC5sCSM4LGQwCglzdWIubAlkMCxkMwoJbW92ZS5sCWQzLCYjMDM2O0MoYTEpCgltb3ZlYS5sCWE
    wLGEyCgltb3ZlYS5sCWExLGEwCglqc3IJKEh1cnRTb25pYykubAoJbW92ZWEubAlhMixhMAoKcmV0dXJu
    XzE1QUM0OgoJcnRzCgkKVG91Y2hfQ2hrSHVydF9Ob1Bvd2VyVXA6CQk7IENPREUgWFJFRjogc3ViX0ZFN
    kUrM0I4GGoKCQljbXBpLmIJIzEsJiMwMzY7MjEoYTApCgkJYm5lCVRvdWNoX0Noa0h1cnQyCgpUb3VjaF
    9DaGtIdXJ0X0hhdmVTaGllbGQ6CQk7IENPREUgWFJFRjogc3ViX0ZFNkUrM0M2GGoKCQltb3ZlLmIJJiM
    wMzY7MkIoYTEpLGQwCgkJYW5kaS5iCSM4LGQwCgkJYmVxCVRvdWNoX0Noa0h1cnQyCgpUb3VjaF9DaGtI
    dXJ0X0JvdW5jZV9Qcm9qZWN0aWxlOgk7IHJlZmxlY3RzIGJlZSYjMzk7cyBlbmVyZ3kgYnVsbGV0CgkJb
    W92ZS53CSYjMDM2OzEwKGEwKSxkMQoJCW1vdmUudwkmIzAzNjsxMihhMCksZDIKCQlzdWIudwkmIzAzNj
    sxMChhMSksZDEKCQlzdWIudwkmIzAzNjsxMihhMSksZDIKCQlqc3IJKENhbGNBbmdsZSkubCA7R2V0QXJ
    jVGFuCgkJanNyCShDYWxjU2luZSkubAoJCW11bHMudwkjLSYjMDM2OzgwMCxkMQoJCWFzci5sCSM4LGQx
    CgkJbW92ZS53CWQxLCYjMDM2OzE4KGExKQoJCW11bHMudwkjLSYjMDM2OzgwMCxkMAoJCWFzci5sCSM4L
    GQwCgkJbW92ZS53CWQwLCYjMDM2OzFBKGExKQoJCWNsci5iCSYjMDM2OzI4KGExKQoJCWJyYQlyZXR1cm
    5fMTVBQzQ=--><!--egc2--><!--g2--></div><!--eg2-->
     
  2. JoseTB

    JoseTB

    Tech Member
    717
    59
    28
    Shouldn't that be a0? Unless I'm missing something else, I don't know if you want everything to bounce.
     
  3. Dracula

    Dracula

    Oldbie
    605
    0
    16
    I'm watching you!
    Converting NES Mappers to MMC5
    Try this:

    Code (Text):
    1. Touch_ChkHurt:          ; CODE XREF: sub_FE6E+17Cj
    2.                 ; sub_FE6E+27Ej ...
    3.     move.b  $2B(a0),d0
    4.     andi.b  #$73,d0; 's'
    5.     beq.s   Touch_ChkHurt_NoPowerUp
    6.     and.b   status_secondary(a1),d0
    7.     bne.s   Touch_NoHurt
    8.     btst    #0,status_secondary(a0)
    9.     bne.s   Touch_ChkHurt_HaveShield
    10.        
    11. ; ===========================================================================      
    12.  
    13. ; loc_3F862:
    14. Touch_ChkHurt3:
    15.     btst    #1,status_secondary(a0); is Sonic invincible?
    16.     beq.s   Touch_Hurt  ; if not, branch
    17. ; loc_3F86A:
    18. Touch_NoHurt:
    19.     moveq   #-1,d0
    20.     rts
    21. ; ===========================================================================  
    22.    
    23. Touch_ChkHurt_NoPowerUp:    ; CODE XREF: sub_FE6E+3B8j
    24.     cmpi.b  #1,double_jump(a0)
    25.     bne.s   Touch_ChkHurt3
    26.  
    27. Touch_ChkHurt_HaveShield:   ; CODE XREF: sub_FE6E+3C6j
    28.     move.b  status_secondary(a1),d0
    29.     andi.b  #8,d0
    30.     beq.s   Touch_ChkHurt3
    31.  
    32. Touch_ChkHurt_Bounce_Projectile:; CODE XREF: sub_1050C+8Aj
    33.     move.w  $10(a0),d1
    34.     move.w  $14(a0),d2
    35.     sub.w   $10(a1),d1
    36.     sub.w   $14(a1),d2
    37.     jsr (CalcAngle).l
    38.     jsr (CalcSine).l
    39.     muls.w  #-$800,d1
    40.     asr.l   #8,d1
    41.     move.w  d1,x_vel(a1)
    42.     muls.w  #-$800,d0
    43.     asr.l   #8,d0
    44.     move.w  d0,y_vel(a1)
    45.     clr.b   $28(a1)
    46.     bra.s   Touch_NoHurt








    Change "bne.s Touch_ChkHurt_Bounce_Projectile" into "jsr Touch_ChkHurt_Bounce_Projectile"
     
  4. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    Dracula, that didn't work either.


    Is there something I have to do to calcangle and calcsine?
     
  5. If you're calling the bouncing routine from Touch_ChkHurt2, it expects the character to be at a1 and the projectile at a0. Also, some conversions seem to be incorrect when compared to Sonic 3k's code. This should work:

    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='geshimain'><!--eg1--><pre class="asm">Touch_ChkHurt_Bounce_Projectile: [color= #adadad; font-style: italic;]; reflects bee's energy bullet[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcAngle<span style="">)</span>.[color= #00bfff;]l[/color] [color= #adadad; font-style: italic;];GetArcTan[/color]
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcSine<span style="">)</span>.[color= #00bfff;]l[/color]
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,x_vel<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,y_vel<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]clr[/color].[color= #00bfff;]b[/color] collision_flags<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]bra[/color] return_15AC4</pre><!--gc2--><!--VG91Y2hfQ2hrSHVydF9Cb3VuY2VfUHJvamVjdGlsZToJOyByZWZsZWN0cyBiZWUmIzM5O3MgZW5lcmd5
    IGJ1bGxldAoJCW1vdmUudwl4X3BvcyhhMSksZDEKCQltb3ZlLncJeV9wb3MoYTEpLGQyCgkJc3ViLncJe
    F9wb3MoYTApLGQxCgkJc3ViLncJeV9wb3MoYTApLGQyCgkJanNyCShDYWxjQW5nbGUpLmwgO0dldEFyY1
    RhbgoJCWpzcgkoQ2FsY1NpbmUpLmwKCQltdWxzLncJIy0mIzAzNjs4MDAsZDEKCQlhc3IubAkjOCxkMQo
    JCW1vdmUudwlkMSx4X3ZlbChhMCkKCQltdWxzLncJIy0mIzAzNjs4MDAsZDAKCQlhc3IubAkjOCxkMAoJ
    CW1vdmUudwlkMCx5X3ZlbChhMCkKCQljbHIuYgljb2xsaXNpb25fZmxhZ3MoYTApCgkJYnJhCXJldHVyb
    l8xNUFDNA==--><!--egc2--><!--g2--></div><!--eg2-->
    Also,

    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='codemain'><!--eg1--><pre class="asm"> [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;]2B[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] Touch_ChkHurt_Bounce_Projectile [color= #adadad; font-style: italic;];return_15AC4[/color]</pre><!--gc2--><!--CQlidHN0CSMxLCYjMDM2OzJCKGExKQoJCWJuZS5zCVRvdWNoX0Noa0h1cnRfQm91bmNlX1Byb2plY3Rp
    bGUgO3JldHVybl8xNUFDNA==--><!--egc2--><!--g2--></div><!--eg2-->
    is wrong, that checks for invincibility and not a shield.
     
  6. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    Still fails to work, which is strange.

    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='geshimain'><!--eg1--><pre class="asm">[color= #adadad; font-style: italic;]; loc_3F862:[/color]
    Touch_ChkHurt: [color= #adadad; font-style: italic;]; CODE XREF: sub_FE6E+17Cj[/color]
    [color= #adadad; font-style: italic;]; sub_FE6E+27Ej ...[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;]2B[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]andi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]73[/color][/color],<span style="font-weight:bold;">d0</span>[color= #adadad; font-style: italic;]; 's'[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Touch_ChkHurt_NoPowerUp
    [color= #00bfff;]and[/color].[color= #00bfff;]b[/color] status_secondary<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] Touch_NoHurt
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],status_secondary<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] Touch_ChkHurt_HaveShield
    &nbsp;
    [color= #adadad; font-style: italic;]; =========================================================================== [/color]
    Touch_ChkHurt2:
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;]2B[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] return_15AC4
    &nbsp;
    [color= #00bfff;]tst[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]30[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] return_15AC4
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]4[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]24[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bcc[/color].[color= #00bfff;]s[/color] return_15AC4
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] [color= #ff0000;]$[/color][color= #ff0000;]C[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]12[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]ext[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">d0</span>
    [color= #00bfff;]asl[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">d0</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">d3</span>,[color= #ff0000;]$[/color][color= #ff0000;]C[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">a0</span>,<span style="font-weight:bold;">a2</span>
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">a1</span>,<span style="font-weight:bold;">a0</span>
    [color= #00bfff;]jsr[/color] <span style="">(</span>HurtSonic<span style="">)</span>.[color= #00bfff;]l[/color]
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">a2</span>,<span style="font-weight:bold;">a0</span>
    &nbsp;
    return_15AC4:
    [color= #00bfff;]rts[/color]
    &nbsp;
    [color= #adadad; font-style: italic;]; loc_3F862:[/color]
    Touch_ChkHurt3:
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],status_secondary<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>[color= #adadad; font-style: italic;]; is Sonic invincible?[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Touch_Hurt [color= #adadad; font-style: italic;]; if not, branch[/color]
    [color= #adadad; font-style: italic;]; loc_3F86A:[/color]
    Touch_NoHurt:
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]-1[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; =========================================================================== [/color]

    Touch_ChkHurt_NoPowerUp: [color= #adadad; font-style: italic;]; CODE XREF: sub_FE6E+3B8j[/color]
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]21[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] Touch_ChkHurt3
    &nbsp;
    Touch_ChkHurt_HaveShield: [color= #adadad; font-style: italic;]; CODE XREF: sub_FE6E+3C6j[/color]
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]4B[/color],[color= #ff0000;]0[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bne[/color] Touch_ChkHurt_Bounce_Projectile
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] status_secondary<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]andi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Touch_ChkHurt3
    &nbsp;
    Touch_ChkHurt_Bounce_Projectile: [color= #adadad; font-style: italic;]; reflects bee's energy bullet[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcAngle<span style="">)</span>.[color= #00bfff;]l[/color] [color= #adadad; font-style: italic;];GetArcTan[/color]
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcSine<span style="">)</span>.[color= #00bfff;]l[/color]
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,x_vel<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,y_vel<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]clr[/color].[color= #00bfff;]b[/color] collision_flags<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]bra[/color] return_15AC4
    [color= #adadad; font-style: italic;]; ---------------------------------------------------------------------------[/color]
    [color= #adadad; font-style: italic;]; loc_3F86E:[/color]
    Touch_Hurt:
    [color= #00bfff;]nop[/color]
    [color= #00bfff;]tst[/color].[color= #00bfff;]w[/color] invulnerable_time<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] Touch_NoHurt
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">a1</span>,<span style="font-weight:bold;">a2</span>
    [color= #adadad; font-style: italic;]; End of function TouchResponse[/color]
    [color= #adadad; font-style: italic;]; continue straight to HurtSonic[/color]</pre><!--gc2--><!--OyBsb2NfM0Y4NjI6ClRvdWNoX0Noa0h1cnQ6ICAgICAgICAgICAgOyBDT0RFIFhSRUY6IHN1Yl9GRTZF
    KzE3QxhqCiAgICAgICAgICAgICAgICA7IHN1Yl9GRTZFKzI3RRhqIC4uLgogICAgbW92ZS5iICAgICYjM
    DM2OzJCKGEwKSxkMAogICAgYW5kaS5iICAgICMmIzAzNjs3MyxkMDsgJiMzOTtzJiMzOTsKICAgIGJlcS
    5zICAgIFRvdWNoX0Noa0h1cnRfTm9Qb3dlclVwCiAgICBhbmQuYiAgICBzdGF0dXNfc2Vjb25kYXJ5KGE
    xKSxkMAogICAgYm5lLnMgICAgVG91Y2hfTm9IdXJ0CiAgICBidHN0ICAgICMwLHN0YXR1c19zZWNvbmRh
    cnkoYTApCiAgICBibmUucyAgICBUb3VjaF9DaGtIdXJ0X0hhdmVTaGllbGQKCjsgPT09PT09PT09PT09P
    T09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT
    09ICAgICAgICAKVG91Y2hfQ2hrSHVydDI6CglidHN0CSMxLCYjMDM2OzJCKGExKQoJYm5lLnMJcmV0dXJ
    uXzE1QUM0CgoJdHN0LncJJiMwMzY7MzAoYTEpCglibmUucwlyZXR1cm5fMTVBQzQKCWNtcGkuYgkjNCwm
    IzAzNjsyNChhMSkKCWJjYy5zCXJldHVybl8xNUFDNAoJbW92ZS5sCSYjMDM2O0MoYTEpLGQzCgltb3ZlL
    ncJJiMwMzY7MTIoYTEpLGQwCglleHQubAlkMAoJYXNsLmwJIzgsZDAKCXN1Yi5sCWQwLGQzCgltb3ZlLm
    wJZDMsJiMwMzY7QyhhMSkKCW1vdmVhLmwJYTAsYTIKCW1vdmVhLmwJYTEsYTAKCWpzcgkoSHVydFNvbml
    jKS5sCgltb3ZlYS5sCWEyLGEwCgpyZXR1cm5fMTVBQzQ6CglydHMKCjsgbG9jXzNGODYyOgpUb3VjaF9D
    aGtIdXJ0MzoKICAgIGJ0c3QgICAgIzEsc3RhdHVzX3NlY29uZGFyeShhMCk7IGlzIFNvbmljIGludmluY
    2libGU/CiAgICBiZXEucyAgICBUb3VjaF9IdXJ0ICAgIDsgaWYgbm90LCBicmFuY2gKOyBsb2NfM0Y4NkE6ClRv
    dWNoX05vSHVydDoKICAgIG1vdmVxICAgICMtMSxkMAogICAgcnRzCjsgPT09PT09PT09PT09PT09PT09P
    T09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgIA
    ogICAgClRvdWNoX0Noa0h1cnRfTm9Qb3dlclVwOiAgICA7IENPREUgWFJFRjogc3ViX0ZFNkUrM0I4GGo
    KICAgIGNtcGkuYiAgICAjMSwmIzAzNjsyMShhMCkKICAgIGJuZS5zICAgIFRvdWNoX0Noa0h1cnQzCgpU
    b3VjaF9DaGtIdXJ0X0hhdmVTaGllbGQ6ICAgIDsgQ09ERSBYUkVGOiBzdWJfRkU2RSszQzYYagogICAgY
    21waS5iCSMmIzAzNjs0QiwwKGExKQogICAgYm5lICAgICAgVG91Y2hfQ2hrSHVydF9Cb3VuY2VfUHJvam
    VjdGlsZQogICAgbW92ZS5iICAgIHN0YXR1c19zZWNvbmRhcnkoYTEpLGQwCiAgICBhbmRpLmIgICAgIzg
    sZDAKICAgIGJlcS5zICAgIFRvdWNoX0Noa0h1cnQzCgpUb3VjaF9DaGtIdXJ0X0JvdW5jZV9Qcm9qZWN0
    aWxlOgk7IHJlZmxlY3RzIGJlZSYjMzk7cyBlbmVyZ3kgYnVsbGV0CgkJbW92ZS53CXhfcG9zKGExKSxkM
    QoJCW1vdmUudwl5X3BvcyhhMSksZDIKCQlzdWIudwl4X3BvcyhhMCksZDEKCQlzdWIudwl5X3BvcyhhMC
    ksZDIKCQlqc3IJKENhbGNBbmdsZSkubCA7R2V0QXJjVGFuCgkJanNyCShDYWxjU2luZSkubAoJCW11bHM
    udwkjLSYjMDM2OzgwMCxkMQoJCWFzci5sCSM4LGQxCgkJbW92ZS53CWQxLHhfdmVsKGEwKQoJCW11bHMu
    dwkjLSYjMDM2OzgwMCxkMAoJCWFzci5sCSM4LGQwCgkJbW92ZS53CWQwLHlfdmVsKGEwKQoJCWNsci5iC
    WNvbGxpc2lvbl9mbGFncyhhMCkKCQlicmEJcmV0dXJuXzE1QUM0CjsgLS0tLS0tLS0tLS0tLS0tLS0tLS
    0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjsgbG9
    jXzNGODZFOgpUb3VjaF9IdXJ0OgoJbm9wCgl0c3QudwlpbnZ1bG5lcmFibGVfdGltZShhMCkKCWJuZS5z
    CVRvdWNoX05vSHVydAoJbW92ZWEubAlhMSxhMgo7IEVuZCBvZiBmdW5jdGlvbiBUb3VjaFJlc3BvbnNlC
    jsgY29udGludWUgc3RyYWlnaHQgdG8gSHVydFNvbmlj--><!--egc2--><!--g2--></div><!--eg2-->
     
  7. That would be because you're calling it from Touch_ChkHurt now, so the player is in a0 and the projectile in a1. In Touch_ChkHurt_Bounce_Projectile, swap a1 and a0 around. That should work.
     
  8. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    That still doesn't work... I have no clue why either.
     
  9. You have remembered to set the secondary status bitfield of whichever object you want to bounce to #8 right? That's the only reason I can think of for it not working.
     
  10. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    Now THAT might be why it doesn't work. =X

    I will check right now.


    EDIT:
    Code (Text):
    1. error: invalid bit position
    2. > > >   bset    #8,status_secondary(a1)
    ...what?
     
  11. Aurochs

    Aurochs

    Единый, могучий Советский Союз! Tech Member
    2,343
    0
    0
    Whatever catches my fancy
    You want to set bit 7, not 8.
     
  12. Nope, he needs to set bit 3, since he's ANDing by 8
     
  13. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    Alright, so I set the bit for 3, it compiles. I go to test it and... it still won't work. It seems I have the best of luck with S3. :(
     
  14. Where have you placed the bset? Why does it use a1?
     
  15. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    I tried a number of places, but the places I put it were all part of the buzz bomber object. Also, I notice it was a1 and changed to a0.

    EDIT: Keep in mind, this is meant to work with the normal shield and the others as well.
     
  16. Go to loc_2D24E and after
    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='codemain'><!--eg1--><pre class="asm"> [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]6[/color],routine<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span></pre><!--gc2--><!--CW1vdmUuYgkjNixyb3V0aW5lKGExKQ==--><!--egc2--><!--g2--></div><!--eg2-->
    add
    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='codemain'><!--eg1--><pre class="asm"> [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],status_secondary<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span></pre><!--gc2--><!--CW1vdmUuYgkjOCxzdGF0dXNfc2Vjb25kYXJ5KGExKQ==--><!--egc2--><!--g2--></div><!--eg2-->
    That should work.
     
  17. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    You mean

    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='codemain'><!--eg1--><pre class="asm">[color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],status_secondary<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span></pre><!--gc2--><!--bW92ZS5iCSMzLHN0YXR1c19zZWNvbmRhcnkoYTEp--><!--egc2--><!--g2--></div><!--eg2-->


    right? since #8 is invalid in S2.
     
  18. Uh no I don't, a MOVE of #8 is perfectly valid. A bit operation on bit #8 on a non-register operand is invalid.
     
  19. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    Ah, I see. I didn't notice that.

    Also. The bullet will now pass through Sonic if he has a shield, rather than bouncing off... any ideas why?
     
  20. All right, since I finally have my computer back (motherboard failure, ugh), I tested this out and got it working properly. There are actually two projectile response routines, one which was labeled by Stealth (the one you ported) and the other at $1041E, which isn't. Anyway, the code which works for me:

    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='geshimain'><!--eg1--><pre class="asm">Touch_ChkHurt:
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] status_secondary<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]and[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]73[/color][/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Touch_ChkHurt_NoPowerUp
    [color= #00bfff;]cmp[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]98[/color][/color],<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; miscellaneous projectiles which use $2B of the SST for something else[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Touch_ChkHurt_BounceProjectile
    [color= #00bfff;]and[/color].[color= #00bfff;]b[/color] status_secondary<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] Touch_NoHurt
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],status_secondary<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] Touch_ChkHurt_HaveShield

    Touch_ChkHurt3:
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],status_secondary<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; is Sonic invincible?[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Touch_Hurt [color= #adadad; font-style: italic;]; if not, branch[/color]
    [color= #adadad; font-style: italic;]; loc_3F86A:[/color]
    Touch_NoHurt:
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]-1[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ---------------------------------------------------------------------------[/color]
    &nbsp;
    Touch_ChkHurt_NoPowerUp:
    [color= #00bfff;]cmp[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],double_jump_flag<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] Touch_ChkHurt3

    Touch_ChkHurt_HaveShield:
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] status_secondary<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]and[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Touch_ChkHurt3

    Touch_ChkHurt_BounceProjectile:
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcAngle<span style="">)</span>.[color= #00bfff;]l[/color]
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcSine<span style="">)</span>.[color= #00bfff;]l[/color]
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,x_vel<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,y_vel<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]clr[/color].[color= #00bfff;]b[/color] collision_flags<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bra[/color].[color= #00bfff;]s[/color] Touch_NoHurt
    [color= #adadad; font-style: italic;]; ---------------------------------------------------------------------------[/color]
    [color= #adadad; font-style: italic;]; loc_3F86E:[/color]
    Touch_Hurt:
    ...</pre><!--gc2--><!--VG91Y2hfQ2hrSHVydDoKCW1vdmUuYglzdGF0dXNfc2Vjb25kYXJ5KGEwKSxkMAoJYW5kLmIJIyYjMDM2
    OzczLGQwCgliZXEucwlUb3VjaF9DaGtIdXJ0X05vUG93ZXJVcAoJY21wLmIJIyYjMDM2Ozk4LChhMSkJO
    yBtaXNjZWxsYW5lb3VzIHByb2plY3RpbGVzIHdoaWNoIHVzZSAmIzAzNjsyQiBvZiB0aGUgU1NUIGZvci
    Bzb21ldGhpbmcgZWxzZQoJYmVxLnMJVG91Y2hfQ2hrSHVydF9Cb3VuY2VQcm9qZWN0aWxlCglhbmQuYgl
    zdGF0dXNfc2Vjb25kYXJ5KGExKSxkMAoJYm5lLnMJVG91Y2hfTm9IdXJ0CglidHN0CSMwLHN0YXR1c19z
    ZWNvbmRhcnkoYTApCglibmUucwlUb3VjaF9DaGtIdXJ0X0hhdmVTaGllbGQKCQpUb3VjaF9DaGtIdXJ0M
    zoKCWJ0c3QJIzEsc3RhdHVzX3NlY29uZGFyeShhMCkJOyBpcyBTb25pYyBpbnZpbmNpYmxlPwoJYmVxLn
    MJVG91Y2hfSHVydAkJOyBpZiBub3QsIGJyYW5jaAo7IGxvY18zRjg2QToKVG91Y2hfTm9IdXJ0OgoJbW9
    2ZXEJIy0xLGQwCglydHMKOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
    LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRvdWNoX0Noa0h1cnRfTm9Qb3dlclVwOgoJY
    21wLmIJIzEsZG91YmxlX2p1bXBfZmxhZyhhMCkKCWJuZS5zCVRvdWNoX0Noa0h1cnQzCgkKVG91Y2hfQ2
    hrSHVydF9IYXZlU2hpZWxkOgoJbW92ZS5iCXN0YXR1c19zZWNvbmRhcnkoYTEpLGQwCglhbmQuYgkjOCx
    kMAoJYmVxLnMJVG91Y2hfQ2hrSHVydDMKCQpUb3VjaF9DaGtIdXJ0X0JvdW5jZVByb2plY3RpbGU6Cglt
    b3ZlLncJeF9wb3MoYTApLGQxCgltb3ZlLncJeV9wb3MoYTApLGQyCglzdWIudwl4X3BvcyhhMSksZDEKC
    XN1Yi53CXlfcG9zKGExKSxkMgoJanNyCShDYWxjQW5nbGUpLmwKCWpzcgkoQ2FsY1NpbmUpLmwKCW11bH
    MudwkjLSYjMDM2OzgwMCxkMQoJYXNyLmwJIzgsZDEKCW1vdmUudwlkMSx4X3ZlbChhMSkKCW11bHMudwk
    jLSYjMDM2OzgwMCxkMAoJYXNyLmwJIzgsZDAKCW1vdmUudwlkMCx5X3ZlbChhMSkKCWNsci5iCWNvbGxp
    c2lvbl9mbGFncyhhMSkKCWJyYS5zCVRvdWNoX05vSHVydAo7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
    S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7IGxvY18zRj
    g2RToKVG91Y2hfSHVydDoKCS4uLg==--><!--egc2--><!--g2--></div><!--eg2-->

    This was the second routine. The first one is basically the same, but instead of using the player's width, it uses the shield's width. It isn't necessary to have this, but if you don't, it'll look like projectiles are bouncing off the player rather than bouncing off the shield.

    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='geshimain'><!--eg1--><pre class="asm">[color= #adadad; font-style: italic;]; ---------------------------------------------------------------------------[/color]
    [color= #adadad; font-style: italic;]; Projectile touch response subroutine - $20(a0) in the object RAM[/color]
    [color= #adadad; font-style: italic;]; collides Sonic with projectiles in the level[/color]
    [color= #adadad; font-style: italic;]; ---------------------------------------------------------------------------[/color]
    &nbsp;
    [color= #adadad; font-style: italic;]; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||[/color]
    &nbsp;
    &nbsp;
    ProjectileResponse:
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] status_secondary<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]andi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]71[/color][/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] ProjectileResponse_Done
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]subi[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]18[/color][/color],<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]subi[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]18[/color][/color],<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]30[/color][/color],<span style="font-weight:bold;">d4</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]30[/color][/color],<span style="font-weight:bold;">d5</span>
    [color= #00bfff;]lea[/color] <span style="">(</span>Object_RAM+[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]400[/color][/color]<span style="">)</span>.[color= #00bfff;]w[/color],<span style="font-weight:bold;">a1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]6F[/color],<span style="font-weight:bold;">d6</span>
    &nbsp;
    Projectile_Loop:
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] collision_flags<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]andi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]C0[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]80[/color][/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Projectile_Height
    &nbsp;
    Projectile_Next:
    [color= #00bfff;]lea[/color] next_object<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">a1</span> [color= #adadad; font-style: italic;]; load obj address ; goto next object[/color]
    [color= #00bfff;]dbf[/color] <span style="font-weight:bold;">d6</span>,Projectile_Loop [color= #adadad; font-style: italic;]; repeat 6F more times[/color]
    &nbsp;
    ProjectileResponse_Done:
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ---------------------------------------------------------------------------[/color]
    &nbsp;
    Projectile_Height:
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] collision_flags<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]andi[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]3F[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Projectile_Next
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]lea[/color] <span style="">(</span>Touch_Sizes<span style="">)</span>.[color= #00bfff;]l[/color],<span style="font-weight:bold;">a2</span>
    [color= #00bfff;]lea[/color] <span style="">(</span><span style="font-weight:bold;">a2</span>,<span style="font-weight:bold;">d0</span>.[color= #00bfff;]w[/color]<span style="">)</span>,<span style="font-weight:bold;">a2</span>
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] <span style="">(</span><span style="font-weight:bold;">a2</span><span style="">)</span>+,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bcc[/color].[color= #00bfff;]s[/color] Projectile_CheckHeight
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bcs[/color].[color= #00bfff;]s[/color] Projectile_Width
    [color= #00bfff;]bra[/color].[color= #00bfff;]s[/color] Projectile_Next
    [color= #adadad; font-style: italic;]; ---------------------------------------------------------------------------[/color]
    &nbsp;
    Projectile_CheckHeight:
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d4</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bhi[/color].[color= #00bfff;]s[/color] Projectile_Next
    &nbsp;
    Projectile_Width:
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] <span style="">(</span><span style="font-weight:bold;">a2</span><span style="">)</span>+,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bcc[/color].[color= #00bfff;]s[/color] Projectile_CheckWidth
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bcs[/color].[color= #00bfff;]w[/color] Projectile_Bounce
    [color= #00bfff;]bra[/color].[color= #00bfff;]s[/color] Projectile_Next
    [color= #adadad; font-style: italic;]; ---------------------------------------------------------------------------[/color]
    &nbsp;
    Projectile_CheckWidth:
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d5</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bhi[/color].[color= #00bfff;]s[/color] Projectile_Next
    &nbsp;
    Projectile_Bounce:
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]98[/color][/color],<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; miscellaneous projectiles which use $2B of the SST for something else[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] +
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] status_secondary<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]andi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] Projectile_Next
    +
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] x_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] y_pos<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcAngle<span style="">)</span>.[color= #00bfff;]l[/color]
    [color= #00bfff;]jsr[/color] <span style="">(</span>CalcSine<span style="">)</span>.[color= #00bfff;]l[/color]
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,x_vel<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]muls[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]800[/color][/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]asr[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,y_vel<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]clr[/color].[color= #00bfff;]b[/color] collision_flags<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; End of function ProjectileResponse[/color]</pre><!--gc2--><!--OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
    LS0tLS0tLS0tLS0tLS0tLS0KOyBQcm9qZWN0aWxlIHRvdWNoIHJlc3BvbnNlIHN1YnJvdXRpbmUgLSAmI
    zAzNjsyMChhMCkgaW4gdGhlIG9iamVjdCBSQU0KOyBjb2xsaWRlcyBTb25pYyB3aXRoIHByb2plY3RpbG
    VzIGluIHRoZSBsZXZlbAo7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
    tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKOyB8fHx8fHx8fHx8fHx8fHwgUyBVIEIgUiBP
    IFUgVCBJIE4gRSB8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHwKCgpQcm9qZWN0a
    WxlUmVzcG9uc2U6Cgltb3ZlLmIJc3RhdHVzX3NlY29uZGFyeShhMCksZDAKCWFuZGkuYgkjJiMwMzY7Nz
    EsZDAKCWJlcS5zCVByb2plY3RpbGVSZXNwb25zZV9Eb25lCgltb3ZlLncJeF9wb3MoYTApLGQyCgltb3Z
    lLncJeV9wb3MoYTApLGQzCglzdWJpLncJIyYjMDM2OzE4LGQyCglzdWJpLncJIyYjMDM2OzE4LGQzCglt
    b3ZlLncJIyYjMDM2OzMwLGQ0Cgltb3ZlLncJIyYjMDM2OzMwLGQ1CglsZWEJKE9iamVjdF9SQU0rJiMwM
    zY7NDAwKS53LGExCgltb3ZlLncJIyYjMDM2OzZGLGQ2CgpQcm9qZWN0aWxlX0xvb3A6Cgltb3ZlLmIJY2
    9sbGlzaW9uX2ZsYWdzKGExKSxkMAoJYW5kaS5iCSMmIzAzNjtDMCxkMAoJY21waS5iCSMmIzAzNjs4MCx
    kMAoJYmVxLnMJUHJvamVjdGlsZV9IZWlnaHQKClByb2plY3RpbGVfTmV4dDoKCWxlYQluZXh0X29iamVj
    dChhMSksYTEgOyBsb2FkIG9iaiBhZGRyZXNzIDsgZ290byBuZXh0IG9iamVjdAoJZGJmCWQ2LFByb2plY
    3RpbGVfTG9vcCA7IHJlcGVhdCA2RiBtb3JlIHRpbWVzCgpQcm9qZWN0aWxlUmVzcG9uc2VfRG9uZToKCX
    J0cwkKOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
    tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClByb2plY3RpbGVfSGVpZ2h0OgoJbW92ZS5iCWNvbGxpc2lvbl9m
    bGFncyhhMSksZDAKCWFuZGkudwkjJiMwMzY7M0YsZDAKCWJlcS5zCVByb2plY3RpbGVfTmV4dAoJYWRkL
    ncJZDAsZDAKCWxlYQkoVG91Y2hfU2l6ZXMpLmwsYTIKCWxlYQkoYTIsZDAudyksYTIKCW1vdmVxCSMwLG
    QxCgltb3ZlLmIJKGEyKSssZDEKCW1vdmUudwl4X3BvcyhhMSksZDAKCXN1Yi53CWQxLGQwCglzdWIudwl
    kMixkMAoJYmNjLnMJUHJvamVjdGlsZV9DaGVja0hlaWdodAoJYWRkLncJZDEsZDEKCWFkZC53CWQxLGQw
    CgliY3MucwlQcm9qZWN0aWxlX1dpZHRoCglicmEucwlQcm9qZWN0aWxlX05leHQKOyAtLS0tLS0tLS0tL
    S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
    0tLS0KClByb2plY3RpbGVfQ2hlY2tIZWlnaHQ6CgljbXAudwlkNCxkMAoJYmhpLnMJUHJvamVjdGlsZV9
    OZXh0CgpQcm9qZWN0aWxlX1dpZHRoOgoJbW92ZXEJIzAsZDEKCW1vdmUuYgkoYTIpKyxkMQoJbW92ZS53
    CXlfcG9zKGExKSxkMAoJc3ViLncJZDEsZDAKCXN1Yi53CWQzLGQwCgliY2MucwlQcm9qZWN0aWxlX0NoZ
    WNrV2lkdGgKCWFkZC53CWQxLGQxCglhZGQudwlkMSxkMAoJYmNzLncJUHJvamVjdGlsZV9Cb3VuY2UKCW
    JyYS5zCVByb2plY3RpbGVfTmV4dAo7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
    tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKUHJvamVjdGlsZV9DaGVja1dpZHRo
    OgoJY21wLncJZDUsZDAKCWJoaS5zCVByb2plY3RpbGVfTmV4dAoKUHJvamVjdGlsZV9Cb3VuY2U6Cgljb
    XBpLmIJIyYjMDM2Ozk4LChhMSkJOyBtaXNjZWxsYW5lb3VzIHByb2plY3RpbGVzIHdoaWNoIHVzZSAmIz
    AzNjsyQiBvZiB0aGUgU1NUIGZvciBzb21ldGhpbmcgZWxzZQoJYmVxLnMJKwoJbW92ZS5iCXN0YXR1c19
    zZWNvbmRhcnkoYTEpLGQwCglhbmRpLmIJIzgsZDAKCWJlcS5zCVByb2plY3RpbGVfTmV4dAorCgltb3Zl
    LncJeF9wb3MoYTApLGQxCgltb3ZlLncJeV9wb3MoYTApLGQyCglzdWIudwl4X3BvcyhhMSksZDEKCXN1Y
    i53CXlfcG9zKGExKSxkMgoJanNyCShDYWxjQW5nbGUpLmwKCWpzcgkoQ2FsY1NpbmUpLmwKCW11bHMudw
    kjLSYjMDM2OzgwMCxkMQoJYXNyLmwJIzgsZDEKCW1vdmUudwlkMSx4X3ZlbChhMSkKCW11bHMudwkjLSY
    jMDM2OzgwMCxkMAoJYXNyLmwJIzgsZDAKCW1vdmUudwlkMCx5X3ZlbChhMSkKCWNsci5iCWNvbGxpc2lv
    bl9mbGFncyhhMSkKCXJ0cwkKOyBFbmQgb2YgZnVuY3Rpb24gUHJvamVjdGlsZVJlc3BvbnNl--><!--egc2--><!--g2--></div><!--eg2-->
    You can place this anywhere you want, but I recommend putting it right above TouchResponse so that no branches go out of range. To call this, in TouchResponse, after
    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='codemain'><!--eg1--><pre class="asm"> [color= #00bfff;]bsr[/color].[color= #00bfff;]w[/color] JmpTo_loc_170BA</pre><!--gc2--><!--CWJzci53CUptcFRvX2xvY18xNzBCQQ==--><!--egc2--><!--g2--></div><!--eg2-->
    add
    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='codemain'><!--eg1--><pre class="asm"> [color= #00bfff;]bsr[/color].[color= #00bfff;]w[/color] ProjectileResponse</pre><!--gc2--><!--CWJzci53CVByb2plY3RpbGVSZXNwb25zZQ==--><!--egc2--><!--g2--></div><!--eg2-->
     
Thread Status:
Not open for further replies.