OFS3 filesystem:
Quote (Example file: psp/ui/storage.bin)
0x00: 4F46 5333 1000 0000 0200 4000 30A3 0200
0x10: 0300 0000 3000 0000 00DF 0100 30A3 0200
0x20: 30DF 0100 0CC3 0000 41A3 0200 70A2 0200
0x30: A000 0000 4FA3 0200 0000 0000 0000 0000
Quote (OFS3 header (16-bytes))
0x00: [4-bytes] OFS3 file signature (it's always 4F46 5333)
0x04: [4-bytes] OFS3 Header size (it's always 1000 0000)
0x08: [4-bytes] Unknown value
0x0c: [4-bytes] Nametable Start address (this points to the end of the file if nametable doesnt exist)
Quote ( OFS3 Filetable (variable size))
data table starts with a 4-byte value indicating file count.
each file entry consists of 12-bytes
0x10: [4-bytes] Number of files
0x14: [4-bytes] File Start Address
0x18: [4-bytes] File Length
0x1c: [4-bytes] Filename Position
[the pattern of 0x14 -> 0x1C repeats as many times as there are files inside the container]
Note: If 0xC points to file end (no nametable present) the value of 0x1C (name position) is omitted, and the
structure only consists of File Start Address + File Length values.
note 2: there seems to be a large number of variables for the OFS3 found within the game, particularly the packs containing model files seem to have a table formatting completely different.
Note: the addresses displayed within OFS3 Filetable are relative to Data, which means you need to either add 0x10 (16 bytes) to every address, or delete the first 16 bytes (the OFS3 File header) prior to extracting.