Rev 9941 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9941 | Rev 9948 | ||
---|---|---|---|
Line 15... | Line 15... | ||
15 | ;; ;; |
15 | ;; ;; |
16 | ;; See file COPYING for details ;; |
16 | ;; See file COPYING for details ;; |
17 | ;; ;; |
17 | ;; ;; |
18 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
18 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 19... | Line 19... | ||
19 | 19 | ||
Line 20... | Line 20... | ||
20 | $Revision: 9941 $ |
20 | $Revision: 9948 $ |
21 | 21 | ||
22 | uglobal |
22 | uglobal |
23 | align 4 |
23 | align 4 |
Line 1599... | Line 1599... | ||
1599 | vesa20_drawbackground_tiled: |
1599 | vesa20_drawbackground_tiled: |
Line 1600... | Line 1600... | ||
1600 | 1600 | ||
1601 | pushad |
1601 | pushad |
1602 | ; External loop for all y from start to end |
1602 | ; External loop for all y from start to end |
1603 | mov ebx, [background_window + WDATA.draw_data.top] ; y start |
1603 | mov ebx, [background_window + WDATA.draw_data.top] ; y start |
1604 | dp2: |
1604 | .dp2: |
1605 | mov ebp, [background_window + WDATA.draw_data.left] ; x start |
1605 | mov ebp, [background_window + WDATA.draw_data.left] ; x start |
1606 | ; 1) Calculate pointers in WinMapAddress (does pixel belong to OS thread?) [ebp] |
1606 | ; 1) Calculate pointers in WinMapAddress (does pixel belong to OS thread?) [ebp] |
1607 | ; and LFB data (output for our function) [edi] |
1607 | ; and LFB data (output for our function) [edi] |
1608 | ; mov eax, [BytesPerScanLine] |
1608 | ; mov eax, [BytesPerScanLine] |
Line 1649... | Line 1649... | ||
1649 | ; eax = x, ebx = y (screen coordinates) |
1649 | ; eax = x, ebx = y (screen coordinates) |
1650 | ; ecx = deltax - number of pixels left in current tile block |
1650 | ; ecx = deltax - number of pixels left in current tile block |
1651 | ; edx = 1 |
1651 | ; edx = 1 |
1652 | ; esi -> bgr memory, edi -> output |
1652 | ; esi -> bgr memory, edi -> output |
1653 | ; ebp = offset in WinMapAddress |
1653 | ; ebp = offset in WinMapAddress |
1654 | dp3: |
1654 | .dp3: |
1655 | cmp [ebp], dl |
1655 | cmp [ebp], dl |
1656 | jnz .next_pix |
1656 | jnz .next_pix |
Line 1657... | Line 1657... | ||
1657 | 1657 | ||
1658 | push eax ecx |
1658 | push eax ecx |
Line 1697... | Line 1697... | ||
1697 | add edi, [_display.bytes_per_pixel] |
1697 | add edi, [_display.bytes_per_pixel] |
Line 1698... | Line 1698... | ||
1698 | 1698 | ||
1699 | add ebp, edx |
1699 | add ebp, edx |
1700 | add eax, edx |
1700 | add eax, edx |
1701 | cmp eax, [background_window + WDATA.draw_data.right] |
1701 | cmp eax, [background_window + WDATA.draw_data.right] |
1702 | ja dp4 |
1702 | ja .dp4 |
1703 | sub ecx, edx |
1703 | sub ecx, edx |
Line 1704... | Line 1704... | ||
1704 | jnz dp3 |
1704 | jnz .dp3 |
1705 | 1705 | ||
1706 | ; next tile block on x-axis |
1706 | ; next tile block on x-axis |
1707 | mov ecx, [BgrDataWidth] |
1707 | mov ecx, [BgrDataWidth] |
1708 | sub esi, ecx |
1708 | sub esi, ecx |
1709 | sub esi, ecx |
1709 | sub esi, ecx |
Line 1710... | Line 1710... | ||
1710 | sub esi, ecx |
1710 | sub esi, ecx |
1711 | jmp dp3 |
1711 | jmp .dp3 |
1712 | 1712 | ||
1713 | dp4: |
1713 | .dp4: |
1714 | ; next scan line |
1714 | ; next scan line |
1715 | inc ebx |
1715 | inc ebx |
1716 | cmp ebx, [background_window + WDATA.draw_data.bottom] |
1716 | cmp ebx, [background_window + WDATA.draw_data.bottom] |
1717 | jbe dp2 |
1717 | jbe .dp2 |
1718 | popad |
1718 | popad |
1719 | mov [EGA_counter], 1 |
1719 | mov [EGA_counter], 1 |