All right, following up on this, I took Piru's example and changed the part where he populated the array variable with this bit of code: while(!done) {
UBYTE a; if (!done) if (!(a = fgetc(test))) done = TRUE;
UBYTE r; if (!done) if (!(r = fgetc(test))) done = TRUE;
UBYTE g; if (!done) if (!(g = fgetc(test))) done = TRUE;
UBYTE b; if (!done) if (!(b = fgetc(test))) done = TRUE;
if (!done) array[y * WIDTH + x] = (r << 16) | (g << 8) | b;
}
Unfortunately, and not unexpectedly, all I got was garbage. I even switched the "UBYTE a" variable from first to last to account for the differences between ARGB and RGBA. I may be approaching this completely wrong and may have made a number of bad assumptions. As always, if ya gots some clues, please enlighten me. :-)
Ed.