Rev 221 | Rev 227 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 221 | Rev 224 | ||
---|---|---|---|
Line 2... | Line 2... | ||
2 | LOAD_FROM_MEM equ 1 |
2 | LOAD_FROM_MEM equ 1 |
3 | LOAD_INDIRECT equ 2 |
3 | LOAD_INDIRECT equ 2 |
4 | LOAD_SYSTEM equ 3 |
4 | LOAD_SYSTEM equ 3 |
5 | 5 | ||
Line -... | Line 6... | ||
- | 6 | struc BITMAPINFOHEADER { |
|
- | 7 | .biSize dd ? ; DWORD |
|
- | 8 | .biWidth dd ? ; LONG |
|
- | 9 | .biHeight dd ? ; LONG |
|
- | 10 | .biPlanes dw ? ; WORD |
|
- | 11 | .biBitCount dw ? ; WORD |
|
- | 12 | .biCompression dd ? ; DWORD |
|
- | 13 | .biSizeImage dd ? ; DWORD |
|
- | 14 | .biXPelsPerMeter dd ? ; LONG |
|
- | 15 | .biYPelsPerMeter dd ? ; LONG |
|
- | 16 | .biClrUsed dd ? ; DWORD |
|
- | 17 | .biClrImportant dd ? ; DWORD |
|
- | 18 | } |
|
- | 19 | ||
- | 20 | virtual at 0 |
|
- | 21 | BI BITMAPINFOHEADER |
|
- | 22 | end virtual |
|
- | 23 | ||
6 | align 4 |
24 | align 4 |
7 | proc vesa_init_cursor stdcall, dst:dword, src:dword |
25 | proc vesa_init_cursor stdcall, dst:dword, src:dword |
8 | locals |
26 | locals |
9 | rBase dd ? |
27 | rBase dd ? |
10 | pQuad dd ? |
28 | pQuad dd ? |
Line 15... | Line 33... | ||
15 | counter dd ? |
33 | counter dd ? |
16 | endl |
34 | endl |
17 | 35 | ||
Line 18... | Line 36... | ||
18 | mov esi, [src] |
36 | mov esi, [src] |
19 | add esi,[esi+18d] |
37 | add esi,[esi+18] |
20 | - | ||
21 | mov eax,esi |
38 | mov eax,esi |
- | 39 | ||
- | 40 | cmp [esi+BI.biBitCount], 24 |
|
- | 41 | je .img_24 |
|
- | 42 | .img_4: |
|
22 | add eax, [esi] |
43 | add eax, [esi] |
23 | mov [pQuad],eax |
44 | mov [pQuad],eax |
24 | add eax,64 |
45 | add eax,64 |
25 | mov [pBits],eax |
46 | mov [pBits],eax |
26 | add eax, 0x200 |
47 | add eax, 0x200 |
Line 83... | Line 104... | ||
83 | mov [rBase],edi |
104 | mov [rBase],edi |
84 | sub [height],1 |
105 | sub [height],1 |
85 | jnz .l1 |
106 | jnz .l1 |
86 | ret |
107 | ret |
87 | endp |
108 | .img_24: |
- | 109 | add eax, [esi] |
|
- | 110 | mov [pQuad],eax |
|
- | 111 | add eax, 0xC00 |
|
- | 112 | mov [pAnd],eax |
|
- | 113 | mov eax,[esi+BI.biWidth] |
|
- | 114 | mov [width],eax |
|
- | 115 | mov ebx,[esi+BI.biHeight] |
|
- | 116 | shr ebx,1 |
|
- | 117 | mov [height],ebx |
|
- | 118 | ||
- | 119 | mov edi, [dst] |
|
- | 120 | add edi, 32*31*4 |
|
- | 121 | mov [rBase],edi |
|
- | 122 | ||
- | 123 | mov esi,[pAnd] |
|
- | 124 | mov ebx, [pQuad] |
|
- | 125 | .row_24: |
|
- | 126 | mov eax, [esi] |
|
- | 127 | bswap eax |
|
- | 128 | mov [counter], 32 |
|
- | 129 | @@: |
|
- | 130 | xor edx, edx |
|
- | 131 | shl eax,1 |
|
- | 132 | setc dl |
|
- | 133 | dec edx |
|
- | 134 | ||
- | 135 | mov ecx, [ebx] |
|
- | 136 | and ecx, 0x00FFFFFF |
|
- | 137 | and ecx, edx |
|
- | 138 | and edx, 0xFF000000 |
|
- | 139 | or edx, ecx |
|
- | 140 | mov [edi], edx |
|
- | 141 | add ebx, 3 |
|
- | 142 | add edi, 4 |
|
- | 143 | dec [counter] |
|
- | 144 | jnz @B |
|
- | 145 | ||
- | 146 | add esi, 4 |
|
- | 147 | mov edi,[rBase] |
|
- | 148 | sub edi,128 |
|
- | 149 | mov [rBase],edi |
|
- | 150 | sub [height],1 |
|
- | 151 | jnz .row_24 |
|
- | 152 | ret |
|
- | 153 | ||
- | 154 | endp |
|
88 | 155 | ||
Line 89... | Line 156... | ||
89 | align 4 |
156 | align 4 |
90 | proc alloc_cursor |
157 | proc alloc_cursor |
Line 377... | Line 444... | ||
377 | mov eax, 32 |
444 | mov eax, 32 |
378 | 445 | ||
Line 379... | Line 446... | ||
379 | sub edi, ecx |
446 | sub edi, ecx |
380 | cmp edi, eax |
447 | cmp edi, eax |
381 | cmovg edi, eax |
448 | ;cmovg edi, eax |
- | 449 | jng @F |
|
- | 450 | mov edi, eax |
|
- | 451 | @@: |
|
382 | sub edi, [_dx] |
452 | sub edi, [_dx] |
Line 383... | Line 453... | ||
383 | 453 | ||
384 | sub edx, [y] |
454 | sub edx, [y] |
385 | cmp edx, eax |
455 | cmp edx, eax |
- | 456 | ;cmovg edx, eax |
|
- | 457 | jng @F |
|
- | 458 | mov edx, eax |
|
386 | cmovg edx, eax |
459 | @@: |
Line 387... | Line 460... | ||
387 | sub edx, [_dy] |
460 | sub edx, [_dy] |
388 | 461 | ||
389 | mov [w], edi |
462 | mov [w], edi |
390 | mov [h], edx |
463 | mov [h], edx |
Line 391... | Line 464... | ||
391 | mov [cur_saved_w], edi |
464 | mov [cur_saved_w], edi |
392 | mov [cur_saved_h], edx |
465 | mov [cur_saved_h], edx |
393 | 466 | ||
394 | sub eax, edi |
467 | sub eax, edi |
395 | lea eax, [eax+eax*2] |
468 | shl eax, 2 ;lea eax, [eax+eax*2] |
Line 396... | Line 469... | ||
396 | lea edi, [edi+edi*2] |
469 | lea edi, [edi+edi*2] |
Line 484... | Line 557... | ||
484 | mov eax, 32 |
557 | mov eax, 32 |
485 | 558 | ||
Line 486... | Line 559... | ||
486 | sub edi, ecx |
559 | sub edi, ecx |
487 | cmp edi, eax |
560 | cmp edi, eax |
488 | cmovg edi, eax |
561 | ; cmovg edi, eax |
- | 562 | jng @F |
|
- | 563 | mov edi, eax |
|
- | 564 | @@: |
|
489 | sub edi, [_dx] |
565 | sub edi, [_dx] |
Line 490... | Line 566... | ||
490 | 566 | ||
491 | sub edx, [y] |
567 | sub edx, [y] |
492 | cmp edx, eax |
568 | cmp edx, eax |
- | 569 | ; cmovg edx, eax |
|
- | 570 | jng @F |
|
- | 571 | mov edx, eax |
|
493 | cmovg edx, eax |
572 | @@: |
Line 494... | Line 573... | ||
494 | sub edx, [_dy] |
573 | sub edx, [_dy] |
495 | 574 | ||
496 | mov [w], edi |
575 | mov [w], edi |