\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
\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
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
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
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
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
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
\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
\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
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