Rev 9941 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2455 | mario79 | 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
||
10051 | ace_dent | 3 | ;; Copyright (C) KolibriOS team 2011-2024. All rights reserved. ;; |
2455 | mario79 | 4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
||
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
1894 | serge | 7 | |
4850 | mario79 | 8 | |
2384 | hidnplayr | 9 | struct BLITTER_BLOCK |
10 | xmin dd ? |
||
11 | ymin dd ? |
||
12 | xmax dd ? |
||
13 | ymax dd ? |
||
14 | ends |
||
1894 | serge | 15 | |
16 | |||
2384 | hidnplayr | 17 | struct BLITTER |
2988 | Serge | 18 | dc RECT |
19 | sc RECT |
||
2384 | hidnplayr | 20 | dst_x dd ? ; 32 |
21 | dst_y dd ? ; 36 |
||
22 | src_x dd ? ; 40 |
||
23 | src_y dd ? ; 44 |
||
24 | w dd ? ; 48 |
||
25 | h dd ? ; 52 |
||
1894 | serge | 26 | |
2384 | hidnplayr | 27 | bitmap dd ? ; 56 |
28 | stride dd ? ; 60 |
||
29 | ends |
||
1894 | serge | 30 | |
31 | |||
2988 | Serge | 32 | |
1894 | serge | 33 | align 4 |
2988 | Serge | 34 | block_clip: |
35 | ;esi= clip RECT ptr |
||
36 | ;edi= RECT ptr |
||
37 | ;return code: |
||
5349 | serge | 38 | ;CF= 0 - draw, 1 - don't draw |
1894 | serge | 39 | |
2288 | clevermous | 40 | push ebx |
1894 | serge | 41 | |
9715 | Doczom | 42 | mov eax, [edi + RECT.left] |
43 | mov ebx, [edi + RECT.right] |
||
44 | mov ecx, [esi + RECT.left] ;clip.left |
||
45 | mov edx, [esi + RECT.right] ;clip.right |
||
1894 | serge | 46 | |
2988 | Serge | 47 | cmp eax, edx ;left >= clip.right |
48 | jge .fail |
||
1894 | serge | 49 | |
2988 | Serge | 50 | cmp ebx, ecx ;right < clip.left |
51 | jl .fail |
||
1894 | serge | 52 | |
2988 | Serge | 53 | cmp eax, ecx ;left >= clip.left |
5349 | serge | 54 | jge @F |
1894 | serge | 55 | |
9715 | Doczom | 56 | mov [edi + RECT.left], ecx |
2988 | Serge | 57 | @@: |
58 | cmp ebx, edx ;right <= clip.right |
||
59 | jle @f |
||
5349 | serge | 60 | |
9715 | Doczom | 61 | mov [edi + RECT.right], edx |
2988 | Serge | 62 | @@: |
9715 | Doczom | 63 | mov eax, [edi + RECT.top] |
64 | mov ebx, [edi + RECT.bottom] |
||
65 | mov ecx, [esi + RECT.top] ;clip.top |
||
66 | mov edx, [esi + RECT.bottom] ;clip.bottom |
||
2988 | Serge | 67 | |
68 | cmp eax, edx ;top >= clip.bottom |
||
69 | jge .fail |
||
70 | |||
71 | cmp ebx, ecx ;bottom < clip.top |
||
72 | jl .fail |
||
73 | |||
74 | cmp eax, ecx ;top >= clip.top |
||
5349 | serge | 75 | jge @F |
2988 | Serge | 76 | |
9715 | Doczom | 77 | mov [edi + RECT.top], ecx |
2988 | Serge | 78 | @@: |
79 | cmp ebx, edx ;bottom <= clip.bottom |
||
80 | jle @f |
||
5349 | serge | 81 | |
9715 | Doczom | 82 | mov [edi + RECT.bottom], edx |
2988 | Serge | 83 | @@: |
2288 | clevermous | 84 | pop ebx |
5349 | serge | 85 | clc |
1894 | serge | 86 | ret |
2988 | Serge | 87 | .fail: |
88 | pop ebx |
||
5349 | serge | 89 | stc |
2988 | Serge | 90 | ret |
1894 | serge | 91 | |
2988 | Serge | 92 | |
1894 | serge | 93 | align 4 |
94 | blit_clip: |
||
95 | |||
5349 | serge | 96 | ;return code: |
97 | ;CF= 0 - draw, 1 - don't draw |
||
98 | |||
7136 | dunkaist | 99 | .sx0 = 8 |
100 | .sy0 = 12 |
||
101 | .sx1 = 16 |
||
102 | .sy1 = 20 |
||
1894 | serge | 103 | |
7136 | dunkaist | 104 | .dx0 = 24 |
105 | .dy0 = 28 |
||
106 | .dx1 = 32 |
||
107 | .dy1 = 36 |
||
1894 | serge | 108 | |
109 | |||
2288 | clevermous | 110 | push edi |
111 | push esi |
||
112 | push ebx |
||
113 | sub esp, 40 |
||
1894 | serge | 114 | |
2288 | clevermous | 115 | mov ebx, ecx |
9715 | Doczom | 116 | mov edx, [ecx + BLITTER.src_x] |
2288 | clevermous | 117 | mov [esp+.sx0], edx |
9715 | Doczom | 118 | mov eax, [ecx + BLITTER.src_y] |
2288 | clevermous | 119 | mov [esp+.sy0], eax |
9715 | Doczom | 120 | add edx, [ecx + BLITTER.w] |
121 | add eax, [ecx + BLITTER.h] |
||
122 | mov [esp + .sx1], edx |
||
123 | mov [esp + .sy1], eax |
||
1894 | serge | 124 | |
9715 | Doczom | 125 | lea edi, [esp + .sx0] |
126 | lea esi, [ebx + BLITTER.sc] |
||
1894 | serge | 127 | |
2288 | clevermous | 128 | call block_clip |
5349 | serge | 129 | jc .done |
1894 | serge | 130 | |
9715 | Doczom | 131 | mov edi, [esp + .sx0] |
132 | mov edx, [ebx + BLITTER.dst_x] |
||
2288 | clevermous | 133 | add edx, edi |
9715 | Doczom | 134 | sub edx, [ebx + BLITTER.src_x] |
135 | mov [esp + .dx0], edx |
||
1894 | serge | 136 | |
2288 | clevermous | 137 | mov ecx, [esp+.sy0] |
9715 | Doczom | 138 | mov eax, [ebx + BLITTER.dst_y] |
2288 | clevermous | 139 | add eax, ecx |
9715 | Doczom | 140 | sub eax, [ebx + BLITTER.src_y] |
141 | mov [esp + .dy0], eax |
||
2988 | Serge | 142 | |
2288 | clevermous | 143 | sub edx, edi |
9715 | Doczom | 144 | add edx, [esp + .sx1] |
145 | mov [esp + .dx1], edx |
||
1894 | serge | 146 | |
2288 | clevermous | 147 | sub eax, ecx |
9715 | Doczom | 148 | add eax, [esp + .sy1] |
149 | mov [esp + .dy1], eax |
||
1894 | serge | 150 | |
9715 | Doczom | 151 | lea edi, [esp + .dx0] |
152 | lea esi, [ebx + BLITTER.dc] |
||
2288 | clevermous | 153 | call block_clip |
5349 | serge | 154 | jc .done |
1894 | serge | 155 | |
9715 | Doczom | 156 | mov edx, [esp + .dx0] |
157 | mov eax, [esp + .dx1] |
||
2288 | clevermous | 158 | sub eax, edx |
9715 | Doczom | 159 | mov [ebx + BLITTER.w], eax |
1894 | serge | 160 | |
9715 | Doczom | 161 | mov eax, [esp + .dy0] |
162 | mov ecx, [esp + .dy1] |
||
2288 | clevermous | 163 | sub ecx, eax |
9715 | Doczom | 164 | mov [ebx + BLITTER.h], ecx |
1894 | serge | 165 | |
9715 | Doczom | 166 | mov ecx, [ebx + BLITTER.src_x] |
2288 | clevermous | 167 | add ecx, edx |
9715 | Doczom | 168 | sub ecx, [ebx + BLITTER.dst_x] |
169 | mov [ebx + BLITTER.src_x], ecx |
||
1894 | serge | 170 | |
9715 | Doczom | 171 | mov ecx, [ebx + BLITTER.src_y] |
2288 | clevermous | 172 | add ecx, eax |
9715 | Doczom | 173 | sub ecx, [ebx + BLITTER.dst_y] |
174 | mov [ebx + BLITTER.src_y], ecx |
||
175 | mov [ebx + BLITTER.dst_x], edx |
||
176 | mov [ebx + BLITTER.dst_y], eax |
||
5349 | serge | 177 | clc |
2988 | Serge | 178 | .done: |
2288 | clevermous | 179 | add esp, 40 |
180 | pop ebx |
||
181 | pop esi |
||
182 | pop edi |
||
1894 | serge | 183 | |
184 | |||
185 | purge .sx0 |
||
186 | purge .sy0 |
||
187 | purge .sx1 |
||
188 | purge .sy1 |
||
189 | |||
190 | purge .dx0 |
||
191 | purge .dy0 |
||
192 | purge .dx1 |
||
193 | purge .dy1 |
||
194 | |||
195 | ret |
||
196 | |||
197 | align 4 |
||
198 | blit_32: |
||
2288 | clevermous | 199 | push ebp |
200 | push edi |
||
201 | push esi |
||
202 | push ebx |
||
4444 | clevermous | 203 | virtual at sizeof.BLITTER |
204 | .position dd ? ; (x shl 16) + y |
||
205 | ; ??? |
||
206 | .extra_var1 dd ? |
||
6790 | 0CodErr | 207 | .flags dd ? |
4444 | clevermous | 208 | .local_vars_size = $ |
209 | end virtual |
||
210 | sub esp, .local_vars_size |
||
10051 | ace_dent | 211 | |
9715 | Doczom | 212 | mov [esp + .flags], ebx |
9679 | Doczom | 213 | |
9941 | Doczom | 214 | mov eax, [current_slot] |
215 | mov eax, [eax + APPDATA.window] |
||
216 | mov ebx, [eax + WDATA.box.width] |
||
217 | mov edx, [eax + WDATA.box.height] |
||
2988 | Serge | 218 | inc ebx |
219 | inc edx |
||
1894 | serge | 220 | |
2288 | clevermous | 221 | xor eax, eax |
1894 | serge | 222 | |
9715 | Doczom | 223 | mov [esp + BLITTER.dc.left], eax |
224 | mov [esp + BLITTER.dc.top], eax |
||
225 | mov [esp + BLITTER.dc.right], ebx |
||
226 | mov [esp + BLITTER.dc.bottom], edx |
||
1894 | serge | 227 | |
9715 | Doczom | 228 | mov [esp + BLITTER.sc.left], eax |
229 | mov [esp + BLITTER.sc.top], eax |
||
2288 | clevermous | 230 | mov eax, [ecx+24] |
2988 | Serge | 231 | |
9715 | Doczom | 232 | mov [esp + BLITTER.sc.right], eax |
2288 | clevermous | 233 | mov eax, [ecx+28] |
1894 | serge | 234 | |
9715 | Doczom | 235 | mov [esp + BLITTER.sc.bottom], eax |
2988 | Serge | 236 | |
2288 | clevermous | 237 | mov eax, [ecx] |
9715 | Doczom | 238 | mov [esp + BLITTER.dst_x], eax |
2288 | clevermous | 239 | mov eax, [ecx+4] |
9715 | Doczom | 240 | mov [esp + BLITTER.dst_y], eax |
1894 | serge | 241 | |
2288 | clevermous | 242 | mov eax, [ecx+16] |
9715 | Doczom | 243 | mov [esp + BLITTER.src_x], eax |
2288 | clevermous | 244 | mov eax, [ecx+20] |
9715 | Doczom | 245 | mov [esp + BLITTER.src_y], eax |
2288 | clevermous | 246 | mov eax, [ecx+8] |
9715 | Doczom | 247 | mov [esp + BLITTER.w], eax |
2288 | clevermous | 248 | mov eax, [ecx+12] |
9715 | Doczom | 249 | mov [esp + BLITTER.h], eax |
1894 | serge | 250 | |
251 | |||
2288 | clevermous | 252 | mov eax, [ecx+32] |
9715 | Doczom | 253 | mov [esp + BLITTER.bitmap], eax |
2288 | clevermous | 254 | mov eax, [ecx+36] |
9715 | Doczom | 255 | mov [esp + BLITTER.stride], eax |
1894 | serge | 256 | |
2288 | clevermous | 257 | mov ecx, esp |
258 | call blit_clip |
||
5349 | serge | 259 | jc .L57 |
1894 | serge | 260 | |
9941 | Doczom | 261 | mov eax, [current_slot] |
262 | mov eax, [eax + APPDATA.window] |
||
1894 | serge | 263 | |
9715 | Doczom | 264 | mov ebx, [esp + BLITTER.dst_x] |
265 | mov ebp, [esp + BLITTER.dst_y] |
||
9941 | Doczom | 266 | add ebx, [eax + WDATA.box.left] |
267 | add ebp, [eax + WDATA.box.top] |
||
10051 | ace_dent | 268 | |
9715 | Doczom | 269 | test [esp + .flags], BLIT_CLIENT_RELATIVE |
10051 | ace_dent | 270 | jz .no_client_relative |
2430 | mario79 | 271 | |
9941 | Doczom | 272 | add ebx, [eax + WDATA.clientbox.left] |
273 | add ebp, [eax + WDATA.clientbox.top] |
||
6790 | 0CodErr | 274 | .no_client_relative: |
275 | |||
2430 | mario79 | 276 | mov ecx, ebx |
9715 | Doczom | 277 | add ecx, [esp + BLITTER.w] |
2430 | mario79 | 278 | shl ecx, 16 |
279 | mov cx, bp |
||
9715 | Doczom | 280 | add ecx, [esp + BLITTER.h] |
2430 | mario79 | 281 | |
4444 | clevermous | 282 | mov eax, ebx |
283 | shl eax, 16 |
||
284 | mov ax, bp |
||
9715 | Doczom | 285 | mov [esp + .position], eax |
4444 | clevermous | 286 | |
2288 | clevermous | 287 | mov edi, ebp |
1894 | serge | 288 | |
2480 | mario79 | 289 | ; imul edi, [_display.pitch] |
290 | mov edi, [BPSLine_calc_area+edi*4] |
||
2446 | mario79 | 291 | ; imul ebp, [_display.width] |
2480 | mario79 | 292 | mov ebp, [d_width_calc_area+ebp*4] |
2446 | mario79 | 293 | |
2288 | clevermous | 294 | add ebp, ebx |
5351 | serge | 295 | add ebp, [_display.win_map] |
1894 | serge | 296 | |
9715 | Doczom | 297 | mov eax, [esp + BLITTER.src_y] |
298 | imul eax, [esp + BLITTER.stride] |
||
299 | mov esi, [esp + BLITTER.src_x] |
||
300 | lea esi, [eax + esi*4] |
||
301 | add esi, [esp + BLITTER.bitmap] |
||
1894 | serge | 302 | |
2430 | mario79 | 303 | mov eax, ecx |
9715 | Doczom | 304 | mov ecx, [esp + BLITTER.h] |
305 | mov edx, [esp + BLITTER.w] |
||
1894 | serge | 306 | |
2288 | clevermous | 307 | test ecx, ecx ;FIXME check clipping |
308 | jz .L57 |
||
1894 | serge | 309 | |
2288 | clevermous | 310 | test edx, edx |
311 | jz .L57 |
||
1894 | serge | 312 | |
5154 | hidnplayr | 313 | cmp [_display.bits_per_pixel], 32 |
2288 | clevermous | 314 | jne .core_24 |
1894 | serge | 315 | |
9715 | Doczom | 316 | lea edi, [edi + ebx*4] |
1894 | serge | 317 | |
8869 | rgimad | 318 | mov ebx, [current_slot_idx] |
4444 | clevermous | 319 | ; check for hardware cursor |
320 | cmp [_display.select_cursor], select_cursor |
||
321 | jne .core_32.hardware_cursor |
||
322 | ;-------------------------------------- |
||
323 | .core_32.software_cursor: |
||
1894 | serge | 324 | align 4 |
325 | .outer32: |
||
326 | |||
327 | align 4 |
||
328 | .inner32: |
||
4444 | clevermous | 329 | cmp [ebp], bl |
2449 | mario79 | 330 | jne .skip |
2430 | mario79 | 331 | ;-------------------------------------- |
4444 | clevermous | 332 | mov eax, [esi] |
1894 | serge | 333 | |
9715 | Doczom | 334 | mov ecx, [esp + .position] |
2430 | mario79 | 335 | |
336 | ; check mouse area for putpixel |
||
337 | call [_display.check_mouse] |
||
2448 | mario79 | 338 | ;-------------------------------------- |
2430 | mario79 | 339 | ; store to real LFB |
9715 | Doczom | 340 | mov [LFB_BASE + edi], eax |
2430 | mario79 | 341 | ;-------------------------------------- |
342 | align 4 |
||
2449 | mario79 | 343 | .skip: |
4444 | clevermous | 344 | add esi, 4 |
345 | add edi, 4 |
||
346 | inc ebp |
||
9715 | Doczom | 347 | add [esp + .position], 1 shl 16 |
2288 | clevermous | 348 | dec edx |
349 | jnz .inner32 |
||
1894 | serge | 350 | |
9715 | Doczom | 351 | add esi, [esp + BLITTER.stride] |
5351 | serge | 352 | add edi, [_display.lfb_pitch] |
2288 | clevermous | 353 | add ebp, [_display.width] |
1894 | serge | 354 | |
9715 | Doczom | 355 | mov edx, [esp + BLITTER.w] |
4444 | clevermous | 356 | mov eax, edx |
357 | inc [esp+.position] |
||
358 | sub ebp, edx |
||
359 | shl eax, 2 |
||
360 | sub esi, eax |
||
361 | sub edi, eax |
||
362 | shl eax, 16-2 |
||
9715 | Doczom | 363 | sub [esp + .position], eax |
364 | dec [esp + BLITTER.h] |
||
2288 | clevermous | 365 | jnz .outer32 |
4444 | clevermous | 366 | jmp .done |
367 | .core_32.hardware_cursor: |
||
368 | align 4 |
||
369 | .hw.outer32: |
||
370 | xor ecx, ecx |
||
1894 | serge | 371 | |
4444 | clevermous | 372 | align 4 |
373 | .hw.inner32: |
||
9715 | Doczom | 374 | cmp [ebp + ecx], bl |
4444 | clevermous | 375 | jne .hw.skip |
9715 | Doczom | 376 | mov eax, [esi + ecx*4] |
377 | mov [LFB_BASE + edi + ecx*4], eax |
||
4444 | clevermous | 378 | |
379 | align 4 |
||
380 | .hw.skip: |
||
381 | inc ecx |
||
382 | dec edx |
||
383 | jnz .hw.inner32 |
||
384 | |||
9715 | Doczom | 385 | add esi, [esp + BLITTER.stride] |
5351 | serge | 386 | add edi, [_display.lfb_pitch] |
4444 | clevermous | 387 | add ebp, [_display.width] |
388 | |||
9715 | Doczom | 389 | mov edx, [esp + BLITTER.w] |
390 | dec [esp + BLITTER.h] |
||
4444 | clevermous | 391 | jnz .hw.outer32 |
392 | |||
1894 | serge | 393 | .done: |
2453 | mario79 | 394 | ; call [draw_pointer] |
2988 | Serge | 395 | ; call __sys_draw_pointer |
1894 | serge | 396 | .L57: |
4444 | clevermous | 397 | add esp, .local_vars_size |
2288 | clevermous | 398 | pop ebx |
399 | pop esi |
||
400 | pop edi |
||
401 | pop ebp |
||
1894 | serge | 402 | ret |
403 | |||
404 | .core_24: |
||
5161 | hidnplayr | 405 | cmp [_display.bits_per_pixel], 24 |
406 | jne .core_16 |
||
407 | |||
9715 | Doczom | 408 | lea ebx, [ebx + ebx*2] |
409 | lea edi, [LFB_BASE + edi + ebx] |
||
8869 | rgimad | 410 | mov ebx, [current_slot_idx] |
1894 | serge | 411 | |
412 | align 4 |
||
413 | .outer24: |
||
9715 | Doczom | 414 | mov [esp + .extra_var1], edi |
2288 | clevermous | 415 | xor ecx, ecx |
1894 | serge | 416 | |
417 | align 4 |
||
418 | .inner24: |
||
9715 | Doczom | 419 | cmp [ebp + ecx], bl ; Does the process own this pixel? |
2449 | mario79 | 420 | jne .skip_1 |
2430 | mario79 | 421 | ;-------------------------------------- |
422 | push eax |
||
9715 | Doczom | 423 | mov eax, [esi + ecx*4] |
1894 | serge | 424 | |
9715 | Doczom | 425 | lea edi, [edi + ecx*2] |
2430 | mario79 | 426 | |
2448 | mario79 | 427 | ; check for hardware cursor |
2451 | mario79 | 428 | cmp [_display.select_cursor], select_cursor |
2448 | mario79 | 429 | jne .no_mouseunder_1 |
430 | ;-------------------------------------- |
||
431 | align 4 |
||
2430 | mario79 | 432 | push ecx |
433 | |||
434 | mov ecx, [esp+4] |
||
435 | ror ecx, 16 |
||
436 | sub ecx, edx |
||
437 | rol ecx, 16 |
||
9715 | Doczom | 438 | sub ecx, [esp + BLITTER.h + 8] |
2430 | mario79 | 439 | |
440 | ; check mouse area for putpixel |
||
441 | call [_display.check_mouse] |
||
442 | pop ecx |
||
2448 | mario79 | 443 | ;-------------------------------------- |
444 | align 4 |
||
445 | .no_mouseunder_1: |
||
9715 | Doczom | 446 | mov [edi + ecx], ax |
2288 | clevermous | 447 | shr eax, 16 |
9715 | Doczom | 448 | mov [edi + ecx+2], al |
2430 | mario79 | 449 | |
450 | pop eax |
||
451 | ;-------------------------------------- |
||
452 | align 4 |
||
2449 | mario79 | 453 | .skip_1: |
9715 | Doczom | 454 | mov edi, [esp + .extra_var1] |
2288 | clevermous | 455 | inc ecx |
456 | dec edx |
||
457 | jnz .inner24 |
||
1894 | serge | 458 | |
9715 | Doczom | 459 | add esi, [esp + BLITTER.stride] |
5351 | serge | 460 | add edi, [_display.lfb_pitch] |
2288 | clevermous | 461 | add ebp, [_display.width] |
1894 | serge | 462 | |
9715 | Doczom | 463 | mov edx, [esp + BLITTER.w] |
464 | dec [esp + BLITTER.h] |
||
2288 | clevermous | 465 | jnz .outer24 |
1894 | serge | 466 | |
2288 | clevermous | 467 | jmp .done |
5161 | hidnplayr | 468 | |
469 | |||
470 | .core_16: |
||
9715 | Doczom | 471 | lea edi, [LFB_BASE + edi + ebx*2] |
8869 | rgimad | 472 | mov ebx, [current_slot_idx] |
5161 | hidnplayr | 473 | |
5164 | hidnplayr | 474 | .outer16: |
9715 | Doczom | 475 | mov [esp + .extra_var1], edi |
5161 | hidnplayr | 476 | xor ecx, ecx |
477 | |||
5164 | hidnplayr | 478 | .inner16: |
9715 | Doczom | 479 | cmp [ebp + ecx], bl ; Does the process own this pixel? |
5161 | hidnplayr | 480 | jne .skip_2 |
481 | ;-------------------------------------- |
||
482 | push eax |
||
9715 | Doczom | 483 | mov eax, [esi + ecx*4] |
5161 | hidnplayr | 484 | |
485 | ; check for hardware cursor |
||
486 | cmp [_display.select_cursor], select_cursor |
||
487 | jne .no_mouseunder_2 |
||
488 | ;-------------------------------------- |
||
489 | push ecx |
||
490 | |||
491 | mov ecx, [esp+4] |
||
492 | ror ecx, 16 |
||
493 | sub ecx, edx |
||
494 | rol ecx, 16 |
||
9715 | Doczom | 495 | sub ecx, [esp + BLITTER.h + 8] |
5161 | hidnplayr | 496 | |
497 | ; check mouse area for putpixel |
||
498 | call [_display.check_mouse] |
||
499 | pop ecx |
||
500 | ;-------------------------------------- |
||
5164 | hidnplayr | 501 | .no_mouseunder_2: |
5161 | hidnplayr | 502 | ; convert to 16 bpp and store to LFB |
503 | and eax, 00000000111110001111110011111000b |
||
504 | shr ah, 2 |
||
505 | shr ax, 3 |
||
506 | ror eax, 8 |
||
507 | add al, ah |
||
508 | rol eax, 8 |
||
9715 | Doczom | 509 | mov [edi + ecx*2], ax |
5161 | hidnplayr | 510 | pop eax |
511 | ;-------------------------------------- |
||
5164 | hidnplayr | 512 | .skip_2: |
9715 | Doczom | 513 | mov edi, [esp + .extra_var1] |
5161 | hidnplayr | 514 | inc ecx |
515 | dec edx |
||
516 | jnz .inner16 |
||
517 | |||
9715 | Doczom | 518 | add esi, [esp + BLITTER.stride] |
5351 | serge | 519 | add edi, [_display.lfb_pitch] |
5161 | hidnplayr | 520 | add ebp, [_display.width] |
521 | |||
9715 | Doczom | 522 | mov edx, [esp + BLITTER.w] |
523 | dec [esp + BLITTER.h] |
||
5161 | hidnplayr | 524 | jnz .outer16 |
525 | |||
526 | jmp .done=>>=>> |
||
527 |