+ do_loop[which_func](DrawLineDest, dram, lines_sft_offs, md_bg);
+}
+
+// mostly unused, games tend to keep 32X layer on
+void PicoDraw32xLayerMdOnly(int offs, int lines)
+{
+ int have_scan = PicoScan32xBegin != NULL && PicoScan32xEnd != NULL;
+ unsigned short *dst = (void *)((char *)DrawLineDestBase + offs * DrawLineDestIncrement);
+ unsigned char *pmd = PicoDraw2FB + 328 * offs + 8;
+ unsigned short *pal = HighPal;
+ int poffs = 0, plen = 320;
+ int l, p;
+
+ if (!(Pico.video.reg[12] & 1)) {
+ // 32col mode
+ poffs = 32;
+ plen = 256;
+ }
+
+ if (Pico.m.dirtyPal)
+ PicoDrawUpdateHighPal();
+
+ dst += poffs;
+ for (l = 0; l < lines; l++) {
+ if (have_scan) {
+ PicoScan32xBegin(l + offs);
+ dst = DrawLineDest + poffs;
+ }
+ for (p = 0; p < plen; p += 4) {
+ dst[p + 0] = pal[*pmd++];
+ dst[p + 1] = pal[*pmd++];
+ dst[p + 2] = pal[*pmd++];
+ dst[p + 3] = pal[*pmd++];
+ }
+ dst = (void *)((char *)dst + DrawLineDestIncrement);
+ pmd += 328 - plen;
+ if (have_scan)
+ PicoScan32xEnd(l + offs);
+ }