Sonic 1 SolidObject routine

Discussion in 'Engineering & Reverse Engineering' started by Hayate, Apr 9, 2008.

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

    Hayate

    Tech Member
    I decided I needed to comment this subroutine, so I could understand it. IIRC, nothing here has been changed from the original disasm, so I figured I might as well post it before butchering it in SATSEE to allow for the whole "big Sonic can break down almost anything in his way" thing.

    Note on conventions: I use first person plural when referring to the object in a0.

    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='geshimain'><!--eg1--><pre class="asm">[color= #adadad; font-style: italic;]; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||[/color]
    &nbsp;
    &nbsp;
    SolidObject:
    [color= #00bfff;]tst[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]25[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; is Sonic standing on us?[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]w[/color] SolidObject_CheckEnter [color= #adadad; font-style: italic;]; if not, branch[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d2</span> [color= #adadad; font-style: italic;]; copy width/2[/color]
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d2</span> [color= #adadad; font-style: italic;]; get whole width[/color]
    [color= #00bfff;]lea[/color] <span style="">(</span>[color= #ff0000;]$[/color][color= #ff0000;]FFFFD000[/color]<span style="">)</span>.[color= #00bfff;]w[/color],<span style="font-weight:bold;">a1</span> [color= #adadad; font-style: italic;]; get Sonic's SST[/color]
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; is Sonic in the air?[/color]
    [color= #00bfff;]bne[/color].[color= #00bfff;]b[/color] SolidObject_Leave [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]8[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; get Sonic's x-position[/color]
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] [color= #ff0000;]8[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; subtract our x-position[/color]
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; add our width[/color]
    [color= #00bfff;]bmi[/color].[color= #00bfff;]b[/color] SolidObject_Leave [color= #adadad; font-style: italic;]; if Sonic's to the left, branch[/color]
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; is Sonic to the right?[/color]
    [color= #00bfff;]blt[/color].[color= #00bfff;]b[/color] SolidObject_Stand [color= #adadad; font-style: italic;]; if not, branch[/color]
    &nbsp;
    SolidObject_Leave:
    [color= #00bfff;]bclr[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; clear Sonic's standing flag[/color]
    [color= #00bfff;]bclr[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; clear our being-stood-on flag[/color]
    [color= #00bfff;]clr[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]25[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; clear our other being-stood-on flag[/color]
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; return no collision[/color]
    [color= #00bfff;]rts[/color]
    &nbsp;
    SolidObject_Stand:
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d4</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]jsr[/color] MoveSonicOnPlatform
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; return no collision[/color]
    [color= #00bfff;]rts[/color]
    &nbsp;
    SolidObject71:
    [color= #00bfff;]tst[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]25[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]beq[/color].[color= #00bfff;]w[/color] loc_FAD0
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]lea[/color] <span style="">(</span>[color= #ff0000;]$[/color][color= #ff0000;]FFFFD000[/color]<span style="">)</span>.[color= #00bfff;]w[/color],<span style="font-weight:bold;">a1</span>
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] loc_FA44
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]8[/color]<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] [color= #ff0000;]8[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d0</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;]bmi[/color].[color= #00bfff;]s[/color] loc_FA44
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bcs[/color].[color= #00bfff;]s[/color] loc_FA58
    &nbsp;
    loc_FA44:
    [color= #00bfff;]bclr[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bclr[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]clr[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]25[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d4</span>
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    loc_FA58:
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d4</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]jsr[/color] MoveSonicOnPlatform
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d4</span>
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    SolidObject2F:
    [color= #00bfff;]lea[/color] <span style="">(</span>[color= #ff0000;]$[/color][color= #ff0000;]FFFFD000[/color]<span style="">)</span>.[color= #00bfff;]w[/color],<span style="font-weight:bold;">a1</span>
    [color= #00bfff;]tst[/color].[color= #00bfff;]b[/color] [color= #ff0000;]1[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]bpl[/color].[color= #00bfff;]w[/color] SolidObject_Ignore
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]8[/color]<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] [color= #ff0000;]8[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d0</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;]bmi[/color].[color= #00bfff;]w[/color] SolidObject_Ignore
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]bhi[/color].[color= #00bfff;]w[/color] SolidObject_Ignore
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,<span style="font-weight:bold;">d5</span>
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],[color= #ff0000;]1[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] loc_FA94
    [color= #00bfff;]not[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d5</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d5</span>
    &nbsp;
    loc_FA94:
    [color= #00bfff;]lsr[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],<span style="font-weight:bold;">d5</span>
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] <span style="">(</span><span style="font-weight:bold;">a2</span>,<span style="font-weight:bold;">d5</span>.[color= #00bfff;]w[/color]<span style="">)</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]b[/color] <span style="">(</span><span style="font-weight:bold;">a2</span><span style="">)</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;]C[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d5</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d5</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]16[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]ext[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/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;]sub[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d5</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]addq[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]4[/color],<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]bmi[/color].[color= #00bfff;]w[/color] SolidObject_Ignore
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d4</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d4</span>,<span style="font-weight:bold;">d4</span>
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d4</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]bcc[/color].[color= #00bfff;]w[/color] SolidObject_Ignore
    [color= #00bfff;]bra[/color].[color= #00bfff;]w[/color] loc_FB0E
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    SolidObject_CheckEnter:
    [color= #00bfff;]tst[/color].[color= #00bfff;]b[/color] [color= #ff0000;]1[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; should we be drawn?[/color]
    [color= #00bfff;]bpl[/color].[color= #00bfff;]w[/color] SolidObject_Ignore [color= #adadad; font-style: italic;]; if not, branch[/color]
    &nbsp;
    loc_FAD0:
    [color= #00bfff;]lea[/color] <span style="">(</span>[color= #ff0000;]$[/color][color= #ff0000;]FFFFD000[/color]<span style="">)</span>.[color= #00bfff;]w[/color],<span style="font-weight:bold;">a1</span> [color= #adadad; font-style: italic;]; get Sonic's SST[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]8[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; get Sonic's x-position[/color]
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] [color= #ff0000;]8[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; subtract our x-position[/color]
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; add our width[/color]
    [color= #00bfff;]bmi[/color].[color= #00bfff;]w[/color] SolidObject_Ignore [color= #adadad; font-style: italic;]; if Sonic's to the left, branch[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d3</span> [color= #adadad; font-style: italic;]; copy width[/color]
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d3</span> [color= #adadad; font-style: italic;]; double width[/color]
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; is Sonic to the right?[/color]
    [color= #00bfff;]bhi[/color].[color= #00bfff;]w[/color] SolidObject_Ignore [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]16[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d3</span> [color= #adadad; font-style: italic;]; get Sonic's height[/color]
    [color= #00bfff;]ext[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d2</span> [color= #adadad; font-style: italic;]; add to our height[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/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= #adadad; font-style: italic;]; get Sonic's y-position[/color]
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] [color= #ff0000;]$[/color][color= #ff0000;]C[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d3</span> [color= #adadad; font-style: italic;]; subtract our y-position[/color]
    [color= #00bfff;]addq[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]4[/color],<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d3</span> [color= #adadad; font-style: italic;]; add our height[/color]
    [color= #00bfff;]bmi[/color].[color= #00bfff;]w[/color] SolidObject_Ignore [color= #adadad; font-style: italic;]; if Sonic's above, branch[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; copy height[/color]
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d4</span>,<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; double height[/color]
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d4</span>,<span style="font-weight:bold;">d3</span> [color= #adadad; font-style: italic;]; is Sonic below?[/color]
    [color= #00bfff;]bge[/color].[color= #00bfff;]w[/color] SolidObject_Ignore [color= #adadad; font-style: italic;]; if so, branch[/color]
    &nbsp;
    loc_FB0E:
    [color= #00bfff;]tst[/color].[color= #00bfff;]b[/color] <span style="">(</span>[color= #ff0000;]$[/color][color= #ff0000;]FFFFF7C8[/color]<span style="">)</span>.[color= #00bfff;]w[/color] [color= #adadad; font-style: italic;]; are the controls locked?[/color]
    [color= #00bfff;]bmi[/color].[color= #00bfff;]w[/color] SolidObject_Ignore [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]6[/color],<span style="">(</span>[color= #ff0000;]$[/color][color= #ff0000;]FFFFD024[/color]<span style="">)</span>.[color= #00bfff;]w[/color] [color= #adadad; font-style: italic;]; is Sonic dying/restarting/etc?[/color]
    [color= #00bfff;]bge[/color].[color= #00bfff;]w[/color] SolidObject_Ignore [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]tst[/color].[color= #00bfff;]w[/color] <span style="">(</span>[color= #ff0000;]$[/color][color= #ff0000;]FFFFFE08[/color]<span style="">)</span>.[color= #00bfff;]w[/color] [color= #adadad; font-style: italic;]; is debug mode on?[/color]
    [color= #00bfff;]bne[/color].[color= #00bfff;]w[/color] SolidObject_Debug [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,<span style="font-weight:bold;">d5</span> [color= #adadad; font-style: italic;]; (= width+dx)[/color]
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,<span style="font-weight:bold;">d1</span> [color= #adadad; font-style: italic;]; is Sonic to the right of the center of the object?[/color]
    [color= #00bfff;]bcc[/color].[color= #00bfff;]s[/color] + [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d1</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;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,<span style="font-weight:bold;">d5</span>
    [color= #00bfff;]neg[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d5</span> [color= #adadad; font-style: italic;]; (= width-dx)[/color]
    + [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d1</span> [color= #adadad; font-style: italic;]; (= height+dy) ; d5 is now width+|dx|[/color]
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d2</span> [color= #adadad; font-style: italic;]; is Sonic below the center of the object?[/color]
    [color= #00bfff;]bcc[/color].[color= #00bfff;]s[/color] + [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]subq[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]4[/color],<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d4</span>,<span style="font-weight:bold;">d3</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span>,<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]neg[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span> [color= #adadad; font-style: italic;]; (=height-dy)[/color]
    + [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d5</span> [color= #adadad; font-style: italic;]; do the 45 degree check! ; d1 is now height+|dy|[/color]
    [color= #00bfff;]bhi[/color].[color= #00bfff;]w[/color] SolidObject_TopBottom [color= #adadad; font-style: italic;]; if Sonic hit the top or bottom, branch[/color]
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]4[/color],<span style="font-weight:bold;">d1</span>
    [color= #00bfff;]bls[/color].[color= #00bfff;]s[/color] SolidObject_SideAir
    [color= #00bfff;]tst[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; where is Sonic?[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] SolidObject_Center [color= #adadad; font-style: italic;]; if in the center, branch[/color]
    [color= #00bfff;]bmi[/color].[color= #00bfff;]s[/color] SolidObject_Right [color= #adadad; font-style: italic;]; if to the right, branch[/color]
    [color= #00bfff;]tst[/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> [color= #adadad; font-style: italic;]; is Sonic moving left?[/color]
    [color= #00bfff;]bmi[/color].[color= #00bfff;]s[/color] SolidObject_Center [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]bra[/color].[color= #00bfff;]s[/color] SolidObject_Left
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    SolidObject_Right:
    [color= #00bfff;]tst[/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> [color= #adadad; font-style: italic;]; is Sonic moving right?[/color]
    [color= #00bfff;]bpl[/color].[color= #00bfff;]s[/color] SolidObject_Center [color= #adadad; font-style: italic;]; if so, branch[/color]
    &nbsp;
    SolidObject_Left:
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]14[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; stop Sonic moving horizontally[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]10[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    &nbsp;
    SolidObject_Center:
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d0</span>,[color= #ff0000;]8[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; correct Sonic's x-position[/color]
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; is Sonic in the air?[/color]
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] SolidObject_SideAir [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]bset[/color] [color= #ff0000;]#[/color][color= #ff0000;]5[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; make Sonic push the object[/color]
    [color= #00bfff;]bset[/color] [color= #ff0000;]#[/color][color= #ff0000;]5[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; make the object be pushed[/color]
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; return side collision[/color]
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    SolidObject_SideAir:
    [color= #00bfff;]bsr[/color].[color= #00bfff;]s[/color] SolidObject_NotPushing
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; return side collision[/color]
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    SolidObject_Ignore:
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]5[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; is Sonic pushing us?[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] SolidObject_Debug [color= #adadad; font-style: italic;]; if not, branch[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;]1C[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; use walking animation[/color]
    &nbsp;
    SolidObject_NotPushing:
    [color= #00bfff;]bclr[/color] [color= #ff0000;]#[/color][color= #ff0000;]5[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; clear our being-pushed flag[/color]
    [color= #00bfff;]bclr[/color] [color= #ff0000;]#[/color][color= #ff0000;]5[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; clear Sonic's pushing flag[/color]
    &nbsp;
    SolidObject_Debug:
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; return no collision[/color]
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    SolidObject_TopBottom:
    [color= #00bfff;]tst[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span> [color= #adadad; font-style: italic;]; is Sonic below the object?[/color]
    [color= #00bfff;]bmi[/color].[color= #00bfff;]s[/color] SolidObject_Below [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]10[/color][/color],<span style="font-weight:bold;">d3</span> [color= #adadad; font-style: italic;]; has Sonic landed on the object?[/color]
    [color= #00bfff;]bcs[/color].[color= #00bfff;]s[/color] SolidObject_Land [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]bra[/color].[color= #00bfff;]s[/color] SolidObject_Ignore
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    SolidObject_Below:
    [color= #00bfff;]tst[/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> [color= #adadad; font-style: italic;]; is Sonic moving vertically?[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] loc_FBD6 [color= #adadad; font-style: italic;]; if not, branch[/color]
    [color= #00bfff;]bpl[/color].[color= #00bfff;]s[/color] SolidObject_TopBotmAir [color= #adadad; font-style: italic;]; if downwards, branch[/color]
    [color= #00bfff;]tst[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d3</span> [color= #adadad; font-style: italic;]; is Sonic above the object?[/color]
    [color= #00bfff;]bpl[/color].[color= #00bfff;]s[/color] SolidObject_TopBotmAir [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/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= #adadad; font-style: italic;]; correct Sonic's y-position[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]12[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; stop Sonic moving vertically[/color]
    &nbsp;
    SolidObject_TopBotmAir:
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]-1[/color],<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; return top/bottom collision[/color]
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    loc_FBD6:
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; is Sonic in the air?[/color]
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] SolidObject_TopBotmAir [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">a0</span>,-<span style="">(</span><span style="font-weight:bold;">sp</span><span style="">)</span> [color= #adadad; font-style: italic;]; backup a0 to the stack[/color]
    [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] KillSonic [color= #adadad; font-style: italic;]; kill Sonic, because he got squashed[/color]
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="">(</span><span style="font-weight:bold;">sp</span><span style="">)</span>+,<span style="font-weight:bold;">a0</span> [color= #adadad; font-style: italic;]; restore a0 from the stack[/color]
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]-1[/color],<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; return top/bottom collision[/color]
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    SolidObject_Land:
    [color= #00bfff;]subq[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]4[/color],<span style="font-weight:bold;">d3</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] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]19[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d1</span> [color= #adadad; font-style: italic;]; get our width[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d2</span>
    [color= #00bfff;]add[/color].[color= #00bfff;]w[/color] [color= #ff0000;]8[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d1</span> [color= #adadad; font-style: italic;]; add our x-position[/color]
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/color] [color= #ff0000;]8[/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span>,<span style="font-weight:bold;">d1</span> [color= #adadad; font-style: italic;]; subtract Sonic's x-position[/color]
    [color= #00bfff;]bmi[/color].[color= #00bfff;]s[/color] SolidObject_Miss [color= #adadad; font-style: italic;]; if Sonic is to the right, branch[/color]
    [color= #00bfff;]cmp[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d1</span> [color= #adadad; font-style: italic;]; is Sonic to the left?[/color]
    [color= #00bfff;]bcc[/color].[color= #00bfff;]s[/color] SolidObject_Miss [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]tst[/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> [color= #adadad; font-style: italic;]; is Sonic moving upwards?[/color]
    [color= #00bfff;]bmi[/color].[color= #00bfff;]s[/color] SolidObject_Miss [color= #adadad; font-style: italic;]; if so, branch[/color]
    [color= #00bfff;]sub[/color].[color= #00bfff;]w[/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= #adadad; font-style: italic;]; fix Sonic's y-position[/color]
    [color= #00bfff;]subq[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;]C[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>
    [color= #00bfff;]bsr[/color].[color= #00bfff;]s[/color] SolidObject_ResetFloor
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]2[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]25[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; set our other being-stood-on flag[/color]
    [color= #00bfff;]bset[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; set our being-stood-on flag[/color]
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]-1[/color],<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; return top/bottom collision[/color]
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
    &nbsp;
    SolidObject_Miss:
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d4</span> [color= #adadad; font-style: italic;]; return no collision[/color]
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; End of function SolidObject[/color]
    &nbsp;
    &nbsp;
    [color= #adadad; font-style: italic;]; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||[/color]
    &nbsp;
    &nbsp;
    SolidObject_ResetFloor:
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; is Sonic standing on something?[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] + [color= #adadad; font-style: italic;]; if not, branch[/color]
    [color= #00bfff;]moveq[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;]3D[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span>,<span style="font-weight:bold;">d0</span> [color= #adadad; font-style: italic;]; get the object being stood on[/color]
    [color= #00bfff;]lsl[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]6[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]addi[/color].[color= #00bfff;]l[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]FFD000[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">d0</span>,<span style="font-weight:bold;">a2</span>
    [color= #00bfff;]bclr[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a2</span><span style="">)</span> [color= #adadad; font-style: italic;]; clear its being-stood-on flag[/color]
    [color= #00bfff;]clr[/color].[color= #00bfff;]b[/color] [color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]25[/color][/color]<span style="">(</span><span style="font-weight:bold;">a2</span><span style="">)</span> [color= #adadad; font-style: italic;]; clear its other being-stood-on flag[/color]
    + [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] <span style="font-weight:bold;">a0</span>,<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]subi[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color]-[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]3000[/color][/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]lsr[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]6[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]andi[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]7F[/color],<span style="font-weight:bold;">d0</span>
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] <span style="font-weight:bold;">d0</span>,[color= #ff0000;]$[/color][color= #ff0000;]3D[/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; set the object being stood on[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]26[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; clear Sonic's angle[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]12[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; stop Sonic moving vertically[/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;">a1</span><span style="">)</span>,[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]14[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; copy Sonic's horizontal speed to his inertia[/color]
    [color= #00bfff;]btst[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; is Sonic in the air?[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] + [color= #adadad; font-style: italic;]; if not, branch[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] <span style="font-weight:bold;">a0</span>,-<span style="">(</span><span style="font-weight:bold;">sp</span><span style="">)</span> [color= #adadad; font-style: italic;]; backup a0 to the stack[/color]
    [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] Sonic_ResetOnFloor [color= #adadad; font-style: italic;]; call the ordinary floor reset subroutine[/color]
    [color= #00bfff;]movea[/color].[color= #00bfff;]l[/color] <span style="">(</span><span style="font-weight:bold;">sp</span><span style="">)</span>+,<span style="font-weight:bold;">a0</span> [color= #adadad; font-style: italic;]; restore a0 from the stack[/color]
    + [color= #00bfff;]bset[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a1</span><span style="">)</span> [color= #adadad; font-style: italic;]; set our being-stood-on flag[/color]
    [color= #00bfff;]bset[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],[color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]22[/color][/color]<span style="">(</span><span style="font-weight:bold;">a0</span><span style="">)</span> [color= #adadad; font-style: italic;]; set Sonic's standing flag[/color]
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; End of function SolidObject_ResetFloor[/color]
    &nbsp;</pre><!--gc2--><!--OyB8fHx8fHx8fHx8fHx8fHwgUyBVIEIJUiBPIFUgVAlJIE4gRSB8fHx8fHx8fHx8fHx8fHx8fHx8fHx8
    fHx8fHx8fHx8fHx8fHx8fHwKCgpTb2xpZE9iamVjdDoKCQl0c3QuYgkmIzAzNjsyNShhMCkJCQk7IGlzI
    FNvbmljIHN0YW5kaW5nIG9uIHVzPwoJCWJlcS53CVNvbGlkT2JqZWN0X0NoZWNrRW50ZXIJOyBpZiBub3
    QsIGJyYW5jaAoJCW1vdmUudwlkMSxkMgkJCTsgY29weSB3aWR0aC8yCgkJYWRkLncJZDIsZDIJCQk7IGd
    ldCB3aG9sZSB3aWR0aAoJCWxlYQkoJiMwMzY7RkZGRkQwMDApLncsYTEJOyBnZXQgU29uaWMmIzM5O3Mg
    U1NUCgkJYnRzdAkjMSwmIzAzNjsyMihhMSkJCTsgaXMgU29uaWMgaW4gdGhlIGFpcj8KCQlibmUuYglTb
    2xpZE9iamVjdF9MZWF2ZQk7IGlmIHNvLCBicmFuY2gKCQltb3ZlLncJOChhMSksZDAJCTsgZ2V0IFNvbm
    ljJiMzOTtzIHgtcG9zaXRpb24KCQlzdWIudwk4KGEwKSxkMAkJOyBzdWJ0cmFjdCBvdXIgeC1wb3NpdGl
    vbgoJCWFkZC53CWQxLGQwCQkJOyBhZGQgb3VyIHdpZHRoCgkJYm1pLmIJU29saWRPYmplY3RfTGVhdmUJ
    OyBpZiBTb25pYyYjMzk7cyB0byB0aGUgbGVmdCwgYnJhbmNoCgkJY21wLncJZDIsZDAJCQk7IGlzIFNvb
    mljIHRvIHRoZSByaWdodD8KCQlibHQuYglTb2xpZE9iamVjdF9TdGFuZAk7IGlmIG5vdCwgYnJhbmNoCg
    pTb2xpZE9iamVjdF9MZWF2ZToKCQliY2xyCSMzLCYjMDM2OzIyKGExKQkJOyBjbGVhciBTb25pYyYjMzk
    7cyBzdGFuZGluZyBmbGFnCgkJYmNscgkjMywmIzAzNjsyMihhMCkJCTsgY2xlYXIgb3VyIGJlaW5nLXN0
    b29kLW9uIGZsYWcKCQljbHIuYgkmIzAzNjsyNShhMCkJCQk7IGNsZWFyIG91ciBvdGhlciBiZWluZy1zd
    G9vZC1vbiBmbGFnCgkJbW92ZXEJIzAsZDQJCQk7IHJldHVybiBubyBjb2xsaXNpb24KCQlydHMKClNvbG
    lkT2JqZWN0X1N0YW5kOgoJCW1vdmUudwlkNCxkMgoJCWpzcglNb3ZlU29uaWNPblBsYXRmb3JtCgkJbW9
    2ZXEJIzAsZDQJCQk7IHJldHVybiBubyBjb2xsaXNpb24KCQlydHMKClNvbGlkT2JqZWN0NzE6CgkJdHN0
    LmIJJiMwMzY7MjUoYTApCgkJYmVxLncJbG9jX0ZBRDAKCQltb3ZlLncJZDEsZDIKCQlhZGQudwlkMixkM
    goJCWxlYQkoJiMwMzY7RkZGRkQwMDApLncsYTEKCQlidHN0CSMxLCYjMDM2OzIyKGExKQoJCWJuZS5zCW
    xvY19GQTQ0CgkJbW92ZS53CTgoYTEpLGQwCgkJc3ViLncJOChhMCksZDAKCQlhZGQudwlkMSxkMAoJCWJ
    taS5zCWxvY19GQTQ0CgkJY21wLncJZDIsZDAKCQliY3Mucwlsb2NfRkE1OAoKbG9jX0ZBNDQ6CgkJYmNs
    cgkjMywmIzAzNjsyMihhMSkKCQliY2xyCSMzLCYjMDM2OzIyKGEwKQoJCWNsci5iCSYjMDM2OzI1KGEwK
    QoJCW1vdmVxCSMwLGQ0CgkJcnRzCjsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT
    09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgpsb2NfRkE1ODoKCQltb3ZlLncJZDQ
    sZDIKCQlqc3IJTW92ZVNvbmljT25QbGF0Zm9ybQoJCW1vdmVxCSMwLGQ0CgkJcnRzCjsgPT09PT09PT09
    PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
    T09PT09CgpTb2xpZE9iamVjdDJGOgoJCWxlYQkoJiMwMzY7RkZGRkQwMDApLncsYTEKCQl0c3QuYgkxKG
    EwKQoJCWJwbC53CVNvbGlkT2JqZWN0X0lnbm9yZQoJCW1vdmUudwk4KGExKSxkMAoJCXN1Yi53CTgoYTA
    pLGQwCgkJYWRkLncJZDEsZDAKCQlibWkudwlTb2xpZE9iamVjdF9JZ25vcmUKCQltb3ZlLncJZDEsZDMK
    CQlhZGQudwlkMyxkMwoJCWNtcC53CWQzLGQwCgkJYmhpLncJU29saWRPYmplY3RfSWdub3JlCgkJbW92Z
    S53CWQwLGQ1CgkJYnRzdAkjMCwxKGEwKQoJCWJlcS5zCWxvY19GQTk0CgkJbm90LncJZDUKCQlhZGQudw
    lkMyxkNQoKbG9jX0ZBOTQ6CgkJbHNyLncJIzEsZDUKCQltb3ZlcQkjMCxkMwoJCW1vdmUuYgkoYTIsZDU
    udyksZDMKCQlzdWIuYgkoYTIpLGQzCgkJbW92ZS53CSYjMDM2O0MoYTApLGQ1CgkJc3ViLncJZDMsZDUK
    CQltb3ZlLmIJJiMwMzY7MTYoYTEpLGQzCgkJZXh0LncJZDMKCQlhZGQudwlkMyxkMgoJCW1vdmUudwkmI
    zAzNjtDKGExKSxkMwoJCXN1Yi53CWQ1LGQzCgkJYWRkcS53CSM0LGQzCgkJYWRkLncJZDIsZDMKCQlibW
    kudwlTb2xpZE9iamVjdF9JZ25vcmUKCQltb3ZlLncJZDIsZDQKCQlhZGQudwlkNCxkNAoJCWNtcC53CWQ
    0LGQzCgkJYmNjLncJU29saWRPYmplY3RfSWdub3JlCgkJYnJhLncJbG9jX0ZCMEUKOyA9PT09PT09PT09
    PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
    T09PT0KClNvbGlkT2JqZWN0X0NoZWNrRW50ZXI6CgkJdHN0LmIJMShhMCkJCQk7IHNob3VsZCB3ZSBiZS
    BkcmF3bj8KCQlicGwudwlTb2xpZE9iamVjdF9JZ25vcmUJOyBpZiBub3QsIGJyYW5jaAoKbG9jX0ZBRDA
    6CgkJbGVhCSgmIzAzNjtGRkZGRDAwMCkudyxhMQk7IGdldCBTb25pYyYjMzk7cyBTU1QKCQltb3ZlLncJ
    OChhMSksZDAJCTsgZ2V0IFNvbmljJiMzOTtzIHgtcG9zaXRpb24KCQlzdWIudwk4KGEwKSxkMAkJOyBzd
    WJ0cmFjdCBvdXIgeC1wb3NpdGlvbgoJCWFkZC53CWQxLGQwCQkJOyBhZGQgb3VyIHdpZHRoCgkJYm1pLn
    cJU29saWRPYmplY3RfSWdub3JlCTsgaWYgU29uaWMmIzM5O3MgdG8gdGhlIGxlZnQsIGJyYW5jaAoJCW1
    vdmUudwlkMSxkMwkJCTsgY29weSB3aWR0aAoJCWFkZC53CWQzLGQzCQkJOyBkb3VibGUgd2lkdGgKCQlj
    bXAudwlkMyxkMAkJCTsgaXMgU29uaWMgdG8gdGhlIHJpZ2h0PwoJCWJoaS53CVNvbGlkT2JqZWN0X0lnb
    m9yZQk7IGlmIHNvLCBicmFuY2gKCQltb3ZlLmIJJiMwMzY7MTYoYTEpLGQzCQk7IGdldCBTb25pYyYjMz
    k7cyBoZWlnaHQKCQlleHQudwlkMwoJCWFkZC53CWQzLGQyCQkJOyBhZGQgdG8gb3VyIGhlaWdodAoJCW1
    vdmUudwkmIzAzNjtDKGExKSxkMwkJOyBnZXQgU29uaWMmIzM5O3MgeS1wb3NpdGlvbgoJCXN1Yi53CSYj
    MDM2O0MoYTApLGQzCQk7IHN1YnRyYWN0IG91ciB5LXBvc2l0aW9uCgkJYWRkcS53CSM0LGQzCgkJYWRkL
    ncJZDIsZDMJCQk7IGFkZCBvdXIgaGVpZ2h0CgkJYm1pLncJU29saWRPYmplY3RfSWdub3JlCTsgaWYgU2
    9uaWMmIzM5O3MgYWJvdmUsIGJyYW5jaAoJCW1vdmUudwlkMixkNAkJCTsgY29weSBoZWlnaHQKCQlhZGQ
    udwlkNCxkNAkJCTsgZG91YmxlIGhlaWdodAoJCWNtcC53CWQ0LGQzCQkJOyBpcyBTb25pYyBiZWxvdz8K
    CQliZ2UudwlTb2xpZE9iamVjdF9JZ25vcmUJOyBpZiBzbywgYnJhbmNoCgpsb2NfRkIwRToKCQl0c3QuY
    gkoJiMwMzY7RkZGRkY3QzgpLncJCTsgYXJlIHRoZSBjb250cm9scyBsb2NrZWQ/CgkJYm1pLncJU29saWRPYmplY3RfSWdub3JlCTsgaWYgc28sIGJyYW5jaAoJCWNtcGkuYgkjNiwoJiMw
    MzY7RkZGRkQwMjQpLncJOyBpcyBTb25pYyBkeWluZy9yZXN0YXJ0aW5nL2V0Yz8KCQliZ2UudwlTb2xpZ
    E9iamVjdF9JZ25vcmUJOyBpZiBzbywgYnJhbmNoCgkJdHN0LncJKCYjMDM2O0ZGRkZGRTA4KS53CQk7IG
    lzIGRlYnVnIG1vZGUgb24/CgkJYm5lLncJU29saWRPYmplY3RfRGVidWcJOyBpZiBzbywgYnJhbmNoCgkJbW92ZS53CWQwLGQ1CQkJ
    OyAoPSB3aWR0aCtkeCkKCQljbXAudwlkMCxkMQkJCTsgaXMgU29uaWMgdG8gdGhlIHJpZ2h0IG9mIHRoZ
    SBjZW50ZXIgb2YgdGhlIG9iamVjdD8KCQliY2MucwkrCQkJOyBpZiBzbywgYnJhbmNoCgkJYWRkLncJZD
    EsZDEKCQlzdWIudwlkMSxkMAoJCW1vdmUudwlkMCxkNQoJCW5lZy53CWQ1CQkJOyAoPSB3aWR0aC1keCk
    KKwkJbW92ZS53CWQzLGQxCQkJOyAoPSBoZWlnaHQrZHkpIDsgZDUgaXMgbm93IHdpZHRoK3xkeHwKCQlj
    bXAudwlkMyxkMgkJCTsgaXMgU29uaWMgYmVsb3cgdGhlIGNlbnRlciBvZiB0aGUgb2JqZWN0PwoJCWJjY
    y5zCSsJCQk7IGlmIHNvLCBicmFuY2gKCQlzdWJxLncJIzQsZDMKCQlzdWIudwlkNCxkMwoJCW1vdmUudw
    lkMyxkMQoJCW5lZy53CWQxCQkJOyAoPWhlaWdodC1keSkKKwkJY21wLncJZDEsZDUJCQk7IGRvIHRoZSA
    0NSBkZWdyZWUgY2hlY2smIzMzOyA7IGQxIGlzIG5vdyBoZWlnaHQrfGR5fAoJCWJoaS53CVNvbGlkT2Jq
    ZWN0X1RvcEJvdHRvbQk7IGlmIFNvbmljIGhpdCB0aGUgdG9wIG9yIGJvdHRvbSwgYnJhbmNoCgkJY21wa
    S53CSM0LGQxCgkJYmxzLnMJU29saWRPYmplY3RfU2lkZUFpcgoJCXRzdC53CWQwCQkJOyB3aGVyZSBpcy
    BTb25pYz8KCQliZXEucwlTb2xpZE9iamVjdF9DZW50ZXIJOyBpZiBpbiB0aGUgY2VudGVyLCBicmFuY2g
    KCQlibWkucwlTb2xpZE9iamVjdF9SaWdodAk7IGlmIHRvIHRoZSByaWdodCwgYnJhbmNoCgkJdHN0LncJ
    JiMwMzY7MTAoYTEpCQkJOyBpcyBTb25pYyBtb3ZpbmcgbGVmdD8KCQlibWkucwlTb2xpZE9iamVjdF9DZ
    W50ZXIJOyBpZiBzbywgYnJhbmNoCgkJYnJhLnMJU29saWRPYmplY3RfTGVmdAo7ID09PT09PT09PT09PT
    09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0
    9PQoKU29saWRPYmplY3RfUmlnaHQ6CgkJdHN0LncJJiMwMzY7MTAoYTEpCQkJOyBpcyBTb25pYyBtb3Zp
    bmcgcmlnaHQ/CgkJYnBsLnMJU29saWRPYmplY3RfQ2VudGVyCTsgaWYgc28sIGJyYW5jaAoKU29saWRPYmplY3RfTGVm
    dDoKCQltb3ZlLncJIzAsJiMwMzY7MTQoYTEpCQk7IHN0b3AgU29uaWMgbW92aW5nIGhvcml6b250YWxse
    QoJCW1vdmUudwkjMCwmIzAzNjsxMChhMSkKClNvbGlkT2JqZWN0X0NlbnRlcjoKCQlzdWIudwlkMCw4KG
    ExKQkJOyBjb3JyZWN0IFNvbmljJiMzOTtzIHgtcG9zaXRpb24KCQlidHN0CSMxLCYjMDM2OzIyKGExKQk
    JOyBpcyBTb25pYyBpbiB0aGUgYWlyPwoJCWJuZS5zCVNvbGlkT2JqZWN0X1NpZGVBaXIJOyBpZiBzbywg
    YnJhbmNoCgkJYnNldAkjNSwmIzAzNjsyMihhMSkJCTsgbWFrZSBTb25pYyBwdXNoIHRoZSBvYmplY3QKC
    Qlic2V0CSM1LCYjMDM2OzIyKGEwKQkJOyBtYWtlIHRoZSBvYmplY3QgYmUgcHVzaGVkCgkJbW92ZXEJIz
    EsZDQJCQk7IHJldHVybiBzaWRlIGNvbGxpc2lvbgoJCXJ0cwo7ID09PT09PT09PT09PT09PT09PT09PT0
    9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKU29saWRP
    YmplY3RfU2lkZUFpcjoKCQlic3IucwlTb2xpZE9iamVjdF9Ob3RQdXNoaW5nCgkJbW92ZXEJIzEsZDQJC
    Qk7IHJldHVybiBzaWRlIGNvbGxpc2lvbgoJCXJ0cwo7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT
    09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKU29saWRPYmplY3R
    fSWdub3JlOgoJCWJ0c3QJIzUsJiMwMzY7MjIoYTApCQk7IGlzIFNvbmljIHB1c2hpbmcgdXM/CgkJYmVxLnMJU29saWRPYmplY3RfRGVidWcJOyBpZiBub3QsIGJyYW5jaAoJCW1vdmUudwkjMSwmIzAz
    NjsxQyhhMSkJCTsgdXNlIHdhbGtpbmcgYW5pbWF0aW9uCgpTb2xpZE9iamVjdF9Ob3RQdXNoaW5nOgoJC
    WJjbHIJIzUsJiMwMzY7MjIoYTApCQk7IGNsZWFyIG91ciBiZWluZy1wdXNoZWQgZmxhZwoJCWJjbHIJIz
    UsJiMwMzY7MjIoYTEpCQk7IGNsZWFyIFNvbmljJiMzOTtzIHB1c2hpbmcgZmxhZwoKU29saWRPYmplY3R
    fRGVidWc6CgkJbW92ZXEJIzAsZDQJCQk7IHJldHVybiBubyBjb2xsaXNpb24KCQlydHMKOyA9PT09PT09
    PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
    T09PT09PT0KClNvbGlkT2JqZWN0X1RvcEJvdHRvbToKCQl0c3QudwlkMwkJCTsgaXMgU29uaWMgYmVsb3
    cgdGhlIG9iamVjdD8KCQlibWkucwlTb2xpZE9iamVjdF9CZWxvdwk7IGlmIHNvLCBicmFuY2gKCQljbXB
    pLncJIyYjMDM2OzEwLGQzCQkJOyBoYXMgU29uaWMgbGFuZGVkIG9uIHRoZSBvYmplY3Q/CgkJYmNzLnMJU29saWRPYmplY3RfTGFuZAk7IGlmIHNvLCBicmFuY2gKCQlicmEucwlTb2xpZE9iamVj
    dF9JZ25vcmUKOyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
    T09PT09PT09PT09PT09PT09PT09PT09PT0KClNvbGlkT2JqZWN0X0JlbG93OgoJCXRzdC53CSYjMDM2Oz
    EyKGExKQkJCTsgaXMgU29uaWMgbW92aW5nIHZlcnRpY2FsbHk/CgkJYmVxLnMJbG9jX0ZCRDYJCTsgaWYgbm90LCBicmFuY2gKCQlicGwucwlTb2xpZE9iamVjdF9Ub3BC
    b3RtQWlyCTsgaWYgZG93bndhcmRzLCBicmFuY2gKCQl0c3QudwlkMwkJCTsgaXMgU29uaWMgYWJvdmUgd
    GhlIG9iamVjdD8KCQlicGwucwlTb2xpZE9iamVjdF9Ub3BCb3RtQWlyCTsgaWYgc28sIGJyYW5jaAoJCX
    N1Yi53CWQzLCYjMDM2O0MoYTEpCQk7IGNvcnJlY3QgU29uaWMmIzM5O3MgeS1wb3NpdGlvbgoJCW1vdmU
    udwkjMCwmIzAzNjsxMihhMSkJCTsgc3RvcCBTb25pYyBtb3ZpbmcgdmVydGljYWxseQoKU29saWRPYmpl
    Y3RfVG9wQm90bUFpcjoKCQltb3ZlcQkjLTEsZDQJCQk7IHJldHVybiB0b3AvYm90dG9tIGNvbGxpc2lvb
    goJCXJ0cwo7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT
    09PT09PT09PT09PT09PT09PT09PT09PQoKbG9jX0ZCRDY6CgkJYnRzdAkjMSwmIzAzNjsyMihhMSkJCTs
    gaXMgU29uaWMgaW4gdGhlIGFpcj8KCQlibmUucwlTb2xpZE9iamVjdF9Ub3BCb3RtQWlyCTsgaWYgc28s
    IGJyYW5jaAoJCW1vdmUubAlhMCwtKHNwKQkJOyBiYWNrdXAgYTAgdG8gdGhlIHN0YWNrCgkJbW92ZWEub
    AlhMSxhMAoJCWpzcglLaWxsU29uaWMJCTsga2lsbCBTb25pYywgYmVjYXVzZSBoZSBnb3Qgc3F1YXNoZW
    QKCQltb3ZlYS5sCShzcCkrLGEwCQk7IHJlc3RvcmUgYTAgZnJvbSB0aGUgc3RhY2sKCQltb3ZlcQkjLTE
    sZDQJCQk7IHJldHVybiB0b3AvYm90dG9tIGNvbGxpc2lvbgoJCXJ0cwo7ID09PT09PT09PT09PT09PT09
    PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKU
    29saWRPYmplY3RfTGFuZDoKCQlzdWJxLncJIzQsZDMKCQltb3ZlcQkjMCxkMQoJCW1vdmUuYgkmIzAzNj
    sxOShhMCksZDEJCTsgZ2V0IG91ciB3aWR0aAoJCW1vdmUudwlkMSxkMgoJCWFkZC53CWQyLGQyCgkJYWR
    kLncJOChhMSksZDEJCTsgYWRkIG91ciB4LXBvc2l0aW9uCgkJc3ViLncJOChhMCksZDEJCTsgc3VidHJh
    Y3QgU29uaWMmIzM5O3MgeC1wb3NpdGlvbgoJCWJtaS5zCVNvbGlkT2JqZWN0X01pc3MJOyBpZiBTb25pY
    yBpcyB0byB0aGUgcmlnaHQsIGJyYW5jaAoJCWNtcC53CWQyLGQxCQkJOyBpcyBTb25pYyB0byB0aGUgbG
    VmdD8KCQliY2MucwlTb2xpZE9iamVjdF9NaXNzCTsgaWYgc28sIGJyYW5jaAoJCXRzdC53CSYjMDM2OzE
    yKGExKQkJCTsgaXMgU29uaWMgbW92aW5nIHVwd2FyZHM/CgkJYm1pLnMJU29saWRPYmplY3RfTWlzcwk7IGlmIHNvLCBicmFuY2gKCQlzdWIudwlkMywmIzAzNjtD
    KGExKQkJOyBmaXggU29uaWMmIzM5O3MgeS1wb3NpdGlvbgoJCXN1YnEudwkjMSwmIzAzNjtDKGExKQoJC
    WJzci5zCVNvbGlkT2JqZWN0X1Jlc2V0Rmxvb3IKCQltb3ZlLmIJIzIsJiMwMzY7MjUoYTApCQk7IHNldC
    BvdXIgb3RoZXIgYmVpbmctc3Rvb2Qtb24gZmxhZwoJCWJzZXQJIzMsJiMwMzY7MjIoYTApCQk7IHNldCB
    vdXIgYmVpbmctc3Rvb2Qtb24gZmxhZwoJCW1vdmVxCSMtMSxkNAkJCTsgcmV0dXJuIHRvcC9ib3R0b20g
    Y29sbGlzaW9uCgkJcnRzCQo7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
    T09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKU29saWRPYmplY3RfTWlzczoKCQltb3ZlcQ
    kjMCxkNAkJCTsgcmV0dXJuIG5vIGNvbGxpc2lvbgoJCXJ0cwkKOyBFbmQgb2YgZnVuY3Rpb24gU29saWR
    PYmplY3QKCgo7IHx8fHx8fHx8fHx8fHx8fCBTIFUgQglSIE8gVSBUCUkgTiBFIHx8fHx8fHx8fHx8fHx8
    fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fAoKClNvbGlkT2JqZWN0X1Jlc2V0Rmxvb3I6CgkJYnRzdAkjM
    ywmIzAzNjsyMihhMSkJCTsgaXMgU29uaWMgc3RhbmRpbmcgb24gc29tZXRoaW5nPwoJCWJlcS5zCSsJCQ
    k7IGlmIG5vdCwgYnJhbmNoCgkJbW92ZXEJIzAsZDAKCQltb3ZlLmIJJiMwMzY7M0QoYTEpLGQwCQk7IGd
    ldCB0aGUgb2JqZWN0IGJlaW5nIHN0b29kIG9uCgkJbHNsLncJIzYsZDAKCQlhZGRpLmwJIyYjMDM2O0ZG
    RDAwMCxkMAoJCW1vdmVhLmwJZDAsYTIKCQliY2xyCSMzLCYjMDM2OzIyKGEyKQkJOyBjbGVhciBpdHMgY
    mVpbmctc3Rvb2Qtb24gZmxhZwoJCWNsci5iCSYjMDM2OzI1KGEyKQkJCTsgY2xlYXIgaXRzIG90aGVyIG
    JlaW5nLXN0b29kLW9uIGZsYWcKKwkJbW92ZS53CWEwLGQwCgkJc3ViaS53CSMtJiMwMzY7MzAwMCxkMAo
    JCWxzci53CSM2LGQwCgkJYW5kaS53CSMmIzAzNjs3RixkMAoJCW1vdmUuYglkMCwmIzAzNjszRChhMSkJ
    CTsgc2V0IHRoZSBvYmplY3QgYmVpbmcgc3Rvb2Qgb24KCQltb3ZlLmIJIzAsJiMwMzY7MjYoYTEpCQk7I
    GNsZWFyIFNvbmljJiMzOTtzIGFuZ2xlCgkJbW92ZS53CSMwLCYjMDM2OzEyKGExKQkJOyBzdG9wIFNvbm
    ljIG1vdmluZyB2ZXJ0aWNhbGx5CgkJbW92ZS53CSYjMDM2OzEwKGExKSwmIzAzNjsxNChhMSkJCTsgY29
    weSBTb25pYyYjMzk7cyBob3Jpem9udGFsIHNwZWVkIHRvIGhpcyBpbmVydGlhCgkJYnRzdAkjMSwmIzAz
    NjsyMihhMSkJCTsgaXMgU29uaWMgaW4gdGhlIGFpcj8KCQliZXEucwkrCQkJOyBpZiBub3QsIGJyYW5ja
    AoJCW1vdmUubAlhMCwtKHNwKQkJOyBiYWNrdXAgYTAgdG8gdGhlIHN0YWNrCgkJbW92ZWEubAlhMSxhMA
    oJCWpzcglTb25pY19SZXNldE9uRmxvb3IJOyBjYWxsIHRoZSBvcmRpbmFyeSBmbG9vciByZXNldCBzdWJ
    yb3V0aW5lCgkJbW92ZWEubAkoc3ApKyxhMAkJOyByZXN0b3JlIGEwIGZyb20gdGhlIHN0YWNrCisJCWJz
    ZXQJIzMsJiMwMzY7MjIoYTEpCQk7IHNldCBvdXIgYmVpbmctc3Rvb2Qtb24gZmxhZwoJCWJzZXQJIzMsJ
    iMwMzY7MjIoYTApCQk7IHNldCBTb25pYyYjMzk7cyBzdGFuZGluZyBmbGFnCgkJcnRzCQo7IEVuZCBvZi
    BmdW5jdGlvbiBTb2xpZE9iamVjdF9SZXNldEZsb29yCg==--><!--egc2--><!--g2--></div><!--eg2-->
     
  2. Hivebrain

    Hivebrain

    Administrator
    2,927
    66
    28
    53.4N, 1.5W
    HiveView
    Brilliant, this saves me some time. :)
     
Thread Status:
Not open for further replies.