;----------------------------------------------------------------------------- align 4 create_palette: ;------------------------------------------- mov eax,[palette_SIZE_Y] mov ebx,6 xor edx,edx div ebx mov [part_of_size_y],eax ;------------------------------------------- mov ebx,eax mov eax,255 shl 24 xor edx,edx div ebx mov [offset_y],eax ;------------------------------------------- mov edi,[palette_area] mov edx,[offset_y] ;------------------------------------------- xor ecx,ecx mov eax,[tone_color] ;------------------------------------------- align 4 @@: call palette_put_line ; blue call next_color add ecx,1 cmp ecx,[part_of_size_y] jne @b ;------------------------------------------- mov ecx,[part_of_size_y] ;------------------------------------------- align 4 @@: call palette_put_line ; red ror eax,16 call next_color rol eax,16 sub ecx,1 jne @b ;------------------------------------------- xor ecx,ecx ;------------------------------------------- align 4 @@: call palette_put_line ; green ror eax,8 call next_color rol eax,8 add ecx,1 cmp ecx,[part_of_size_y] jne @b ;------------------------------------------- mov ecx,[part_of_size_y] ;------------------------------------------- align 4 @@: call palette_put_line ; blue call next_color sub ecx,1 jne @b ;------------------------------------------- xor ecx,ecx ;------------------------------------------- align 4 @@: call palette_put_line ; red ror eax,16 call next_color rol eax,16 add ecx,1 cmp ecx,[part_of_size_y] jne @b ;------------------------------------------- mov ecx,[part_of_size_y] ;------------------------------------------- align 4 @@: call palette_put_line ; green ror eax,8 call next_color rol eax,8 sub ecx,1 jne @b ;------------------------------------------- mov edx,[part_of_size_y] lea edx,[edx*3] shl edx,1 mov ecx,[palette_SIZE_Y] sub ecx,edx test ecx,ecx jz .end ;------------------------------------------- align 4 @@: call palette_put_line loop @b ;------------------------------------------- align 4 .end: ret ;--------------------------------------------------------------------- align 4 next_color: mov ebx,ecx imul ebx,edx rol ebx,8 mov al,bl ret ;--------------------------------------------------------------------- align 4 palette_put_line: push ecx mov ecx,[palette_SIZE_X] cld ;------------------------------------------- align 4 .loop: stosd dec edi loop .loop pop ecx ret ;---------------------------------------------------------------------