Add unigi_flag_bigcolor
This commit is contained in:
parent
7761a397a8
commit
851eb61cb2
94
graphics.c
94
graphics.c
@ -37,10 +37,14 @@ unigi_type_error unigi_window_create(unigi_type_resolution resolution, char * ti
|
|||||||
unigi_platform_info_depth_bytes = unigi_platform_surface->format->BytesPerPixel;
|
unigi_platform_info_depth_bytes = unigi_platform_surface->format->BytesPerPixel;
|
||||||
|
|
||||||
uint8_t r; uint8_t g; uint8_t b;
|
uint8_t r; uint8_t g; uint8_t b;
|
||||||
unigi_type_color color;
|
uint32_t color;
|
||||||
uint32_t color_platform;
|
uint32_t color_platform;
|
||||||
uint8_t * color_platform8 = (uint8_t *)&color_platform;
|
uint8_t * color_platform8 = (uint8_t *)&color_platform;
|
||||||
unigi_platform_palette1 = malloc(4096 * unigi_platform_info_depth_bytes);
|
#ifndef unigi_flag_bigcolor
|
||||||
|
unigi_platform_palette1 = malloc(4096 * unigi_platform_info_depth_bytes);
|
||||||
|
#else
|
||||||
|
unigi_platform_palette1 = malloc(65536 * unigi_platform_info_depth_bytes);
|
||||||
|
#endif
|
||||||
if (unigi_platform_palette1 == NULL) {
|
if (unigi_platform_palette1 == NULL) {
|
||||||
printf("[unigi] Could not initialize video: unigi -> palette malloc failed\n");
|
printf("[unigi] Could not initialize video: unigi -> palette malloc failed\n");
|
||||||
return 1;
|
return 1;
|
||||||
@ -49,19 +53,35 @@ unigi_type_error unigi_window_create(unigi_type_resolution resolution, char * ti
|
|||||||
unigi_platform_palette4 = (uint32_t *)unigi_platform_palette1;
|
unigi_platform_palette4 = (uint32_t *)unigi_platform_palette1;
|
||||||
|
|
||||||
color = 0;
|
color = 0;
|
||||||
while (color < 4096) {
|
#ifndef unigi_flag_bigcolor
|
||||||
unigi_platform_color_16_to_32(color,&r,&r,&g,&b);
|
while (color < 4096) {
|
||||||
#ifndef _EE // if not PS2
|
unigi_platform_color_16_to_32((unigi_type_color)color,&r,&r,&g,&b);
|
||||||
color_platform = SDL_MapRGBA(unigi_platform_surface->format,r,g,b,255);
|
#ifndef _EE // if not PS2
|
||||||
#else
|
color_platform = SDL_MapRGBA(unigi_platform_surface->format,r,g,b,255);
|
||||||
color_platform = SDL_MapRGBA(unigi_platform_surface->format,r/2,g/2,b/2,255);
|
#else
|
||||||
#endif
|
color_platform = SDL_MapRGBA(unigi_platform_surface->format,r/2,g/2,b/2,255);
|
||||||
unigi_type_resolution_depth i;
|
#endif
|
||||||
for (i = 0; i < unigi_platform_info_depth_bytes; i++) {
|
unigi_type_resolution_depth i;
|
||||||
unigi_platform_palette1[(color * unigi_platform_info_depth_bytes) + i] = color_platform8[i];
|
for (i = 0; i < unigi_platform_info_depth_bytes; i++) {
|
||||||
|
unigi_platform_palette1[(color * unigi_platform_info_depth_bytes) + i] = color_platform8[i];
|
||||||
|
}
|
||||||
|
++color;
|
||||||
}
|
}
|
||||||
++color;
|
#else
|
||||||
}
|
while (color < 65536) {
|
||||||
|
unigi_platform_color_16_to_32((unigi_type_color)color,&r,&r,&g,&b);
|
||||||
|
#ifndef _EE // if not PS2
|
||||||
|
color_platform = SDL_MapRGBA(unigi_platform_surface->format,r,g,b,255);
|
||||||
|
#else
|
||||||
|
color_platform = SDL_MapRGBA(unigi_platform_surface->format,r/2,g/2,b/2,255);
|
||||||
|
#endif
|
||||||
|
unigi_type_resolution_depth i;
|
||||||
|
for (i = 0; i < unigi_platform_info_depth_bytes; i++) {
|
||||||
|
unigi_platform_palette1[(color * unigi_platform_info_depth_bytes) + i] = color_platform8[i];
|
||||||
|
}
|
||||||
|
++color;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +90,9 @@ unigi_type_error unigi_graphics_init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline void unigi_graphics_draw(unigi_type_resolution_1d_coord index, unigi_type_color color) {
|
inline void unigi_graphics_draw(unigi_type_resolution_1d_coord index, unigi_type_color color) {
|
||||||
|
#ifndef unigi_flag_bigcolor
|
||||||
color = color & 0x0FFF;
|
color = color & 0x0FFF;
|
||||||
|
#endif
|
||||||
if (unigi_platform_info_depth_bytes < 3) {
|
if (unigi_platform_info_depth_bytes < 3) {
|
||||||
if (unigi_platform_info_depth_bytes == 1) {
|
if (unigi_platform_info_depth_bytes == 1) {
|
||||||
unigi_platform_pixels1[index] = unigi_platform_palette1[color];
|
unigi_platform_pixels1[index] = unigi_platform_palette1[color];
|
||||||
@ -93,24 +115,44 @@ inline void unigi_graphics_draw(unigi_type_resolution_1d_coord index, unigi_type
|
|||||||
inline void unigi_graphics_blit(unigi_type_resolution_1d_coord index, unigi_type_color * pixels, unigi_type_resolution_1d_coord length) {
|
inline void unigi_graphics_blit(unigi_type_resolution_1d_coord index, unigi_type_color * pixels, unigi_type_resolution_1d_coord length) {
|
||||||
unigi_type_resolution_1d_coord i;
|
unigi_type_resolution_1d_coord i;
|
||||||
if (unigi_platform_info_depth_bytes == 1) {
|
if (unigi_platform_info_depth_bytes == 1) {
|
||||||
for (i = 0; i < length; i++) {
|
for (i = 0; i < length; ++i) {
|
||||||
unigi_platform_pixels1[index + i] = unigi_platform_palette1[pixels[i] & 0x0FFF];
|
#ifndef unigi_flag_bigcolor
|
||||||
|
unigi_platform_pixels1[index + i] = unigi_platform_palette1[pixels[i] & 0x0FFF];
|
||||||
|
#else
|
||||||
|
unigi_platform_pixels1[index + i] = unigi_platform_palette1[pixels[i]];
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
} else if (unigi_platform_info_depth_bytes == 2) {
|
} else if (unigi_platform_info_depth_bytes == 2) {
|
||||||
for (i = 0; i < length; i++) {
|
for (i = 0; i < length; ++i) {
|
||||||
unigi_platform_pixels2[index + i] = unigi_platform_palette2[pixels[i] & 0x0FFF];
|
#ifndef unigi_flag_bigcolor
|
||||||
|
unigi_platform_pixels2[index + i] = unigi_platform_palette2[pixels[i] & 0x0FFF];
|
||||||
|
#else
|
||||||
|
unigi_platform_pixels2[index + i] = unigi_platform_palette2[pixels[i]];
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
} else if (unigi_platform_info_depth_bytes == 3) {
|
} else if (unigi_platform_info_depth_bytes == 3) {
|
||||||
for (i = 0; i < length; i++) {
|
for (i = 0; i < length; ++i) {
|
||||||
memcpy(
|
#ifndef unigi_flag_bigcolor
|
||||||
unigi_platform_pixels1 + ((index + i) * 3),
|
memcpy(
|
||||||
unigi_platform_palette1 + ((pixels[i] & 0x0FFF) * 3),
|
unigi_platform_pixels1 + ((index + i) * 3),
|
||||||
3
|
unigi_platform_palette1 + ((pixels[i] & 0x0FFF) * 3),
|
||||||
);
|
3
|
||||||
|
);
|
||||||
|
#else
|
||||||
|
memcpy(
|
||||||
|
unigi_platform_pixels1 + ((index + i) * 3),
|
||||||
|
unigi_platform_palette1 + ((pixels[i]) * 3),
|
||||||
|
3
|
||||||
|
);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
} else if (unigi_platform_info_depth_bytes == 4) {
|
} else if (unigi_platform_info_depth_bytes == 4) {
|
||||||
for (i = 0; i < length; i++) {
|
for (i = 0; i < length; ++i) {
|
||||||
unigi_platform_pixels4[index + i] = unigi_platform_palette4[pixels[i] & 0x0FFF];
|
#ifndef unigi_flag_bigcolor
|
||||||
|
unigi_platform_pixels4[index + i] = unigi_platform_palette4[pixels[i] & 0x0FFF];
|
||||||
|
#else
|
||||||
|
unigi_platform_pixels4[index + i] = unigi_platform_palette4[pixels[i]];
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user