svp minor adjustments, copyright
[picodrive.git] / Pico / Draw2.s
index 09c7ac7..f001089 100644 (file)
@@ -3,12 +3,12 @@
 @ assembly optimized versions of most funtions from draw2.c\r
 @ this is highly specialized, be careful if changing related C code!\r
 \r
-@ (c) Copyright 2006, notaz\r
+@ (c) Copyright 2007, Grazvydas "notaz" Ignotas\r
 @ All Rights Reserved\r
 \r
 \r
 .extern Pico\r
-.extern framebuff\r
+.extern PicoDraw2FB\r
 \r
 @ define these constants in your include file:\r
 @ .equiv START_ROW,            1\r
 BackFillFull:\r
     stmfd   sp!, {r4-r9,lr}\r
 \r
-    ldr     lr, =framebuff      @ lr=framebuff\r
+    ldr     lr, =PicoDraw2FB      @ lr=PicoDraw2FB\r
+    mov     r0, r0, lsl #26\r
     ldr     lr, [lr]\r
+    mov     r0, r0, lsr #26\r
     add     lr, lr, #328*8\r
 \r
-    mov     r0, r0, lsl #26\r
-    mov     r0, r0, lsr #26\r
     orr     r0, r0, r0, lsl #8\r
     orr     r0, r0, r0, lsl #16\r
 \r
@@ -344,25 +344,25 @@ DrawLayerFull:
 \r
     mov     r6, r1        @ hcache\r
 \r
+    ldr     r11, =(Pico+0x22228)  @ Pico.video\r
+    ldr     r10, =(Pico+0x10000)  @ r10=Pico.vram\r
+    ldrb    r5, [r11, #13]        @ pvid->reg[13]\r
+    ldrb    r7, [r11, #11]\r
+\r
     sub     lr, r3, r2\r
     and     lr, lr, #0x00ff0000   @ lr=cells\r
 \r
-    ldr     r10, =(Pico+0x10000)  @ r10=Pico.vram\r
-\r
-    ldr     r11, =(Pico+0x22228)  @ Pico.video\r
-    ldrb    r5, [r11, #13]        @ pvid->reg[13]\r
     mov     r5, r5, lsl #10       @ htab=pvid->reg[13]<<9; (halfwords)\r
     add     r5, r5, r0, lsl #1    @ htab+=plane\r
     bic     r5, r5, #0x00ff0000   @ just in case\r
 \r
-    ldrb    r7, [r11, #11]\r
     tst     r7, #3                @ full screen scroll? (if ==0)\r
+    ldrb    r7, [r11, #16]        @ ??hh??ww\r
     ldreqh  r5, [r10, r5]\r
     biceq   r5, r5, #0x0000fc00   @ r5=hscroll (0-0x3ff)\r
     movne   r5, r5, lsr #1\r
     orrne   r5, r5, #0x8000       @ this marks that we have htab pointer, not hscroll here\r
 \r
-    ldrb    r7, [r11, #16]        @ ??hh??ww\r
     and     r8, r7, #3\r
 \r
     orr     r5, r5, r7, lsl #1+24\r
@@ -386,7 +386,7 @@ DrawLayerFull:
     mov     r8, r8, lsl #24+5\r
     orr     r8, r8, #0x1f000000\r
 \r
-       @ Find name table:\r
+    @ Find name table:\r
     tst     r0, r0\r
     ldreqb  r4, [r11, #2]\r
     moveq   r4, r4, lsr #3\r
@@ -394,14 +394,14 @@ DrawLayerFull:
     and     r4, r4, #7\r
     orr     lr, lr, r4, lsl #13   @ lr|=nametab_bits{3}<<13\r
 \r
-    ldr     r11, =framebuff       @ r11=framebuff\r
-    ldr     r11, [r11]\r
+    ldr     r11, =PicoDraw2FB     @ r11=PicoDraw2FB\r
     sub     r4, r9, #(START_ROW<<24)\r
+    ldr     r11, [r11]\r
     mov     r4, r4, asr #24\r
     mov     r7, #328*8\r
     mla     r11, r4, r7, r11      @ scrpos+=8*328*(planestart-START_ROW);\r
 \r
-       @ Get vertical scroll value:\r
+    @ Get vertical scroll value:\r
     add     r7, r10, #0x012000\r
     add     r7, r7,  #0x000180    @ r7=Pico.vsram (Pico+0x22180)\r
     ldr     r7, [r7]\r
@@ -454,10 +454,10 @@ DrawLayerFull:
     ldrh    r7, [r10, r7]\r
 \r
 .rtr_hscroll_done:\r
+    and     r8, r8, #0xff000000\r
     rsb     r4, r7, #0          @ r4=tilex=(-ts->hscroll)>>3\r
     mov     r4, r4, asr #3\r
     and     r4, r4, #0xff\r
-    and     r8, r8, #0xff000000\r
     orr     r8, r8, r4          @ r8=(xmask<<24)|tilex\r
 \r
     sub     r7, r7, #1\r
@@ -572,9 +572,9 @@ DrawTilesFromCacheF:
     mov     r9, #0xff000000 @ r9=prevcode=-1\r
     mvn     r6, #0          @ r6=prevy=-1\r
 \r
-    ldr     r4, =framebuff  @ r4=framebuff\r
-    ldr     r4, [r4]\r
+    ldr     r4, =PicoDraw2FB  @ r4=PicoDraw2FB\r
     ldr     r1, [r0], #4    @ read y offset\r
+    ldr     r4, [r4]\r
     mov     r7, #328\r
     mla     r1, r7, r1, r4\r
     sub     r12, r1, #(328*8*START_ROW) @ r12=scrpos\r
@@ -591,7 +591,7 @@ DrawTilesFromCacheF:
     movs    r1, r7, lsr #16 @ r1=dx;\r
     ldmeqfd sp!, {r4-r10,pc} @ dx is never zero, this must be a terminator, return\r
 \r
-    @ trow changed?\r
+    @ row changed?\r
     cmp     r6, r7, lsr #27\r
     movne   r6, r7, lsr #27\r
     movne   r4, #328*8\r
@@ -696,13 +696,13 @@ DrawWindowFull:
 \r
     mov     r9, #0xff000000       @ r9=prevcode=-1\r
 \r
-    ldr     r11, =framebuff       @ r11=scrpos\r
+    ldr     r11, =PicoDraw2FB     @ r11=scrpos\r
+    and     r4, r0, #0xff\r
     ldr     r11, [r11]\r
+    sub     r4, r4, #START_ROW\r
     add     r11, r11, #328*8\r
     add     r11, r11, #8\r
 \r
-    and     r4, r0, #0xff\r
-    sub     r4, r4, #START_ROW\r
     mov     r7, #328*8\r
     mla     r11, r7, r4, r11      @ scrpos+=8*328*(start-START_ROW);\r
     mov     r0, #0xf\r
@@ -881,9 +881,9 @@ DrawSpriteFull:
 \r
     mov     r12, r3,  lsl #23\r
     mov     r12, r12, lsr #23\r
-    sub     r12, r12, #0x78 @ r12=sy\r
 \r
     ldr     lr, [r0, #4]    @ lr=code\r
+    sub     r12, r12, #0x78 @ r12=sy\r
     mov     r8, lr, lsl #7\r
     mov     r8, r8, lsr #23\r
     sub     r8, r8, #0x78   @ r8=sx\r
@@ -894,9 +894,8 @@ DrawSpriteFull:
     and     r3, lr, #0x6000\r
     mov     r3, r3, lsr #9  @ r3=pal=((code>>9)&0x30);\r
 \r
+    ldr     r11, =PicoDraw2FB     @ r11=scrpos\r
     ldr     r10, =(Pico+0x10000)  @ r10=Pico.vram\r
-\r
-    ldr     r11, =framebuff       @ r11=scrpos\r
     ldr     r11, [r11]\r
     sub     r1, r12, #(START_ROW*8)\r
     mov     r0, #328\r