diff --git a/docs/arcturus/01-index.md b/docs/arcturus/01-index.md index b0983d49..00be88d7 100644 --- a/docs/arcturus/01-index.md +++ b/docs/arcturus/01-index.md @@ -36,7 +36,9 @@ This section is a placeholder. If you know anything about the topic, please help ## File Formats -The following file types have been found in the Japanese DVD release of Arcturus: +The following file types have been found in the Japanese DVD release of Arcturus (TODO: Add hash of the PAK files? There aren't that many versions...): + +TODO: Shared file formats -> link to RO overview or combine both and add to landing page/link from there? ```txt title=arcturus-jp-extensions.txt act diff --git a/docs/file-formats/01-index.md b/docs/file-formats/01-index.md index 5c49b9b4..7324b4e4 100644 --- a/docs/file-formats/01-index.md +++ b/docs/file-formats/01-index.md @@ -61,3 +61,116 @@ Here's a list of the atomic data types that you may encounter in the layout tabl | `array` | variable | Fixed-size array of structures or values; the exact size depends and may only be implicit | Please note that in many cases the exact type is unknown and can only be guessed, based on examples found "in the wild". + +## Ragnarok File Formats + +Gravity created a number of custom file formats for [Arcturus](/arcturus), which they later adapted for the RO client. +This documentation differentiates between them only as far as is necessary to understand their many unused (and oftentimes strange) features. + +### Asset Containers + +Bundling many small files in a [BLOB](https://en.wikipedia.org/wiki/Object_storage) "archive" can help minimize the disk footprint and speed up loading times: + +- [GRF](/file-formats/GRF): Most of the game assets are stored in this large storage container, potentially compressed and/or encrypted +- [RGZ](/file-formats/RGZ): The RO client includes a "Patch Client" that downloads most updates in this compressed storage format +- [GPF](/file-formats/GPF): Another extension used the the game's updater, which however seems to just be an alias for GRF files +- [PAK](/file-formats/PAK): Arcturus and early RO clients use a different format, the origins of which aren't quite clear to me at this time + +Although modern SSDs have different performance characteristics than mechanical HDDs, the game continues to rely on asset containers as a virtual file system. Most frequently-accessed files must therefore be extracted in-memory or on disk. + +### Raster Images + +A combination of standard and custom-made image formats see use in the RO client: + +- [BMP](https://en.wikipedia.org/wiki/BMP_file_format): Most of the sprites and textures mapped to 3D geometry exists as raw bitmap +- PAL: They're lookup tables that store [palette]() colors for the indexed-color image formats +- [TGA](https://en.wikipedia.org/wiki/Truevision_TGA): Truecolor images with transparency exist for many effects and some monster sprites +- [JPG](https://en.wikipedia.org/wiki/JPEG): These appear to be fairly rare, but in a few instances JPEG textures were assigned +- [EBM](/file-formats/ebm): Guild emblems are also bitmaps, but the RO client compresses them first + +Other formats may include image data as well, but it's usually combined with other metadata. + +### Map Definitions + +- Map files: RSW, GND, GAT + +### 2D Sprites + +- 2D sprites and effects: SPR, ACT, , IMF, , STR, EZV (, , ) + +### 3D Models + +TODO: RSM, RSM2, GR2, Arcturus (RMA?) + +- 3D models: RSM, RSM2, GR2 (see RAD website) + +### Multimedia + +Although both games contain various multimedia formats, they will not be fully specified here: + +- [WAV](https://en.wikipedia.org/wiki/WAV): Sound effects and music-like jingles/songs utilize the waveform audio format +- [MP3](https://en.wikipedia.org/wiki/MP3): All of the background music ("BGM") tracks use this standard audio format +- [BIK](/file-formats): Video textures in [Bink](https://www.radgametools.com/bnkmain.htm) format; introduced recently and so far extremely niche +- [ADP](/file-formats/adp): Arcturus stores its music tracks in [ADPCM](https://en.wikipedia.org/wiki/Adaptive_differential_pulse-code_modulation) format, with a fairly arcane codec + + +### Miscellaneous + +Anything that doesn't fit the above criteria - most of these aren't particularly relevant: + +- Scripts: Lua and LUB (see Lua website) + +```sh + 1 bak + 1 bat + 1 egg + 1 fds + 1 flc + 1 mp3 + 1 pptx + 1 rsx + 1 scp + 1 zip + 2 ase + 2 scc + 2 tmp + 3 bson + 3 log + 4 gif + 4 psd + 4 sfk + 4 xml + 5 bik + 16 lua + 21 gr2 + 23 fna + 64 db + 91 ezv + 114 txt + 305 imf + 392 jpg + 449 png + 453 lub + 987 gnd + 988 gat + 988 rsw + 1733 rsm2 + 2716 str + 3103 wav + 3676 pal + 7048 rsm + 7565 tga + 39505 spr + 46583 bmp + 54845 act +``` + +See https://github.com/RagnarokResearchLab/ragnarokresearchlab.github.io/issues/92#issuecomment-1858732921 + +Most of this is probably garbage - double-check just to be safe? + +Also check Arcturus? (Maybe later...) + +--- + +TODO old README, maybe separate page