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
|
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) {
|
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;
|
*r = (color16 >> 12) & 0xF;
|
||||||
*g = (color16 >> 8) & 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;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
unigi_type_error unigi_graphics_init() {
|
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
|
// Create a list of compatible resolutions
|
||||||
unigi_status_resolutions = malloc(sizeof(unigi_type_resolution_range) * 2);
|
unigi_status_resolutions = malloc(sizeof(unigi_type_resolution_range) * 2);
|
||||||
if (unigi_status_resolutions == NULL) { return 1; }
|
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
|
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;
|
unsigned char far *unigi_platform_vidbuf = (unsigned char far *)0xA0000000L;
|
||||||
unigi_type_uint8 r,g,b,a;
|
unigi_platform_vidbuf[pixel] = unigi_platform_palette[color];
|
||||||
unigi_platform_color_16_to_32(color,&r,&g,&b,&a);
|
|
||||||
unigi_platform_vidbuf[pixel] = unigi_platform_color_find(r,g,b);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void unigi_graphics_flush() {
|
static inline void unigi_graphics_flush() {
|
||||||
|
Loading…
Reference in New Issue
Block a user