A Risen Archive file is a generic container format. It is used for miscellaneous binary data to save disk space by string pooling. Technically it is a transparent stream where Read(bCString) and Write(bCString) are overridden. Note that there is no string pooling for Unicode strings.

Code:
struct Head {
  char8_t  Magic[8];  // "GENOMFLE"
  uint16_t Version;   // 0001
  uint32_t Offset;
}
class Data {
  // bCStrings are stored as uint16_t index into Text[]
  uint8_t Buff[Head.Offset - sizeof(Head)];
}
// @Head.Offset
class Text {
  uint32_t Magic;    // DEADBEEF
  uint8_t  Version;  // 01
  uint32_t Count;
  for( Count ) {
    uint16_t Length;
    char8_t  String[Length];  // (ASCII)
  }
}