forked from openrs2/openrs2
parent
c9a87e7772
commit
70cc0d1d9a
@ -0,0 +1,58 @@ |
||||
# JAGGRAB protocol |
||||
|
||||
JAGGRAB is a very simple protocol used by the loader to fetch the game's code. |
||||
It is only used as a fallback if fetching the code via HTTP fails. It is very |
||||
similar to [HTTP/0.9][http09] - the first version of HTTP. |
||||
|
||||
The loader opens a connection to the secondary game server port (443) and sends |
||||
the 'switch to JAGGRAB mode' packet. As this packet has no payload, it only |
||||
contains a single opcode byte: `17`. |
||||
|
||||
The loader then writes the following string: |
||||
|
||||
JAGGRAB /<file name> |
||||
|
||||
where `<file name>` is replaced with the name of the file to fetch. The string |
||||
is followed by two line feed characters. |
||||
|
||||
The server responds with the requested file and then closes the connection. |
||||
|
||||
The file names are suffixed with their CRC-32 checksum (for example, |
||||
`unpackclass.pack` -> `unpackclass_-1911426584.pack`). The same file names are |
||||
used when the client requests the files over HTTP, so the suffixes are |
||||
presumably for cache busting. The Old School RuneScape servers do not require |
||||
the checksum suffix to be present or correct. |
||||
|
||||
In build 550, the following files may be requested with JAGGRAB: |
||||
|
||||
| Remote file name | Local file name | Description | |
||||
|------------------------|------------------------|----------------------------------------------------| |
||||
| `unpackclass.pack` | `game_unpacker.dat` | packclass unpacker | |
||||
| `runescape.pack200` | `main_file_cache.dat0` | SD client (pack200 format) | |
||||
| `runescape.js5` | `main_file_cache.dat1` | SD client (packclass format) | |
||||
| `runescape_gl.pack200` | `main_file_cache.dat3` | HD client (pack200 format) | |
||||
| `runescape_gl.js5` | `main_file_cache.dat4` | HD client (packclass format) | |
||||
| `jaggl.pack200` | `main_file_cache.dat5` | OpenGL bindings (pack200 format) | |
||||
| `jaggl.js5` | `main_file_cache.dat6` | OpenGL bindings (packclass format) | |
||||
| `jaggl_0_0.lib` | `jaggl.dll` | OpenGL native library (Windows i386) | |
||||
| `jaggl_1_0.lib` | `libjaggl.so` | OpenGL native library (Linux i386) | |
||||
| `jaggl_1_1.lib` | `libjaggl_dri.so` | DRI hack native library (Linux i386) | |
||||
| `jaggl_2_0.lib` | `libjaggl.jnilib` | OpenGL native library (macOS PowerPC) | |
||||
| `jaggl_3_0.lib` | `libjaggl.jnilib` | OpenGL native library (macOS i386) | |
||||
| `jaggl_4_0.lib` | `jaggl.dll` | OpenGL native library (Windows amd64) | |
||||
| `jagmisc_0.lib` | `jagmisc.dll` | Miscellaneous native library (Windows i386) | |
||||
| `jagmisc_1.lib` | `jagmiscms.dll` | Miscellaneous native library (Windows i386, MSJVM) | |
||||
| `jagmisc_2.lib` | `jagmisc64.dll` | Miscellaneous native library (Windows amd64) | |
||||
|
||||
Note that OpenRS2's client patcher changes the list of supported platforms: |
||||
|
||||
* MSJVM support is removed. |
||||
* PowerPC support is removed. |
||||
* amd64 support is added to macOS and Linux. |
||||
|
||||
This causes some differences to the list of supported files. |
||||
|
||||
It also normalises some of the local file names (for example, `jagmisc64.dll` -> |
||||
`jagmisc.dll`, `libjaggl.jnilib` -> `libjaggl.dylib`). |
||||
|
||||
[http09]: https://www.w3.org/Protocols/HTTP/AsImplemented.html |
Loading…
Reference in new issue