Mercurial > repos > blastem
diff ppm.c @ 2685:da2e06c42d16
Add a compile-time flag to use RGB565 instead of ABGR/ARGB
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 30 Mar 2025 00:06:53 -0700 |
parents | 5f65a16c23ff |
children |
line wrap: on
line diff
--- a/ppm.c Sat Mar 29 23:54:45 2025 -0700 +++ b/ppm.c Sun Mar 30 00:06:53 2025 -0700 @@ -1,21 +1,34 @@ #include <stdint.h> #include <stdio.h> +#include "pixel.h" -void save_ppm(FILE *f, uint32_t *buffer, uint32_t width, uint32_t height, uint32_t pitch) +void save_ppm(FILE *f, pixel_t *buffer, uint32_t width, uint32_t height, uint32_t pitch) { fprintf(f, "P6\n%d %d\n255\n", width, height); for(uint32_t y = 0; y < height; y++) { - uint32_t *line = buffer; + pixel_t *line = buffer; for (uint32_t x = 0; x < width; x++, line++) { uint8_t buf[3] = { +#ifdef USE_RGB565 + (*line >> 8 & 0xF8) | (*line >> (8+5)), //red + (*line >> 3 & 0xFC) | (*line >> (3+5) & 0x3), //green + *line << 3 | (*line >> (5-3) & 0x3) //blue +#else +#ifdef USE_GLES + *line, //red + *line >> 8, //green + *line >> 16 //blue +#else *line >> 16, //red *line >> 8, //green *line //blue +#endif +#endif }; fwrite(buf, 1, sizeof(buf), f); } - buffer = buffer + pitch / sizeof(uint32_t); + buffer = buffer + pitch / sizeof(pixel_t); } }