|
| 1 | +# Graal 6.01 rev 1 for Linux (`G3D0108A`) |
| 2 | + |
| 3 | +The 6.01r1 client, rebuilt. The original is the Linux build of September |
| 4 | +2011 (x64 and x86): one native C++ program, no launcher and no engine |
| 5 | +library. On the wire it keeps the gen-5 codec with its own token, no |
| 6 | +tamper check, no listserver and no licence file. This folder starts from |
| 7 | +`graal-6.03r7-G3D0511C` and changes what the 6.x notes say differs. 6.01r1 |
| 8 | +was never run in the lab; where its behaviour is not read from the binary, |
| 9 | +the 6.03r7 lab run is taken to hold. This is the 0.0.1 reproduction: hit |
| 10 | +or miss. |
| 11 | + |
| 12 | +> **Not affiliated.** graal-delphi is an independent fan project. It is not |
| 13 | +> affiliated with, endorsed by, or connected to GraalOnline or |
| 14 | +> graalonline.com, Cyberjoueurs, or Stéphane Portha ("unixmad"). |
| 15 | +
|
| 16 | +## Sources |
| 17 | + |
| 18 | +From [graal_analysis](https://github.com/squirelworks/graal_analysis), not |
| 19 | +from decompiled code: |
| 20 | + |
| 21 | +| Area | Notes | |
| 22 | +|---|---| |
| 23 | +| Token, login line, framing, ids both ways | `protocol/v6x-clients.md` | |
| 24 | +| Login mode, server warp, play (Windows 6.03r7, standing in) | `protocol/v5v6-lab-play.md` | |
| 25 | +| Everything carried over | `../graal-6.03r7-G3D0511C/README.md`, `../graal-5.00r7-G3D22067/README.md` | |
| 26 | + |
| 27 | +## What differs from the 6.03r7 rebuild |
| 28 | + |
| 29 | +| | 6.03r7 Linux | 6.01r1 Linux (this folder) | |
| 30 | +|---|---|---| |
| 31 | +| Game token | `G3D0511C` | `G3D0108A` | |
| 32 | +| Server ids handled | 92 | 91: no 111 (`creationtime.dat`) | |
| 33 | + |
| 34 | +Everything else is 6.03r7's: the login line ends with `linux` and four |
| 35 | +machine fields (sent as `""`), Login mode draws no tiles and no characters |
| 36 | +(taken from the 6.03r7 lab run), long frames, the flush at 0x1000 bytes, |
| 37 | +OSTYPE `linux`. 6.01r1 also does not send 160 (folder delete), which the |
| 38 | +rebuild never sends anyway. |
| 39 | + |
| 40 | +seihai-core has no profile for `G3D0108A`, so `scripts/loopback.sh` now |
| 41 | +adds the build's own token to the test world's allowed versions. |
| 42 | + |
| 43 | +## Units |
| 44 | + |
| 45 | +As in 6.03r7, with the suffix `601`: `Protocol601`, `GraalClient`, |
| 46 | +`Adventure`, `Graal601.dpr`, `ListServer601`, `StartScreen601`, `RunMode`. |
| 47 | + |
| 48 | +## Running it |
| 49 | + |
| 50 | +Put `Graal601` in the root of a 6.01r1 install and start it with no |
| 51 | +arguments for the start screen. It finds the install's files from there, |
| 52 | +or from `graal-assets/6.01r1/` and `graal-assets/common/` next to it. |
| 53 | + |
| 54 | +Start asks a Seihai listserver for the server list (`listserver.txt` next |
| 55 | +to the program, else `listserver.graal.in` on 14922), since the rebuild |
| 56 | +cannot show the Login server's scripted list. The picked server's name |
| 57 | +becomes the client's server name, as if the Login server had already |
| 58 | +warped there, so the level and the player are drawn. |
| 59 | + |
| 60 | +``` |
| 61 | +GRAAL_PW=... Graal601 --server HOST:PORT --account NAME # as Login |
| 62 | +GRAAL_PW=... Graal601 --server HOST:PORT --account NAME --server-name Classic |
| 63 | +Graal601 --level some.nw # offline |
| 64 | +``` |
| 65 | + |
| 66 | +With `--server` and no `--server-name` the server is `Login`: no tiles and |
| 67 | +no characters are drawn until the server sends a 178. |
| 68 | + |
| 69 | +## Files it opens |
| 70 | + |
| 71 | +From the program's folder (or `--data`), then `graal-assets/6.01r1/`, then |
| 72 | +`graal-assets/common/`: |
| 73 | + |
| 74 | +- `pics1.png` (or `pics1.gif`) at the top or in `levels/tiles/`, where a |
| 75 | + 5.x/6.x install keeps it; `arrays.dat` (a 5.x/6.x install has none, so |
| 76 | + the built-in tile types are used) |
| 77 | +- `levels/` for levels, ganis and images; `levels/heads/`, `levels/bodies/`, |
| 78 | + `levels/swords/`, `levels/shields/`, `levels/hats/`, `levels/images/`, |
| 79 | + `levels/tiles/` and `levels/images/downloads/` (where the install keeps |
| 80 | + `sprites.png`) |
| 81 | +- `levels/offlinetutorial_b-2.nw` (or `.graal`) for Training, else `start.nw` |
| 82 | + (a 5.x/6.x install has no offline tutorial, so Training plays `start.nw`) |
| 83 | +- `listserver.txt` (optional) |
| 84 | + |
| 85 | +## Not yet, or not known |
| 86 | + |
| 87 | +- Whether 6.01r1 draws tiles in Login mode: not recorded; 6.03r7's "no" is |
| 88 | + used. |
| 89 | +- The Login server's scripted GUI and GS2: 140 and 197 (scripts and the |
| 90 | + `GRESCR01` cache), 195 (gani scripts) and 190 are accepted and ignored. |
| 91 | +- 109 (probably a file redirect) and 198 are accepted and ignored. |
| 92 | +- 46 (ENTERLEVEL) on level entry, 162 (the ping answer), the base-file |
| 93 | + requests and the keep-alive 24 are not sent. |
| 94 | +- `GR-V1.05` levels and `GRPKG001` update packages. |
| 95 | +- The chat font (Tempus Sans ITC 24) and nickname colours by AP. |
| 96 | +- Whether 6.01r1 plays offline at all is not traced; Training keeps 3.153's. |
| 97 | +- No side-by-side run against the real 6.01r1; that is 0.0.2 work. |
| 98 | +- Everything still missing from the 6.03r7 rebuild. |
0 commit comments