Ren’Py RPA: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
 
(47 intermediate revisions by the same user not shown)
Line 4: Line 4:
* ''' Format Type ''':    Archive <br>  
* ''' Format Type ''':    Archive <br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br>
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br>
* ''' Signatures ''':    RPA-1.0 / RPA-2.0 / RPA-3.0 <br>  
* ''' Signatures ''':    RPA-1.0 / RPA-2.0 / RPA-3.0 / RPA-4.0 <br>  




Line 11: Line 11:
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<pre>
<pre>
//header
// header
7 bytes (char) - signature // e.g. "RPA-3.0"
7 bytes (char) - signature // e.g. "RPA-3.0"
1 byte (char) - separator  // 0x20
1 byte (char) - separator  // 0x20
16 bytes (char) - offset  // e.g. "00000000005096c9"  which is offset 5281481
16 bytes (char) - file index offset  // e.g. "00000000005096c9"  which is offset 5281481
1 byte (char) - separator  // 0x20
1 byte (char) - separator  // 0x20
8 bytes (char) - key  // e.g. "42424242" which is key 1111638594
8 bytes (char) - file index encryption key  // e.g. "42424242" which is key 1111638594


// TODO
 
// file data
num_of_files *
{
  17 bytes (char) - engine string  // "Made with Ren'Py."
  x bytes - data
}
 
 
// file index (compressed with ZLIB)
// index is serialized with Python "Pickle" module (protocol version 2 or newer)
// more info here https://docs.python.org/3/library/pickle.html
// and here https://peps.python.org/pep-3154/
// and here http://fileformats.archiveteam.org/wiki/Pickle
// index is also encrypted with simple XOR (offset and size are XORed with the index key)
{
  2 bytes (uint16) - protocol signature  // 0x80 0x02
  num_of_frames *
  {
      1 byte (uint8) - frame opcode
      4 bytes (uint32) - unknown
      4 bytes (uint32) - frame key length
      x bytes (char) - frame key (file name)
      x bytes - frame data  // encrypted
  }
}
</pre>
</pre>
</div>
</div>
Line 29: Line 54:


* This file format occurs in games made on '''Ren’Py Engine'''.
* This file format occurs in games made on '''Ren’Py Engine'''.
* This file format uses '''ZLIB''' compression and '''XOR''' encryption.


=== Games ===  
=== Games ===  
List of games using this file format:
List of games using this file format:
* Arcade Spirits (*.RPA) (PC)
* Arcade Spirits (*.RPA) (PC)
* Cardinal Cross (*.RPA) (PC)
* Changeling (*.RPA) (PC)
* Doki Doki Literature Club! (*.RPA) (PC)
* Doki Doki Literature Club! (*.RPA) (PC)
* DUFE: Masquerade (*.RPA) (PC)
* Highway Blossoms: Remastered (*.RPA) (PC)
* I'm a love interest in my childhood friend's reverse harem!!! (*.RPA) (PC)
* little boats of farewell (*.RPA) (PC)
* Our Life: Beginnings & Always (*.RPA) (PC)
* Our Life: Beginnings & Always (*.RPA) (PC)
* Pale Cachexia (*.RPA) (PC)
* Therapy with Dr. Albert Krueger (*.RPA) (PC)
* many more...
* many more...


Line 47: Line 81:




[[Category:Complete WIP|Ren’Py RPA]]
[[Category:Complete Almost Done|Ren’Py RPA]]
[[Category:Platform PC|Ren’Py RPA]]
[[Category:Platform PC|Ren’Py RPA]]
[[Category:CE None|Ren’Py RPA]]
[[Category:CE Both|Ren’Py RPA]]
[[Category:Format_Archive | Type: Archive]]
[[Category:Format_Archive | Type: Archive]]
[[Category:Extension_rpa | Extension: rpa]]
[[Category:Extension_rpa | Extension: rpa]]
[[Category:BMS_None | BMS: None]]
[[Category:BMS_None | BMS: None]]
[[Category:ZLIB compression]]
[[Category:XOR encryption]]
[[Category:File Format]]
[[Category:File Format]]

Latest revision as of 19:58, 21 January 2023

Back to index | Edit this page

RPA

  • Format Type : Archive
  • Endian Order : Little Endian
  • Signatures : RPA-1.0 / RPA-2.0 / RPA-3.0 / RPA-4.0


Format Specifications

// header
7 bytes (char) - signature // e.g. "RPA-3.0"
1 byte (char) - separator  // 0x20
16 bytes (char) - file index offset  // e.g. "00000000005096c9"  which is offset 5281481
1 byte (char) - separator  // 0x20
8 bytes (char) - file index encryption key  // e.g. "42424242" which is key 1111638594


// file data
num_of_files *
{
   17 bytes (char) - engine string  // "Made with Ren'Py."
   x bytes - data
}


// file index (compressed with ZLIB)
// index is serialized with Python "Pickle" module (protocol version 2 or newer)
// more info here https://docs.python.org/3/library/pickle.html
// and here https://peps.python.org/pep-3154/
// and here http://fileformats.archiveteam.org/wiki/Pickle
// index is also encrypted with simple XOR (offset and size are XORed with the index key)
{
   2 bytes (uint16) - protocol signature  // 0x80 0x02
   num_of_frames *
   {
      1 byte (uint8) - frame opcode
      4 bytes (uint32) - unknown
      4 bytes (uint32) - frame key length
      x bytes (char) - frame key (file name)
      x bytes - frame data  // encrypted
   }
}

MultiEx BMS Script

Not written yet.

Notes and Comments

  • This file format occurs in games made on Ren’Py Engine.
  • This file format uses ZLIB compression and XOR encryption.

Games

List of games using this file format:

  • Arcade Spirits (*.RPA) (PC)
  • Cardinal Cross (*.RPA) (PC)
  • Changeling (*.RPA) (PC)
  • Doki Doki Literature Club! (*.RPA) (PC)
  • DUFE: Masquerade (*.RPA) (PC)
  • Highway Blossoms: Remastered (*.RPA) (PC)
  • I'm a love interest in my childhood friend's reverse harem!!! (*.RPA) (PC)
  • little boats of farewell (*.RPA) (PC)
  • Our Life: Beginnings & Always (*.RPA) (PC)
  • Pale Cachexia (*.RPA) (PC)
  • Therapy with Dr. Albert Krueger (*.RPA) (PC)
  • many more...

Compatible Programs