+ add r8, r9, r7, lsr #3 @ tile+=row>>3; // Tile number increases going down\r
+ tst r9, #0x0800\r
+ mlane r8, r5, r6, r8 @ if (code&0x0800) { tile+=delta*(width-1);\r
+ rsbne r5, r5, #0 @ delta=-delta; } // r5=delta now\r
+\r
+ mov r8, r8, lsl #21\r
+ mov r8, r8, lsr #17\r
+ and r7, r7, #7\r
+ add r8, r8, r7, lsl #1 @ tile+=(row&7)<<1; // Tile address\r
+\r
+ mov r5, r5, lsl #4 @ delta<<=4; // Delta of address\r
+ mov r3, r4, lsr #9 @ r3=pal=((code>>9)&0x30);\r
+\r
+ add r6, r6, #1 @ inc now\r
+ adds r0, r2, #0 @ mov sx to r0 and set ZV flags\r
+ b .dsprShi_loop_enter\r
+\r
+.dsprShi_loop:\r
+ subs r6, r6, #1 @ width--\r
+ beq DrawSpriteSHi\r
+ adds r0, r0, #8 @ sx+=8\r
+ add r8, r8, r5 @ tile+=delta\r
+\r
+.dsprShi_loop_enter:\r
+ ble .dsprShi_loop @ sx <= 0\r