Jestem zajęty usprawnianiem rysowania okien, tła i kursora.
W między czasie, może ktoś zechce napisać mały generator tapety :) ?
Można korzystać z zmiennych 64 bitowych:
variable_video_mode_graphics_size_in_bytes
variable_video_mode_graphics_width_in_pixels
variable_video_mode_graphics_height_in_pixels
variable_video_mode_graphics_width_in_bytes
Format koloru piksela to 0xFFrrggbb
Rejestr RDI
jest już ustawiony na początku przestrzeni tła.
Przykładowy generator dla siatki dwukolorowej:
;-----------------------------------------------------------------------
; wypełnij przestrzeń tła generatorem
; kolory pikseli
mov rax, 0xFF272727FF101010
; zachowaj wskaźnik początku aktualnego wiersza
mov rbx, rdi
; ilość wierszy
mov rdx, qword [variable_video_mode_graphics_height_in_pixels]
.restart:
; ilość kolumn przypadających na wiersz
mov rcx, qword [variable_video_mode_graphics_width_in_pixels]
shr rcx, STATIC_DIVIDE_BY_2
.generate:
; wyświetl parę pikseli
stosq
loop .generate
; para pikseli z początku poprzedniego wiersza jest różna?
cmp qword [rbx], rax
jne .ok ; tak
; zamień kolory miejscami
rol rax, STATIC_REPLACE_EAX_WITH_HIGH
.ok:
; zachowaj wskaźnik początku aktualnego wiersza
mov rbx, rdi
; pozostały inne wiersze?
dec rdx
jnz .restart