fill in framebuffer with more exciting pattern - working in qemu BIOS but lost graphics in qemu EFI
This commit is contained in:
parent
d08d54ecbf
commit
21afa93c4b
@ -4,10 +4,23 @@ void kernel_main(uint32_t mbinfo)
|
||||
{
|
||||
volatile uint32_t * mbi = (volatile uint32_t *)mbinfo;
|
||||
volatile uint32_t * fb = (volatile uint32_t *)mbi[88 / 4];
|
||||
uint32_t c = 0u;
|
||||
for (uint32_t i = 0u; i < 800u * 600u; i++)
|
||||
uint32_t pitch = mbi[96 / 4];
|
||||
uint32_t width = mbi[100 / 4];
|
||||
uint32_t height = mbi[104 / 4];
|
||||
for (uint32_t row = 0u; row < height; row++)
|
||||
{
|
||||
c++;
|
||||
fb[i] = (c << 28u) | 0x00669900u | ((c << 4u) & 0xFFu);
|
||||
for (uint32_t col = 0u; col < width; col++)
|
||||
{
|
||||
uint32_t er = (col * height) / width;
|
||||
int32_t dr = (int32_t)row - (int32_t)er;
|
||||
if (dr < 0)
|
||||
{
|
||||
dr = -dr;
|
||||
}
|
||||
uint8_t r = 255u - ((uint32_t)dr * 256u / height);
|
||||
uint8_t g = col * 256u / width;
|
||||
uint8_t b = row * 256u / height;
|
||||
fb[pitch * row / 4u + col] = (r << 16u) | (g << 8u) | b;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user