frs is the current movie capture format used by Final Burn Alpha Shuffle. It is a modified version of the fbm file format.
Note: fba-rr has a bug where it will repeat the metadata chunk each time the emulator is closed/reloaded (for example, reloading a movie.) Example below. This is NOT fixed in fbash.
From the official documentation:
frs is the movie capture format used by FBA shuffle.
It is almost identical to the earlier fr format used by blip's rerecording build.
FRS file format description FRS file consists of a header, followed by an optional save state chunk,
followed by a frame data chunk, then a metadata chunk.
File Header format:
000 4-byte signature: 46 42 31 20 "FB1 "
004 1-byte int: movie flag (1 = record from start)
005 4-byte little-endian unsigned int: major revision of libburn
00D 4-byte little-endian unsigned int: minor revision of libburn
000 4-byte signature: 46 42 31 20 "FB1 "
004 1-byte int: movie flag (1 = record from start)
005 4-byte little-endian unsigned int: major revision of libburn
00D 4-byte little-endian unsigned int: minor revision of libburn
Save State Chunk format:
000 4-byte chunk identifier: 46 53 31 20 "FS1 "
004 4-byte little-endian unsigned int: size of this save state chunk in bytes, not including the chunk identifier
008 4-byte little-endian unsigned int: version of FB this was saved from
00C 4-byte little-endian unsigned int: minimum FBA version required to load NV data
010 4-byte little-endian unsigned int: minimum FBA version required to load All data
014 4-byte little-endian unsigned int: size of the compressed saved data (not including header size or padding)
018 32-byte possibly-unterminated ASCII string: Name of the game
038 4-byte little-endian unsigned int: number of frames that have already been emulated before recording started
03C 12 bytes: reserved, set to 0
048: the compressed save data
000 4-byte chunk identifier: 46 53 31 20 "FS1 "
004 4-byte little-endian unsigned int: size of this save state chunk in bytes, not including the chunk identifier
008 4-byte little-endian unsigned int: version of FB this was saved from
00C 4-byte little-endian unsigned int: minimum FBA version required to load NV data
010 4-byte little-endian unsigned int: minimum FBA version required to load All data
014 4-byte little-endian unsigned int: size of the compressed saved data (not including header size or padding)
018 32-byte possibly-unterminated ASCII string: Name of the game
038 4-byte little-endian unsigned int: number of frames that have already been emulated before recording started
03C 12 bytes: reserved, set to 0
048: the compressed save data
Frame Data Chunk format:
000 4-byte chunk identifier: 46 52 31 20 "FR1 "
004 32-byte possibly-unterminated ASCII string: Name of the game
004 32-byte null-terminated ASCII string: Application version
024 4-byte little-endian unsigned int: size of this frame data chunk in bytes, not including the chunk identifier
028 4-byte little-endian unsigned int: number of recorded frames
02A 4-byte little-endian unsigned int: rerecord count
02E 8 bytes: reserved, set to 0
036: frame input data. The format varies depending on which inputs the game supports and may be compressed (unknown). Reset is always a possible input, although the value that means Reset will be different depending on the game.
000 4-byte chunk identifier: 46 52 31 20 "FR1 "
004 32-byte possibly-unterminated ASCII string: Name of the game
004 32-byte null-terminated ASCII string: Application version
024 4-byte little-endian unsigned int: size of this frame data chunk in bytes, not including the chunk identifier
028 4-byte little-endian unsigned int: number of recorded frames
02A 4-byte little-endian unsigned int: rerecord count
02E 8 bytes: reserved, set to 0
036: frame input data. The format varies depending on which inputs the game supports and may be compressed (unknown). Reset is always a possible input, although the value that means Reset will be different depending on the game.
Meta Data Chunk format:
000 4-byte chunk identifier: 46 52 31 20 "FRM1"
004 4-byte little-endian unsigned int: size of the metadata in bytes, not including the chunk identifier or this integer
008 string of little-endian 2-byte wide characters of locale-dependant encoding: author information
000 4-byte chunk identifier: 46 52 31 20 "FRM1"
004 4-byte little-endian unsigned int: size of the metadata in bytes, not including the chunk identifier or this integer
008 string of little-endian 2-byte wide characters of locale-dependant encoding: author information
Notes The format does not indicate a framerate, but it is assumed to always be 60 frames per second.