\r
@ -------- some macros --------\r
\r
+@ helpers\r
+.macro add_c24 d s c\r
+ add \d, \s, #(\c & 0x00ff00)\r
+.if \c & 0x0000ff\r
+ add \d, \d, #(\c & 0x0000ff)\r
+.endif\r
+.if \c & 0xff0000\r
+ add \d, \d, #(\c & 0xff0000)\r
+.endif\r
+.endm\r
\r
-@ helper\r
@ TileLineSinglecol (r1=pdest, r2=pixels8, r3=pal) r4: scratch, r0: pixels8_old\r
.macro TileLineSinglecol notsinglecol=0\r
and r2, r2, #0xf @ #0x0000000f\r
\r
mov r6, r1 @ hcache\r
\r
- ldr r11, [r12, #OFS_Pico_video]\r
- ldr r10, [r12, #OFS_Pico_vram]\r
- ldrb r5, [r11, #13] @ pvid->reg[13]\r
- ldrb r7, [r11, #11]\r
+ ldr r11, [r12, #OFS_EST_Pico]\r
+ ldr r10, [r12, #OFS_EST_PicoMem_vram]\r
+ ldrb r5, [r11, #OFS_Pico_video_reg+13] @ pvid->reg[13]\r
+ ldrb r7, [r11, #OFS_Pico_video_reg+11]\r
\r
sub lr, r3, r2\r
and lr, lr, #0x00ff0000 @ lr=cells\r
bic r5, r5, #0x00ff0000 @ just in case\r
\r
tst r7, #3 @ full screen scroll? (if ==0)\r
- ldrb r7, [r11, #16] @ ??hh??ww\r
+ ldrb r7, [r11, #OFS_Pico_video_reg+16] @ ??hh??ww\r
ldreqh r5, [r10, r5]\r
biceq r5, r5, #0x0000fc00 @ r5=hscroll (0-0x3ff)\r
movne r5, r5, lsr #1\r
\r
@ Find name table:\r
tst r0, r0\r
- ldreqb r4, [r11, #2]\r
+ ldreqb r4, [r11, #OFS_Pico_video_reg+2]\r
moveq r4, r4, lsr #3\r
- ldrneb r4, [r11, #4]\r
+ ldrneb r4, [r11, #OFS_Pico_video_reg+4]\r
and r4, r4, #7\r
orr lr, lr, r4, lsl #13 @ lr|=nametab_bits{3}<<13\r
\r
ldr r11,[sp, #9*4] @ est\r
sub r4, r9, #(START_ROW<<24)\r
- ldr r11, [r11, #OFS_Draw2FB]\r
+ ldr r11, [r11, #OFS_EST_Draw2FB]\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
- add r7, r10, #0x012000\r
- add r7, r7, #0x000180 @ r7=Pico.vsram (Pico+0x22180)\r
+ add_c24 r7, r10, (OFS_PMEM_vsram-OFS_PMEM_vram)\r
ldr r7, [r7]\r
tst r0, r0\r
moveq r7, r7, lsl #22\r
mov r9, #0xff000000 @ r9=prevcode=-1\r
mvn r6, #0 @ r6=prevy=-1\r
\r
- ldr r4, [r1, #OFS_Draw2FB]\r
+ ldr r4, [r1, #OFS_EST_Draw2FB]\r
ldr r2, [r0], #4 @ read y offset\r
mov r7, #328\r
mla r2, r7, r2, r4\r
sub r12, r2, #(328*8*START_ROW) @ r12=scrpos\r
\r
- ldr r10, [r1, #OFS_Pico_vram]\r
+ ldr r10, [r1, #OFS_EST_PicoMem_vram]\r
mov r8, r0 @ hc\r
mov r0, #0xf\r
\r
DrawWindowFull:\r
stmfd sp!, {r4-r11,lr}\r
\r
- ldr r11, [r3, #OFS_Pico_video]\r
- ldrb r12, [r11, #3] @ pvid->reg[3]\r
+ ldr r11, [r3, #OFS_EST_Pico]\r
+ ldrb r12, [r11, #OFS_Pico_video_reg+3] @ pvid->reg[3]\r
mov r12, r12, lsl #10\r
\r
- ldr r4, [r11, #12]\r
+ ldr r4, [r11, #OFS_Pico_video_reg+12]\r
mov r5, #1 @ nametab_step\r
tst r4, #1 @ 40 cell mode?\r
andne r12, r12, #0xf000 @ 0x3c<<10\r
and r4, r0, #0xff\r
mla r12, r5, r4, r12 @ nametab += nametab_step*start;\r
\r
- ldr r10, [r3, #OFS_Pico_vram]\r
+ ldr r10, [r3, #OFS_EST_PicoMem_vram]\r
mov r4, r0, lsr #16 @ r4=start_cell_h\r
add r7, r12, r4, lsl #1\r
\r
\r
mov r9, #0xff000000 @ r9=prevcode=-1\r
\r
- ldr r11, [r3, #OFS_Draw2FB]\r
+ ldr r11, [r3, #OFS_EST_Draw2FB]\r
and r4, r0, #0xff\r
add r11, r11, #328*8\r
sub r4, r4, #START_ROW\r
tst r9, #0x080000 @ hflip?\r
bne .dwf_hflip\r
\r
- @ Tile (r1=pdest, r3=pal, r9=prevcode, r10=Pico.vram) r2,r4,r7: scratch, r0=0xf\r
+ @ Tile (r1=pdest, r3=pal, r9=prevcode, r10=PicoMem.vram)\r
+ @ r2,r4,r7: scratch, r0=0xf\r
Tile 0, 0\r
b .dwfloop\r
\r
cmp r6, #(END_ROW*8+8)\r
bge 52b\r
\r
- @ Tile (r1=pdest, r3=pal, r9=prevcode, r10=Pico.vram) r2,r4,r7: scratch, r0=0xf\r
+ @ Tile (r1=pdest, r3=pal, r9=prevcode, r10=PicoMem.vram)\r
+ @ r2,r4,r7: scratch, r0=0xf\r
Tile \hflip, \vflip\r
b 52b\r
.endm\r
and r3, lr, #0x6000\r
mov r3, r3, lsr #9 @ r3=pal=((code>>9)&0x30);\r
\r
- ldr r11, [r1, #OFS_Draw2FB]\r
- ldr r10, [r1, #OFS_Pico_vram]\r
+ ldr r11, [r1, #OFS_EST_Draw2FB]\r
+ ldr r10, [r1, #OFS_EST_PicoMem_vram]\r
sub r1, r12, #(START_ROW*8)\r
mov r0, #328\r
mla r11, r1, r0, r11 @ scrpos+=(sy-START_ROW*8)*328;\r