MCPcopy Create free account
hub / github.com/RSDKModding/RSDKv4-Decompilation / LoadGIFFile

Function LoadGIFFile

RSDKv4/Sprite.cpp:306–383  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

304 return false;
305}
306int LoadGIFFile(const char *filePath, byte sheetID)
307{
308 FileInfo info;
309 if (LoadFile(filePath, &info)) {
310 GFXSurface *surface = &gfxSurface[sheetID];
311 StrCopy(surface->fileName, filePath);
312
313 byte fileBuffer = 0;
314
315 SetFilePosition(6); // GIF89a
316 FileRead(&fileBuffer, 1);
317 surface->width = fileBuffer;
318 FileRead(&fileBuffer, 1);
319 surface->width |= fileBuffer << 8;
320 FileRead(&fileBuffer, 1);
321 surface->height = fileBuffer;
322 FileRead(&fileBuffer, 1);
323 surface->height |= fileBuffer << 8;
324
325 FileRead(&fileBuffer, 1); // Palette Size
326 // int has_pallete = (fileBuffer & 0x80) >> 7;
327 // int colors = ((fileBuffer & 0x70) >> 4) + 1;
328 int palette_size = (fileBuffer & 0x7) + 1;
329 if (palette_size > 0)
330 palette_size = 1 << palette_size;
331 FileRead(&fileBuffer, 1); // BG Color index (thrown away)
332 FileRead(&fileBuffer, 1); // idk actually (still thrown away)
333
334 int c = 0;
335 byte clr[3];
336 do {
337 ++c;
338 FileRead(clr, 3);
339 } while (c != palette_size);
340
341 FileRead(&fileBuffer, 1);
342 while (fileBuffer != ',') FileRead(&fileBuffer, 1); // gif image start identifier
343
344 ushort fileBuffer2 = 0;
345 FileRead(&fileBuffer2, 2);
346 FileRead(&fileBuffer2, 2);
347 FileRead(&fileBuffer2, 2);
348 FileRead(&fileBuffer2, 2);
349 FileRead(&fileBuffer, 1);
350 bool interlaced = (fileBuffer & 0x40) >> 6;
351 if (fileBuffer >> 7 == 1) {
352 int c = 0x80;
353 do {
354 ++c;
355 FileRead(clr, 3);
356 } while (c != 0x100);
357 }
358
359 surface->dataPosition = gfxDataPosition;
360
361#if RETRO_SOFTWARE_RENDER
362 surface->widthShift = 0;
363 int w = surface->width;

Callers 3

AddGraphicsFileFunction · 0.85
InitDevMenuFunction · 0.85
InitErrorMessageFunction · 0.85

Calls 6

StrCopyFunction · 0.85
SetFilePositionFunction · 0.85
FileReadFunction · 0.85
ReadGifPictureDataFunction · 0.85
PrintLogFunction · 0.85
CloseFileFunction · 0.85

Tested by

no test coverage detected