Skip to content

Commit 68d85d3

Browse files
Cleanup retro_load_game, move custom palette loading to its own function
1 parent d30bd5c commit 68d85d3

1 file changed

Lines changed: 35 additions & 34 deletions

File tree

libretro/libretro.c

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,39 @@ static double get_aspect_ratio(void) {
801801
}
802802
}
803803

804+
static void load_custom_palette_from_file(void) {
805+
uint8 ptmp[64 * 8 * 3];
806+
RFILE *fp = NULL;
807+
char *fn = NULL;
808+
809+
palette_game.exist = false;
810+
palette_game.nEntries = 0;
811+
palette_game.data = NULL;
812+
813+
fn = FCEU_MakeFName(FCEUMKF_PALETTE, 0, 0);
814+
815+
if (!string_is_empty(fn) && path_is_valid(fn)) {
816+
fp = filestream_open(
817+
fn, RETRO_VFS_FILE_ACCESS_READ, RETRO_VFS_FILE_ACCESS_HINT_NONE);
818+
}
819+
820+
if (fp) {
821+
int x;
822+
int ssize = filestream_read(fp, ptmp, (64 * 8 * 3));
823+
int nEntries = ssize / 3;
824+
filestream_close(fp);
825+
palette_game.data = (pal *)FCEU_malloc(nEntries * sizeof(pal));
826+
for (x = 0; x < nEntries; x++) {
827+
palette_game.data[x].r = ptmp[x + x + x];
828+
palette_game.data[x].g = ptmp[x + x + x + 1];
829+
palette_game.data[x].b = ptmp[x + x + x + 2];
830+
}
831+
palette_game.exist = TRUE;
832+
palette_game.nEntries = nEntries;
833+
}
834+
free(fn);
835+
}
836+
804837
static void set_user_palette(void) {
805838
unsigned i;
806839

@@ -2056,40 +2089,8 @@ bool retro_load_game(const struct retro_game_info *info) {
20562089

20572090
if (!FCEUI_PostLoad()) return FALSE;
20582091

2059-
{
2060-
/* load custom palette file */
2061-
uint8 ptmp[64 * 8 * 3];
2062-
RFILE *fp = NULL;
2063-
char *fn = NULL;
2064-
2065-
palette_game.exist = false;
2066-
palette_game.nEntries = 0;
2067-
palette_game.data = NULL;
2068-
2069-
fn = FCEU_MakeFName(FCEUMKF_PALETTE, 0, 0);
2070-
2071-
if (!string_is_empty(fn) && path_is_valid(fn)) {
2072-
fp = filestream_open(fn,
2073-
RETRO_VFS_FILE_ACCESS_READ,
2074-
RETRO_VFS_FILE_ACCESS_HINT_NONE);
2075-
}
2076-
2077-
if (fp) {
2078-
int x;
2079-
int ssize = filestream_read(fp, ptmp, (64 * 8 * 3));
2080-
int nEntries = ssize / 3;
2081-
filestream_close(fp);
2082-
palette_game.data = (pal*)FCEU_malloc(nEntries * sizeof(pal));
2083-
for (x = 0; x < nEntries; x++) {
2084-
palette_game.data[x].r = ptmp[x + x + x];
2085-
palette_game.data[x].g = ptmp[x + x + x + 1];
2086-
palette_game.data[x].b = ptmp[x + x + x + 2];
2087-
}
2088-
palette_game.exist = TRUE;
2089-
palette_game.nEntries = nEntries;
2090-
}
2091-
free(fn);
2092-
}
2092+
/* load custom palette file */
2093+
load_custom_palette_from_file();
20932094

20942095
check_variables(true);
20952096
stereo_filter_init();

0 commit comments

Comments
 (0)