<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to RGZ</title><link>https://sourceforge.net/p/hercules/wiki/RGZ/</link><description>Recent changes to RGZ</description><atom:link href="https://sourceforge.net/p/hercules/wiki/RGZ/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 20 Feb 2023 05:03:11 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/hercules/wiki/RGZ/feed" rel="self" type="application/rss+xml"/><item><title>RGZ modified by Brynner</title><link>https://sourceforge.net/p/hercules/wiki/RGZ/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;An RGZ file is a proprietary compressed archive format used for &lt;span&gt;[Ragnarok&lt;br/&gt;
Online]&lt;/span&gt;, developed by&lt;br/&gt;
&lt;a class="" href="http://en.wikipedia.org/wiki/Gravity_(company)" rel="nofollow"&gt;Gravity&lt;/a&gt;. It is used for&lt;br/&gt;
patching the local file system directory, the game client resides in. The&lt;br/&gt;
archive mostly contains updated game executable or new background music files.&lt;br/&gt;
The extension is always &lt;strong&gt;.rgz&lt;/strong&gt; and might be an abbreviation for&lt;br/&gt;
&lt;strong&gt;ragnarok+gzip&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#file-format"&gt;File Format&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#file"&gt;File&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#directory"&gt;Directory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#end"&gt;End&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hex-workshop-definition-file-ragnarokhsl"&gt;Hex Workshop Definition File (ragnarok.hsl)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#tools"&gt;Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#see-also"&gt;See Also&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="file-format"&gt;File Format&lt;/h2&gt;
&lt;p&gt;The RGZ archive is a sequential concatenation of files and/or directories&lt;br/&gt;
entries, compressed with &lt;a class="" href="http://en.wikipedia.org/wiki/Gzip" rel="nofollow"&gt;gzip&lt;/a&gt;, much like&lt;br/&gt;
&lt;a class="" href="http://en.wikipedia.org/wiki/Tar_(file_format)" rel="nofollow"&gt;tar+gzip&lt;/a&gt; archives are.&lt;br/&gt;
Each entry inside the archive is defined by following structure:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field Offset&lt;/th&gt;
&lt;th&gt;Field Size&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Entry type (case-sensitive)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;File name field length&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;td&gt;File name (zero-terminated)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The entry type specifies, what kind of data it represents. It can be &lt;strong&gt;f&lt;/strong&gt;&lt;br/&gt;
(file), &lt;strong&gt;d&lt;/strong&gt; (directory) or &lt;strong&gt;e&lt;/strong&gt; (end). The file name always denotes&lt;br/&gt;
relative position of the file, inside the folder, the archive is patched to.&lt;/p&gt;
&lt;h3 id="file"&gt;File&lt;/h3&gt;
&lt;p&gt;A file entry can store any type of file, up to 232 - 1 Byte (4&lt;br/&gt;
&lt;a class="" href="http://en.wikipedia.org/wiki/Gibibyte" rel="nofollow"&gt;GiB&lt;/a&gt; - 1 Byte) in length. If the file&lt;br/&gt;
is put into a sub-directory, the entire path is assumed to exist. A file entry&lt;br/&gt;
always follows a directory entry, that creates the path in advance. The&lt;br/&gt;
additional data in the file entry has the following structure:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field Offset&lt;/th&gt;
&lt;th&gt;Field Size&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Data length ([little&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;endian](http://en.wikipedia.org/wiki/Little_endian))&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="directory"&gt;Directory&lt;/h3&gt;
&lt;p&gt;Directory entries have no additional data, and create a single directory, not&lt;br/&gt;
an entire path. That means if you want to create &lt;strong&gt;dir1\dir2&lt;/strong&gt; it requires two&lt;br/&gt;
entries, one for &lt;strong&gt;dir1&lt;/strong&gt; and the second for &lt;strong&gt;dir2&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="end"&gt;End&lt;/h3&gt;
&lt;p&gt;End entry is the last entry inside the archive, and makes the patcher stop&lt;br/&gt;
parsing the archive. The file name for this entry is always &lt;strong&gt;end&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="hex-workshop-definition-file-ragnarokhsl"&gt;Hex Workshop Definition File (ragnarok.hsl)&lt;/h3&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="cm"&gt;/********************&lt;/span&gt;
&lt;span class="cm"&gt;* &lt;/span&gt;
&lt;span class="cm"&gt;* Ragnarok Resource files to view and edit&lt;/span&gt;
&lt;span class="cm"&gt;*&lt;/span&gt;
&lt;span class="cm"&gt;*/&lt;/span&gt;

&lt;span class="n"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"standard-types.hsl"&lt;/span&gt;

&lt;span class="n"&gt;#pragma&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;displayname&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;"Ragnarok GZip"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;#pragma&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fileextensions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;".rgz"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;#pragma&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;byteorder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;little_endian&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;#pragma&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;maxarray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;65536&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;#pragma&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hide&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;struct&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;FILESTRUCT&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;struct&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tagFILENAME&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nc"&gt;char&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;switch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mh"&gt;0x66&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;struct&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;FILECONTENTS&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;DWORD&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="k"&gt;blob&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;

&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;#pragma&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;struct&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;struct&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;FILESTRUCT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;entries&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;256&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="" href="http://eamirror.skamfroj.net/xdl/download.php?id=32" rel="nofollow"&gt;RGZ pack/unpack ulility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://sourceforge.net/projects/clientpatcher/files/"&gt;RGZ builder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://vanaheim.the-aria.com/rgz/" rel="nofollow"&gt;7-zip RGZ plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="see-also"&gt;See Also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="alink" href="/p/hercules/wiki/GRF/"&gt;[GRF]&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;[Category:File Formats]&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Brynner</dc:creator><pubDate>Mon, 20 Feb 2023 05:03:11 -0000</pubDate><guid>https://sourceforge.net1ff2243e83bbf2166e5d363a9cd5ddba6dbe9c38</guid></item></channel></rss>