So why the preference of a CHAR array rather than a VAR array?
I only looked into this as I saw a potential shortcut for you that didnt pan out.

If you dont want to have VARs in your struct you could use FLOATs instead.
Change your struct to float picture[20000]; and replace you encoding line
savegame->picture[z] = pixel_for_bmap(screenshot_pic,x,y);
with
savegame->picture[z] = floatv(pixel_for_bmap(screenshot_pic,x,y));

and your decoding line
pixel_to_bmap(pic,x,y,savegame->picture[z]);
MAY need to change to
pixel_to_bmap(pic,x,y,(var)savegame->picture[z]);

Then all the data will be stored as a clean single FLOAT for every pixel.
Also would it possible be better to store the picture data is a TWO dimensional
array like this? float picture[245][110];


"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial