remove unused/unmaintained code
[picodrive.git] / platform / uiq3 / engine / blit.s
diff --git a/platform/uiq3/engine/blit.s b/platform/uiq3/engine/blit.s
deleted file mode 100644 (file)
index f10a3cc..0000000
+++ /dev/null
@@ -1,724 +0,0 @@
-@ vim:filetype=armasm\r
-@ some color conversion and blitting routines\r
-\r
-@ (c) Copyright 2006, notaz\r
-@ All Rights Reserved\r
-\r
-.include "port_config.s"\r
-\r
-\r
-@ Convert 0000bbb0 ggg0rrr0 0000bbb0 ggg0rrr0\r
-@ to      00000000 rrr00000 ggg00000 bbb00000 ...\r
-\r
-@ lr =  0x00e000e0, out: r3=lower_pix, r2=higher_pix; trashes rin\r
-@ if sh==2, r8=0x00404040 (sh!=0 destroys flags!)\r
-.macro convRGB32_2 rin sh=0\r
-    and     r2,  lr, \rin, lsr #4 @ blue\r
-    and     r3,  \rin, lr\r
-    orr     r2,  r2,   r3, lsl #8         @ g0b0g0b0\r
-\r
-    mov     r3,  r2,  lsl #16             @ g0b00000\r
-    and     \rin,lr,  \rin, ror #12       @ 00r000r0 (reversed)\r
-    orr     r3,  r3,  \rin, lsr #16       @ g0b000r0\r
-.if \sh == 1\r
-    mov     r3,  r3,  ror #17             @ shadow mode\r
-.elseif \sh == 2\r
-    adds    r3,  r3,  #0x40000000         @ green\r
-    orrcs   r3,  r3,  #0xe0000000\r
-    mov     r3,  r3,  ror #8\r
-    adds    r3,  r3,  #0x40000000\r
-    orrcs   r3,  r3,  #0xe0000000\r
-    mov     r3,  r3,  ror #16\r
-    adds    r3,  r3,  #0x40000000\r
-    orrcs   r3,  r3,  #0xe0000000\r
-    mov     r3,  r3,  ror #24\r
-    orr     r3,  r3,   r3, lsr #3\r
-.else\r
-    mov     r3,  r3,  ror #16             @ r3=low\r
-    orr     r3,  r3,   r3, lsr #3\r
-.endif\r
-\r
-    str     r3, [r0], #4\r
-\r
-    mov     r2,  r2,  lsr #16\r
-    orr     r2,  r2,  \rin, lsl #16\r
-.if \sh == 1\r
-    mov     r2,  r2,  lsr #1\r
-.elseif \sh == 2\r
-    mov     r2,  r2,  ror #8\r
-    adds    r2,  r2,  #0x40000000         @ blue\r
-    orrcs   r2,  r2,  #0xe0000000\r
-    mov     r2,  r2,  ror #8\r
-    adds    r2,  r2,  #0x40000000\r
-    orrcs   r2,  r2,  #0xe0000000\r
-    mov     r2,  r2,  ror #8\r
-    adds    r2,  r2,  #0x40000000\r
-    orrcs   r2,  r2,  #0xe0000000\r
-    mov     r2,  r2,  ror #8\r
-    orr     r2,  r2,   r2,  lsr #3\r
-.else\r
-    orr     r2,  r2,   r2,  lsr #3\r
-.endif\r
-\r
-    str     r2, [r0], #4\r
-.endm\r
-\r
-\r
-.global vidConvCpyRGB32 @ void *to, void *from, int pixels\r
-\r
-vidConvCpyRGB32:\r
-    stmfd   sp!, {r4-r7,lr}\r
-\r
-    mov     r12, r2, lsr #3 @ repeats\r
-    mov     lr, #0x00e00000\r
-    orr     lr, lr, #0x00e0\r
-\r
-.loopRGB32:\r
-    subs    r12, r12, #1\r
-\r
-    ldmia    r1!, {r4-r7}\r
-    convRGB32_2 r4\r
-    convRGB32_2 r5\r
-    convRGB32_2 r6\r
-    convRGB32_2 r7\r
-\r
-    bgt     .loopRGB32\r
-\r
-    ldmfd   sp!, {r4-r7,lr}\r
-    bx      lr\r
-\r
-\r
-.global vidConvCpyRGB32sh @ void *to, void *from, int pixels\r
-\r
-vidConvCpyRGB32sh:\r
-    stmfd   sp!, {r4-r7,lr}\r
-\r
-    mov     r12, r2, lsr #3 @ repeats\r
-    mov     lr, #0x00e00000\r
-    orr     lr, lr, #0x00e0\r
-\r
-.loopRGB32sh:\r
-    subs    r12, r12, #1\r
-\r
-    ldmia    r1!, {r4-r7}\r
-    convRGB32_2 r4, 1\r
-    convRGB32_2 r5, 1\r
-    convRGB32_2 r6, 1\r
-    convRGB32_2 r7, 1\r
-\r
-    bgt     .loopRGB32sh\r
-\r
-    ldmfd   sp!, {r4-r7,lr}\r
-    bx      lr\r
-\r
-\r
-.global vidConvCpyRGB32hi @ void *to, void *from, int pixels\r
-\r
-vidConvCpyRGB32hi:\r
-    stmfd   sp!, {r4-r7,lr}\r
-\r
-    mov     r12, r2, lsr #3 @ repeats\r
-    mov     lr, #0x00e00000\r
-    orr     lr, lr, #0x00e0\r
-\r
-.loopRGB32hi:\r
-     ldmia    r1!, {r4-r7}\r
-    convRGB32_2 r4, 2\r
-    convRGB32_2 r5, 2\r
-    convRGB32_2 r6, 2\r
-    convRGB32_2 r7, 2\r
-\r
-    subs    r12, r12, #1\r
-    bgt     .loopRGB32hi\r
-\r
-    ldmfd   sp!, {r4-r7,lr}\r
-    bx      lr\r
-\r
-\r
-@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r
-\r
-@ -------- M2 stuff ---------\r
-/*\r
-.global vidConvCpy_90 @ void *to, void *from, int width\r
-\r
-vidConvCpy_90:\r
-    stmfd   sp!, {r4-r10,lr}\r
-\r
-    mov     lr, #0x00F00000\r
-    orr     lr, lr, #0x00F0\r
-\r
-    mov     r12, #224/4            @ row counter\r
-    mov     r10, r2, lsl #2        @ we do 2 pixel wide copies\r
-\r
-    add     r8,  r0, #256*4        @ parallel line\r
-    add     r1,  r1, #0x23000\r
-    add     r1,  r1, #0x00B80      @ r1+=328*223*2+8*2\r
-    mov     r9,  r1\r
-\r
-    mov     r4,  #0                @ fill bottom border\r
-    mov     r5,  #0\r
-    mov     r6,  #0\r
-    mov     r7,  #0\r
-    stmia   r0!, {r4-r7}\r
-    stmia   r0!, {r4-r7}\r
-    stmia   r8!, {r4-r7}\r
-    stmia   r8!, {r4-r7}\r
-\r
-.loopM2RGB32_90:\r
-       subs    r12, r12, #1\r
-\r
-    @ at first this loop was written differently: src pixels were fetched with ldm's and\r
-    @ dest was not sequential. It ran nearly 2 times slower. It seems it is very important\r
-    @ to do sequential memory access on those items, which we have more (to offload addressing bus?).\r
-\r
-    ldr     r4, [r1], #-328*2\r
-    ldr     r5, [r1], #-328*2\r
-    ldr     r6, [r1], #-328*2\r
-    ldr     r7, [r1], #-328*2\r
-\r
-    convRGB32_2 r4, 1\r
-    convRGB32_2 r5, 1\r
-    convRGB32_2 r6, 1\r
-    convRGB32_2 r7, 1\r
-\r
-    str     r4, [r8], #4\r
-    str     r5, [r8], #4\r
-    str     r6, [r8], #4\r
-    str     r7, [r8], #4\r
-\r
-    bne     .loopM2RGB32_90\r
-\r
-    mov     r4,  #0                @ top border\r
-    mov     r5,  #0\r
-    mov     r6,  #0\r
-    stmia   r0!, {r4-r6,r12}\r
-    stmia   r0!, {r4-r6,r12}\r
-    stmia   r8!, {r4-r6,r12}\r
-    stmia   r8!, {r4-r6,r12}\r
-\r
-    subs    r10, r10, #1\r
-    ldmeqfd sp!, {r4-r10,pc}        @ return\r
-\r
-    add     r0,  r8,  #16*4         @ set new dst pointer\r
-    add     r8,  r0,  #256*4\r
-    add     r9,  r9,  #2*2          @ fix src pointer\r
-    mov     r1,  r9\r
-\r
-    stmia   r0!, {r4-r6,r12}        @ bottom border\r
-    stmia   r0!, {r4-r6,r12}\r
-    stmia   r8!, {r4-r6,r12}\r
-    stmia   r8!, {r4-r6,r12}\r
-\r
-    mov     r12, #224/4             @ restore row counter\r
-    b       .loopM2RGB32_90\r
-\r
-\r
-\r
-@ converter for vidConvCpy_270\r
-@ lr =  0x00F000F0, out: r3=lower_pix, r2=higher_pix; trashes rin\r
-.macro convRGB32_3 rin\r
-    and     r2,  lr, \rin, lsr #4 @ blue\r
-    and     r3,  \rin, lr\r
-    orr     r2,  r2,   r3, lsl #8         @ g0b0g0b0\r
-\r
-    mov     r3,  r2,  lsl #16             @ g0b00000\r
-    and     \rin,lr,  \rin, ror #12       @ 00r000r0 (reversed)\r
-    orr     r3,  r3,  \rin, lsr #16       @ g0b000r0\r
-\r
-    mov     r2,  r2,  lsr #16\r
-    orr     r2,  r2,  \rin, lsl #16\r
-    str     r2, [r0], #4\r
-\r
-    mov     \rin,r3,  ror #16             @ r3=low\r
-.endm\r
-*/\r
-@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r
-\r
-\r
-@ takes byte-sized pixels from r3-r6, fetches from pal and stores to r7,r8,r10,lr\r
-@ r2=pal\r
-.macro mode2_4pix shift\r
-    and     r7, r11, r3, lsr #\shift\r
-    ldr     r7, [r2, r7, lsl #2]\r
-\r
-    and     r8, r11, r4, lsr #\shift\r
-    ldr     r8, [r2, r8, lsl #2]\r
-\r
-    and     r10,r11, r5, lsr #\shift\r
-    ldr     r10,[r2, r10,lsl #2]\r
-\r
-    and     lr, r11, r6, lsr #\shift\r
-    ldr     lr, [r2, lr, lsl #2]\r
-.endm\r
-\r
-@ r2=pal, r11=0xff\r
-.macro mode2_4pix_getpix0 dreg sreg\r
-    and     \dreg, r11, \sreg\r
-    ldr     \dreg, [r2, \dreg, lsl #2]\r
-.endm\r
-\r
-.macro mode2_4pix_getpix1 dreg sreg\r
-    and     \dreg, r11, \sreg, lsr #8\r
-    ldr     \dreg, [r2, \dreg, lsl #2]\r
-.endm\r
-\r
-.macro mode2_4pix_getpix2 dreg sreg\r
-    and     \dreg, r11, \sreg, lsr #16\r
-    ldr     \dreg, [r2, \dreg, lsl #2]\r
-.endm\r
-\r
-.macro mode2_4pix_getpix3 dreg sreg\r
-    and     \dreg, r11, \sreg, lsr #24\r
-    ldr     \dreg, [r2, \dreg, lsl #2]\r
-.endm\r
-\r
-@ takes byte-sized pixels from reg, fetches from pal and stores to r3-r6\r
-@ r11=0xFF, r2=pal\r
-.macro mode2_4pix2_0 reg\r
-    mode2_4pix_getpix0 r3, \reg\r
-    mode2_4pix_getpix1 r4, \reg\r
-    mode2_4pix_getpix2 r5, \reg\r
-    mode2_4pix_getpix3 r6, \reg\r
-.endm\r
-\r
-@ ...\r
-.macro mode2_4pix2_180 reg\r
-    mode2_4pix_getpix3 r3, \reg\r
-    mode2_4pix_getpix2 r4, \reg\r
-    mode2_4pix_getpix1 r5, \reg\r
-    mode2_4pix_getpix0 r6, \reg\r
-.endm\r
-\r
-@ takes byte-sized pixels from reg, fetches from pal and stores to r3-r5\r
-@ r11=0xFF, r2=pal, r10=0xfcfcfc, r6=tmp\r
-.macro mode2_4pix_to3 reg is180\r
-.if \is180\r
-    mode2_4pix_getpix3 r3, \reg\r
-    mode2_4pix_getpix2 r4, \reg\r
-.else\r
-    mode2_4pix_getpix0 r3, \reg     @ gathering loads cause a weird-hang\r
-    mode2_4pix_getpix1 r4, \reg\r
-.endif\r
-\r
-    sub     r3, r3,  r3, lsr #2     @ r3 *= 0.75\r
-    add     r3, r3,  r4, lsr #2     @ r3 += r4 * 0.25\r
-    and     r3, r3,  r10\r
-\r
-.if \is180\r
-    mode2_4pix_getpix1 r5, \reg\r
-    mode2_4pix_getpix0 r6, \reg\r
-.else\r
-    mode2_4pix_getpix2 r5, \reg\r
-    mode2_4pix_getpix3 r6, \reg\r
-.endif\r
-\r
-    mov     r4, r4,  lsr #1\r
-    add     r4, r4,  r5, lsr #1     @ r4 = (r4 + r5) / 2;\r
-@    and     r4, r4,  r10\r
-    sub     r6, r6,  r6, lsr #2     @ r6 *= 0.75\r
-    add     r5, r6,  r5, lsr #2     @ r5 = r6 + r5 * 0.25\r
-    and     r5, r5,  r10\r
-.endm\r
-\r
-\r
-@ void *to, void *from, void *pal, int width\r
-.macro vidConvCpyM2_landscape is270\r
-    stmfd   sp!, {r4-r11,lr}\r
-\r
-    mov     r11, #0xff\r
-\r
-    mov     r12, #(224/4-1)<<16    @ row counter\r
-    orr     r12, r12, r3, lsl #1   @ we do 4 pixel wide copies (right to left)\r
-\r
-.if \is270\r
-    add     r1,  r1, #324\r
-.else\r
-    add     r1,  r1, #0x11c00\r
-    add     r1,  r1, #0x00308      @ 328*224+8\r
-.endif\r
-    mov     r9,  r1\r
-\r
-    mov     r3,  #0                @ fill top border\r
-    mov     r4,  #0\r
-    mov     r5,  #0\r
-    mov     r6,  #0\r
-    stmia   r0!, {r3-r6}\r
-    stmia   r0!, {r3-r6}\r
-    add     r7,  r0, #(240+BORDER_R)*4-8*4\r
-    stmia   r7!, {r3-r6}\r
-    stmia   r7!, {r3-r6}\r
-    add     r7,  r7, #(240+BORDER_R)*4-8*4\r
-    stmia   r7!, {r3-r6}\r
-    stmia   r7!, {r3-r6}\r
-    add     r7,  r7, #(240+BORDER_R)*4-8*4\r
-    stmia   r7!, {r3-r6}\r
-    stmia   r7!, {r3-r6}\r
-\r
-0: @ .loopM2RGB32_270:\r
-       subs    r12, r12, #1<<16\r
-\r
-.if \is270\r
-    ldr     r3, [r1], #328\r
-    ldr     r4, [r1], #328\r
-    ldr     r5, [r1], #328\r
-    ldr     r6, [r1], #328\r
-.else\r
-    ldr     r3, [r1, #-328]!\r
-    ldr     r4, [r1, #-328]!\r
-    ldr     r5, [r1, #-328]!\r
-    ldr     r6, [r1, #-328]!\r
-.endif\r
-\r
-.if \is270\r
-    mode2_4pix 24\r
-.else\r
-    mode2_4pix  0\r
-.endif\r
-    stmia   r0, {r7,r8,r10,lr}\r
-    add     r0, r0, #(240+BORDER_R)*4\r
-\r
-.if \is270\r
-    mode2_4pix 16\r
-.else\r
-    mode2_4pix  8\r
-.endif\r
-    stmia   r0, {r7,r8,r10,lr}\r
-    add     r0, r0, #(240+BORDER_R)*4\r
-\r
-.if \is270\r
-    mode2_4pix  8\r
-.else\r
-    mode2_4pix 16\r
-.endif\r
-    stmia   r0, {r7,r8,r10,lr}\r
-    add     r0, r0, #(240+BORDER_R)*4\r
-\r
-.if \is270\r
-    mode2_4pix  0\r
-.else\r
-    mode2_4pix 24\r
-.endif\r
-    stmia   r0!,{r7,r8,r10,lr}\r
-    sub     r0, r0, #(240+BORDER_R)*4*3\r
-\r
-    bpl     0b @ .loopM2RGB32_270\r
-\r
-    mov     r3,  #0                @ bottom border\r
-    mov     r4,  #0\r
-    mov     r5,  #0\r
-    mov     r6,  #0\r
-    stmia   r0!, {r3-r6}\r
-    stmia   r0!, {r3-r6}\r
-    add     r0,  r0, #(240+BORDER_R)*4-8*4\r
-    stmia   r0!, {r3-r6}\r
-    stmia   r0!, {r3-r6}\r
-    add     r0,  r0, #(240+BORDER_R)*4-8*4\r
-    stmia   r0!, {r3-r6}\r
-    stmia   r0!, {r3-r6}\r
-    add     r0,  r0, #(240+BORDER_R)*4-8*4\r
-    stmia   r0!, {r3-r6}\r
-    nop                             @ phone crashes if this is commented out. Do I stress it too much?\r
-    stmia   r0!, {r3-r6}\r
-\r
-    add     r12, r12, #1<<16\r
-    subs    r12, r12, #1\r
-    ldmeqfd sp!, {r4-r11,pc}        @ return\r
-\r
-.if BORDER_R\r
-    add     r0,  r0, #BORDER_R*4\r
-.endif\r
-.if \is270\r
-    sub     r9,  r9, #4            @ fix src pointer\r
-.else\r
-    add     r9,  r9, #4\r
-.endif\r
-    mov     r1,  r9\r
-\r
-    stmia   r0!, {r3-r6}            @ top border\r
-    stmia   r0!, {r3-r6}\r
-    add     r7,  r0, #(240+BORDER_R)*4-8*4\r
-    stmia   r7!, {r3-r6}\r
-    stmia   r7!, {r3-r6}\r
-    add     r7,  r7, #(240+BORDER_R)*4-8*4\r
-    stmia   r7!, {r3-r6}\r
-    stmia   r7!, {r3-r6}\r
-    add     r7,  r7, #(240+BORDER_R)*4-8*4\r
-    stmia   r7!, {r3-r6}\r
-    stmia   r7!, {r3-r6}\r
-\r
-    orr     r12, r12, #(224/4-1)<<16 @ restore row counter\r
-    b       0b @ .loopM2RGB32_270\r
-.endm\r
-\r
-\r
-.global vidConvCpy_90 @ void *to, void *from, void *pal, int width\r
-\r
-vidConvCpy_90:\r
-    vidConvCpyM2_landscape 0\r
-\r
-\r
-.global vidConvCpy_270 @ void *to, void *from, void *pal, int width\r
-\r
-vidConvCpy_270:\r
-    vidConvCpyM2_landscape 1\r
-\r
-\r
-.global vidConvCpy_center_0 @ void *to, void *from, void *pal\r
-\r
-vidConvCpy_center_0:\r
-    stmfd   sp!, {r4-r6,r11,lr}\r
-\r
-    mov     r11, #0xff\r
-    add     r1,  r1, #8     @ not border (centering 32col here)\r
-\r
-    mov     r12, #(240/4-1)<<16\r
-    orr     r12, r12, #224\r
-\r
-.loopRGB32_c0:\r
-    ldr     lr, [r1], #4\r
-       subs    r12, r12, #1<<16\r
-\r
-    mode2_4pix2_0 lr\r
-    stmia   r0!, {r3-r6}\r
-    bpl     .loopRGB32_c0\r
-\r
-       sub     r12, r12, #1\r
-       adds    r12, r12, #1<<16\r
-    ldmeqfd sp!, {r4-r6,r11,pc} @ return\r
-.if BORDER_R\r
-    add     r0,  r0, #BORDER_R*4\r
-.endif\r
-    add     r1,  r1, #88\r
-    orr     r12, #(240/4-1)<<16\r
-    b       .loopRGB32_c0\r
-\r
-\r
-.global vidConvCpy_center_180 @ void *to, void *from, void *pal\r
-\r
-vidConvCpy_center_180:\r
-    stmfd   sp!, {r4-r6,r11,lr}\r
-\r
-    mov     r11, #0xff\r
-    add     r1,  r1, #0x11c00\r
-    add     r1,  r1, #0x002B8 @ #328*224-72\r
-\r
-    mov     r12, #(240/4-1)<<16\r
-    orr     r12, r12, #224\r
-\r
-.loopRGB32_c180:\r
-    ldr     lr, [r1, #-4]!\r
-       subs    r12, r12, #1<<16\r
-\r
-    mode2_4pix2_180 lr\r
-    stmia   r0!, {r3-r6}\r
-    bpl     .loopRGB32_c180\r
-\r
-       sub     r12, r12, #1\r
-       adds    r12, r12, #1<<16\r
-    ldmeqfd sp!, {r4-r6,r11,pc} @ return\r
-.if BORDER_R\r
-    add     r0,  r0, #BORDER_R*4\r
-.endif\r
-    sub     r1,  r1, #88\r
-    orr     r12, #(240/4-1)<<16\r
-    b       .loopRGB32_c180\r
-\r
-\r
-@ note: the following code assumes that (pal[x] & 0x030303) == 0\r
-\r
-.global vidConvCpy_center2_40c_0 @ void *to, void *from, void *pal, int lines\r
-\r
-vidConvCpy_center2_40c_0:\r
-    stmfd   sp!, {r4-r6,r10,r11,lr}\r
-\r
-    mov     r11, #0xff\r
-    mov     r10, #0xfc\r
-    orr     r10, r10, lsl #8\r
-    orr     r10, r10, lsl #8\r
-    add     r1,  r1, #8     @ border\r
-\r
-    mov     r12, #(240/3-1)<<16\r
-    orr     r12, r12, r3\r
-\r
-.loopRGB32_c2_40c_0:\r
-    ldr     lr, [r1], #4\r
-       subs    r12, r12, #1<<16\r
-\r
-    mode2_4pix_to3 lr, 0\r
-\r
-    stmia   r0!, {r3-r5}\r
-    bpl     .loopRGB32_c2_40c_0\r
-\r
-       sub     r12, r12, #1\r
-       adds    r12, r12, #1<<16\r
-    ldmeqfd sp!, {r4-r6,r10,r11,pc} @ return\r
-.if BORDER_R\r
-    add     r0,  r0, #BORDER_R*4\r
-.endif\r
-    add     r1,  r1, #8\r
-    orr     r12, #(240/3-1)<<16\r
-    b       .loopRGB32_c2_40c_0\r
-\r
-\r
-.global vidConvCpy_center2_40c_180 @ void *to, void *from, void *pal, int lines\r
-\r
-vidConvCpy_center2_40c_180:\r
-    stmfd   sp!, {r4-r6,r10,r11,lr}\r
-\r
-    mov     r11, #0xff\r
-    mov     r10, #0xfc\r
-    orr     r10, r10, lsl #8\r
-    orr     r10, r10, lsl #8\r
-\r
-    mov     r4,  #328\r
-    mla     r1,  r3, r4, r1\r
-@    add     r1,  r1, #0x11000\r
-@    add     r1,  r1, #0x00f00 @ #328*224\r
-\r
-    mov     r12, #(240/3-1)<<16\r
-    orr     r12, r12, r3\r
-\r
-.loop_c2_40c_180:\r
-    ldr     lr, [r1, #-4]!\r
-       subs    r12, r12, #1<<16\r
-\r
-    mode2_4pix_to3 lr, 1\r
-\r
-    stmia   r0!, {r3-r5}\r
-    bpl     .loop_c2_40c_180\r
-\r
-       sub     r12, r12, #1\r
-       adds    r12, r12, #1<<16\r
-    ldmeqfd sp!, {r4-r6,r10,r11,pc} @ return\r
-.if BORDER_R\r
-    add     r0,  r0, #BORDER_R*4\r
-.endif\r
-    sub     r1,  r1, #8\r
-    orr     r12, #(240/3-1)<<16\r
-    b       .loop_c2_40c_180\r
-\r
-\r
-.global vidConvCpy_center2_32c_0 @ void *to, void *from, void *pal, int lines\r
-\r
-vidConvCpy_center2_32c_0:\r
-    stmfd   sp!, {r4-r11,lr}\r
-\r
-    mov     r10, #0xfc\r
-    orr     r10, r10, lsl #8\r
-    orr     r10, r10, lsl #8\r
-    mov     r11, #0xff\r
-    add     r1,  r1, #8     @ border\r
-\r
-    mov     r12, #(240/15-1)<<16\r
-    orr     r12, r12, r3\r
-\r
-.loop_c2_32c_0:\r
-    ldmia   r1!, {r7-r9,lr}\r
-       subs    r12, r12, #1<<16\r
-\r
-    mode2_4pix2_0 r7\r
-    stmia   r0!, {r3-r6}\r
-    mode2_4pix2_0 r8\r
-    stmia   r0!, {r3-r6}\r
-    mode2_4pix2_0 r9\r
-    stmia   r0!, {r3-r6}\r
-    mode2_4pix_to3 lr, 0\r
-    stmia   r0!, {r3-r5}\r
-    bpl     .loop_c2_32c_0\r
-\r
-       sub     r12, r12, #1\r
-       adds    r12, r12, #1<<16\r
-    ldmeqfd sp!, {r4-r11,pc} @ return\r
-.if BORDER_R\r
-    add     r0,  r0, #BORDER_R*4\r
-.endif\r
-    add     r1,  r1, #64+8\r
-    orr     r12, #(240/15-1)<<16\r
-    b       .loop_c2_32c_0\r
-\r
-\r
-.global vidConvCpy_center2_32c_180 @ void *to, void *from, void *pal, int lines\r
-\r
-vidConvCpy_center2_32c_180:\r
-    stmfd   sp!, {r4-r11,lr}\r
-\r
-    mov     r10, #0xfc\r
-    orr     r10, r10, lsl #8\r
-    orr     r10, r10, lsl #8\r
-    mov     r11, #0xff\r
-\r
-    mov     r4,  #328\r
-    mla     r1,  r3, r4, r1\r
-@    add     r1,  r1, #0x11000\r
-@    add     r1,  r1, #0x00f00 @ #328*224\r
-\r
-    mov     r12, #(240/15-1)<<16\r
-    orr     r12, r12, r3\r
-\r
-.loop_c2_32c_180:\r
-    ldmdb   r1!, {r7-r9,lr}\r
-       subs    r12, r12, #1<<16\r
-\r
-    mode2_4pix2_180 lr\r
-    stmia   r0!, {r3-r6}\r
-    mode2_4pix2_180 r9\r
-    stmia   r0!, {r3-r6}\r
-    mode2_4pix2_180 r8\r
-    stmia   r0!, {r3-r6}\r
-    mode2_4pix_to3 r7, 1\r
-    stmia   r0!, {r3-r5}\r
-    bpl     .loop_c2_32c_180\r
-\r
-       sub     r12, r12, #1\r
-       adds    r12, r12, #1<<16\r
-    ldmeqfd sp!, {r4-r11,pc} @ return\r
-.if BORDER_R\r
-    add     r0,  r0, #BORDER_R*4\r
-.endif\r
-    sub     r1,  r1, #64+8\r
-    orr     r12, #(240/15-1)<<16\r
-    b       .loop_c2_32c_180\r
-\r
-\r
-@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r
-\r
-\r
-.global vidClear @ void *to, int lines\r
-\r
-vidClear:\r
-    stmfd   sp!, {lr}\r
-    mov     r12, #240/16-1\r
-    orr     r12, r1, r12, lsl #16\r
-    mov     r1, #0\r
-    mov     r2, #0\r
-    mov     r3, #0\r
-    mov     lr, #0\r
-\r
-.loopVidClear:\r
-       subs    r12, r12, #1<<16\r
-\r
-    stmia   r0!, {r1-r3,lr}\r
-    stmia   r0!, {r1-r3,lr}\r
-    stmia   r0!, {r1-r3,lr}\r
-    stmia   r0!, {r1-r3,lr}\r
-    bpl     .loopVidClear\r
-\r
-       sub     r12, r12, #1\r
-       adds    r12, r12, #1<<16\r
-    ldmeqfd sp!, {pc}        @ return\r
-.if BORDER_R\r
-    add     r0,  r0, #BORDER_R*4\r
-.endif\r
-    orr     r12, #(240/16-1)<<16\r
-    b       .loopVidClear\r
-\r
-@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r
-\r
-.equ EExecSetExceptionHandler, (90)\r
-\r
-.global my_SetExceptionHandler\r
-\r
-my_SetExceptionHandler:\r
-    mov     ip, lr\r
-    swi     EExecSetExceptionHandler\r
-\r