Table of Contents
Resource Reverse Engineering: Yesterday
The Android version is basically a lower resolution version the Steam version packed in a single OBB file, a few of the video and audio formats are different.
Android OBB
- Number of files = 4 bytes / 4
- For each file:
- Filename length = 4 bytes
- ASCII filename
- Offset = 4 bytes
- Size = 4 bytes
Audio
Filename contains DATAA, or starts with Resource.S0
Pack file containing wav, ogg, or something else.
- Number of files = 4 bytes / 4
- For each file:
- Offset = 4 bytes
- Size = 4 bytes
- Unknown = 4 bytes
- Type = 1 byte
- Type 0x00 is wav
- Type 0x02 is ogg
- Otherwise I have no idea.
Image
File name contains Resource, isn't any of the other types, extension isn't 003/TAB/FNT/DIS, and extension doesn't start with S/P (but it can be *.SP*).
Sometimes these are single images, sometimes it's a packed format.
- Number of files = 4 bytes / 4
- For each file: Offset = 4 bytes
- For each file: Size = 4 bytes
Then for each file read the first 4 bytes.
- 0x474E5089 = PNG
- 0xE0FFD8FF or 0xE1FFD8FF = JPG
- It might be another packed image, just repeat this process on it.
- In the case of *.SP* files, these are somehow sprites.
Sprites
Similar to Runaway NDS sprites, except all the frames are in one file and there's an extra byte in the format. Android sprites are just a lower resolution than Steam sprites, same format otherwise.
Basically the SPR files only store used pixels (no palette!). Repeat the following until EOF:
- Start x = 2 bytes
- Start y = 2 bytes
- Flag = 1 byte
- Num Values Base = 2 bytes
- If Flag = 4, then values is Base (these are usually found near feet, unsure what it means)
- If Flag = 6, then values is Base * 3 (BGR)
- If Flag = 7, then values is Base * 4 (BGRA)
- If Flag = 8, then end the image frame? Unsure what Base here means.
Video
Filename starts with V, is RESOURCE.B31 or RESOURCE.CRD.
Read the first 4 bytes, rename the file depending on the header.
- 0x46464952 = RIFF (Android) = MP4
- 0x694B4942 = BIKi (Steam) = BIK
Yesterday Origins
Only just released, I will likely start looking around the files after I finish a playthrough. It's a Unity game so there might not actually be anything to solve?