52 lines
1.1 KiB
Plaintext
52 lines
1.1 KiB
Plaintext
Bitmap_FloodFill:
|
|
;input:
|
|
;r0 = color to fill screen with (15-bit color)
|
|
STMFD sp!,{r0-r12,lr}
|
|
|
|
MOV R2,#160
|
|
MOV R4,#0x06000000
|
|
outerloop_floodfill:
|
|
MOV R1,#240 ;restore inner loop counter
|
|
innerloop_floodfill:
|
|
strH r0,[r4]
|
|
add r4,r4,#2 ;next pixel
|
|
subs r1,r1,#1 ;decrement loop counter
|
|
bne innerloop_floodfill
|
|
subs r2,r2,#1
|
|
bne outerloop_floodfill
|
|
|
|
LDMFD sp!,{r0-r12,pc}
|
|
|
|
Bitmap_Locate:
|
|
;given x and y coordinates, offsets vram addr to that pixel on screen.
|
|
;input:
|
|
;r0 = x
|
|
;r1 = y
|
|
;output: r2 = vram area
|
|
STMFD sp!,{r4-r12,lr}
|
|
mov r2,#0x06000000 ;vram base
|
|
|
|
|
|
mov r4,#240*2 ;240 pixels across, 2 bytes per pixel
|
|
mul r1,r4,r1
|
|
add r2,r2,r1 ;add y*480
|
|
add r2,r2,r0,lsl #1 ;add x*2
|
|
LDMFD sp!,{r4-r12,pc}
|
|
|
|
Bitmap_StorePixel:
|
|
;input: r3 = color
|
|
;r0 = x
|
|
;r1 = y
|
|
bl Bitmap_Locate
|
|
strH r3,[r2] ;store the pixel color in video memory
|
|
bx lr
|
|
|
|
Bitmap_GetPixel:
|
|
;retrieves the color of the pixel at [r2] and stores its color value in r3.
|
|
;r0 = x
|
|
;r1 = y
|
|
;output in r3
|
|
bl Bitmap_Locate
|
|
ldrH r3,[r2]
|
|
bx lr
|