Generate quick palette
This commit is contained in:
parent
c3be40e186
commit
bd5b613c91
@ -219,6 +219,8 @@ unigi_type_uint8 unigi_platform_palette_dos[unigi_platform_palette_dos_colors *
|
||||
63, 63, 63
|
||||
};
|
||||
|
||||
unigi_type_uint8 unigi_platform_palette[65536];
|
||||
|
||||
static inline void unigi_platform_color_16_to_32(unigi_type_uint16 color16,unigi_type_uint8 * r, unigi_type_uint8 * g, unigi_type_uint8 * b, unigi_type_uint8 * a) {
|
||||
*r = (color16 >> 12) & 0xF;
|
||||
*g = (color16 >> 8) & 0xF;
|
||||
@ -251,7 +253,21 @@ unigi_type_uint8 unigi_platform_color_find(unigi_type_uint8 r, unigi_type_uint8
|
||||
return color;
|
||||
}
|
||||
|
||||
#include <stdio.h>
|
||||
unigi_type_error unigi_graphics_init() {
|
||||
// Create palette
|
||||
unigi_type_uint32 index = 0;
|
||||
while (index < 65536) {
|
||||
unigi_type_uint8 r,g,b,a;
|
||||
unigi_platform_color_16_to_32(index,&r,&g,&b,&a);
|
||||
if (index % 500 == 0) {
|
||||
printf("Generating palette %ld ...\r",index);
|
||||
fflush(stdout);
|
||||
}
|
||||
unigi_platform_palette[index] = unigi_platform_color_find(r,g,b);
|
||||
index++;
|
||||
}
|
||||
|
||||
// Create a list of compatible resolutions
|
||||
unigi_status_resolutions = malloc(sizeof(unigi_type_resolution_range) * 2);
|
||||
if (unigi_status_resolutions == NULL) { return 1; }
|
||||
@ -315,9 +331,7 @@ unigi_type_error unigi_graphics_mode(unigi_type_resolution * resolution, char *
|
||||
|
||||
static inline void unigi_graphics_draw_pixel(unigi_type_resolution_pixel_index pixel, unigi_type_color color) { // This is horribly slow, for now
|
||||
unsigned char far *unigi_platform_vidbuf = (unsigned char far *)0xA0000000L;
|
||||
unigi_type_uint8 r,g,b,a;
|
||||
unigi_platform_color_16_to_32(color,&r,&g,&b,&a);
|
||||
unigi_platform_vidbuf[pixel] = unigi_platform_color_find(r,g,b);
|
||||
unigi_platform_vidbuf[pixel] = unigi_platform_palette[color];
|
||||
}
|
||||
|
||||
static inline void unigi_graphics_flush() {
|
||||
|
Loading…
Reference in New Issue
Block a user