+.dsloop_exit:\r
+ tst r10, #1<<21 @ seen non hi-prio tile\r
+ ldreq r1, =rendstatus\r
+ mov r0, #0\r
+ ldreq r2, [r1]\r
+ str r0, [r6] @ terminate the cache list\r
+ orreq r2, r2, #0x40 @ had a layer with all hi-prio tiles\r
+ streq r2, [r1]\r
+\r
+ ldmfd sp!, {r4-r11,lr}\r
+ bx lr\r
+\r
+@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r
+\r
+.DrawStrip_vsscroll:\r
+ rsb r8, r3, #0\r
+ mov r8, r8, lsr #3 @ r8=tilex=(-ts->hscroll)>>3\r
+ bic r8, r8, #0xff000000\r
+ orr r8, r8, r5, lsl #25 @ r8=(xmask[31:25]|had_output[24]|tilex[15:0])\r
+\r
+ ldr r4, =Scanline\r
+ orr r5, r1, r10, lsl #24\r
+ ldr r4, [r4]\r
+ sub r1, r3, #1\r
+ orr r5, r5, r4, lsl #16 @ r5=(shift_width[31:24]|scanline[23:16]|ymask[15:0])\r
+ and r1, r1, #7\r
+ add r7, r1, #1 @ r7=dx=((ts->hscroll-1)&7)+1\r
+\r
+ mov r10,r9, lsl #16\r
+ tst r0, r0\r
+ orrne r10,r10, #0x8000\r
+ tst r9, #1<<31\r
+ mov r3, #0\r
+ orr r10,r10, #0xff000000 @ will be adjusted on entering loop\r
+ orrne r10,r10, #1<<23 @ r10=(cells[31:24]|sh[23]|hi_not_empty[22]|cells_max[21:16]|plane[15]|ty[14:0])\r
+ movne r3, #0x40 @ default to shadowed pal on sh mode\r
+\r
+ mvn r9, #0 @ r9=prevcode=-1\r
+\r
+ @ cache some stuff to avoid mem access\r
+ ldr r11,=HighCol\r
+ mov r0, #0xf\r
+ add r1, r11, r7 @ r1=pdest\r
+\r
+ cmp r7, #8\r
+ subne r10,r10, #0x01000000 @ have hscroll, start with negative cell\r
+\r
+\r
+ @ r4 & r7 are scratch in this loop\r
+.dsloop_vs_subr1:\r
+ sub r1, r1, #8\r
+.dsloop_vs: @ 40-41 times\r
+ add r10,r10, #0x01000000\r
+ and r4, r10, #0x003f0000\r
+ cmp r4, r10, asr #8\r
+ ble .dsloop_vs_exit\r
+\r
+ @ calc offset and read tileline code to r7, also calc ty\r
+ add r7, lr, #0x012000\r
+ add r7, r7, #0x000180 @ r7=Pico.vsram (Pico+0x22180)\r
+ add r7, r7, r10,asr #23 @ vsram + ((cell&~1)<<1)\r
+ bic r7, r7, #3\r
+ tst r10,#0x8000 @ plane1?\r
+ addne r7, r7, #2\r
+ ldrh r7, [r7] @ r7=vscroll\r
+\r
+ bic r10,r10,#0xff @ clear old ty\r
+ and r4, r5, #0xff0000\r
+ add r4, r4, r7, lsl #16\r
+ and r4, r4, r5, lsl #16 @ r4=line<<16\r
+ and r7, r4, #0x70000\r
+ orr r10,r10,r7, lsr #15 @ new ty\r
+\r
+ mov r4, r4, lsr #19\r
+ mov r7, r5, lsr #24\r
+ mov r4, r4, lsl r7 @ nametabadd\r
+\r
+ and r7, r8, r8, lsr #25\r
+ add r7, lr, r7, lsl #1 @ Pico.vram+((tilex&ts->xmask) as halfwords)\r
+ add r7, r7, r4, lsl #1\r
+ ldrh r7, [r7, r12] @ r7=code (int, but from unsigned, no sign extend)\r
+\r
+ add r1, r1, #8\r
+ add r8, r8, #1\r
+\r
+ tst r7, #0x8000\r
+ bne .DrawStrip_vs_hiprio\r
+\r