1+ #if !defined(N64_BUILD ) && !defined(MIN_BUILD )
12#include <png.h>
3+ #endif
24#include <stdint.h>
35#include <stdio.h>
46#include <stdlib.h>
57#include <string.h>
8+ #ifdef N64_BUILD
9+ #include <libdragon.h>
10+ #else
11+ #include <assert.h>
12+ #endif
613
714#include "formats/error.h"
15+ #include "formats/transparent.h"
816#include "formats/vga_image.h"
917#include "utils/allocator.h"
1018#include "utils/png_writer.h"
@@ -16,7 +24,15 @@ int sd_vga_image_create(sd_vga_image *img, unsigned int w, unsigned int h) {
1624 img -> w = w ;
1725 img -> h = h ;
1826 img -> len = w * h ;
27+ img -> transparent = BACKGROUND_TRANSPARENT_INDEX ;
28+ #ifdef N64_BUILD
29+ assertf (w <= 320 && h <= 240 , "w:%X h:%X" , w , h );
30+ img -> data = malloc_uncached_aligned (64 , w * h );
31+ assert (img -> data != NULL );
32+ memset (img -> data , 0 , w * h );
33+ #else
1934 img -> data = omf_calloc (1 , w * h );
35+ #endif
2036 return SD_SUCCESS ;
2137}
2238
@@ -28,6 +44,7 @@ int sd_vga_image_copy(sd_vga_image *dst, const sd_vga_image *src) {
2844 dst -> h = src -> h ;
2945 dst -> len = src -> len ;
3046 dst -> data = omf_calloc (src -> len , 1 );
47+ dst -> transparent = src -> transparent ;
3148 memcpy (dst -> data , src -> data , src -> len );
3249 return SD_SUCCESS ;
3350}
@@ -36,7 +53,11 @@ void sd_vga_image_free(sd_vga_image *img) {
3653 if (img == NULL ) {
3754 return ;
3855 }
56+ #ifdef N64_BUILD
57+ free_uncached (img -> data );
58+ #else
3959 omf_free (img -> data );
60+ #endif
4061}
4162
4263int sd_vga_image_decode (sd_rgba_image * dst , const sd_vga_image * src , const vga_palette * pal ) {
@@ -62,6 +83,7 @@ int sd_vga_image_decode(sd_rgba_image *dst, const sd_vga_image *src, const vga_p
6283}
6384
6485int sd_vga_image_from_png (sd_vga_image * img , const char * filename ) {
86+ #if !defined(N64_BUILD ) && !defined(MIN_BUILD )
6587 png_structp png_ptr ;
6688 png_infop info_ptr ;
6789 int ret = SD_SUCCESS ;
@@ -159,14 +181,21 @@ int sd_vga_image_from_png(sd_vga_image *img, const char *filename) {
159181 fclose (handle );
160182error_0 :
161183 return ret ;
184+ #else
185+ return 0 ;
186+ #endif
162187}
163188
164189int sd_vga_image_to_png (const sd_vga_image * img , const vga_palette * pal , const char * filename ) {
190+ #if !defined(N64_BUILD ) && !defined(MIN_BUILD )
165191 if (img == NULL || filename == NULL ) {
166192 return SD_INVALID_INPUT ;
167193 }
168194 if (!png_write_paletted (filename , img -> w , img -> h , pal , (unsigned char * )img -> data )) {
169195 return SD_FILE_OPEN_ERROR ;
170196 }
171197 return SD_SUCCESS ;
198+ #else
199+ return 0 ;
200+ #endif
172201}
0 commit comments