ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/kgsueme/doc/protocol.html
Revision: 1.13
Committed: Tue Jun 10 08:30:09 2003 UTC (23 years, 4 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.12: +10 -7 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 pcg 1.1 <html>
2     <head>
3     <title>KGS Protocol Description</title>
4     <!--
5     Copyright (C) 2003 Marc Lehmannn &lt;pcg@goof.com&gt;
6    
7     You can redistribute and/or modify this document under the terms of
8     the GNU General Public License as published by the Free Software
9     Foundation; either version 2 of the License, or (at your option) any
10     later version.
11    
12     This document is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15     General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License
18     along with this program; if not, write to the Free Software
19     Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20     -->
21     </head>
22     <body>
23    
24 pcg 1.13 <h1>$Revision: 1.14 $</h1>
25 pcg 1.9
26 pcg 1.1 <h1>KGS Protocol Description</h1>
27    
28     <p>This XML document describes the KGS protocol. It is also used
29     to automatically generate the perl parser for all the messages and
30     structures in the protocol. Adapting it to other languages should be
31     trivial.</p>
32    
33 pcg 1.9 <p>
34     <b>Please note that the author of KGS has told me that he will
35     change the protocol in response to my efforts. This does not
36     necessarily mean that he will change the protocol just to make it
37     difficult to reverse-engineer the protocol, but if this happens,
38     I might not have the resources the track them, if they are too
39     extensive. Anyway, he made it clear that no help whatsoever is to be
40     expected.</b>
41     </p>
42    
43 pcg 1.4 <p>If you feel you need to update the visual appearance of this
44 pcg 1.10 document, feel free to look <tt>doc/doc2html.xsl</tt> and improve
45 pcg 1.4 it.</p>
46    
47 pcg 1.7 <p>The current version of this document can always be found at
48     <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.xml?rev=HEAD&amp;content-type=text/xml">here</a>, while
49     the HTML version of it can be found
50     <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.html?rev=HEAD&amp;content-type=text/html">here</a>.
51     </p>
52    
53 pcg 1.1 <h2>Structure and conventions of this document and the protocol</h2>
54    
55     <p>"Send" means messages send from the client to the server, while
56     "received" means messages send by the server to the client.</p>
57    
58 pcg 1.4 <p>Everything on the wire is in little-endian format (what a shame).</p>
59 pcg 1.1
60 pcg 1.4 <p>Primitive types are mostly integers (signed
61     "<code>I</code>&lt;bits&gt;", unsigned "<code>U</code>&lt;bits&gt;"),
62     ascii strings ("<code>username</code>"), or zero-terminated
63     UCS2-Strings ("<code>STRING</code>"). Yes, I know java is supposed to
64     do UTF-16, but no implementation seems to care...</p>
65 pcg 1.1
66     <p>For the rest, go figure or bug me, Marc Lehmann &lt;pcg@goof.com&gt;</p>
67    
68     <h2>Stream and message structure.</h2>
69    
70 pcg 1.4 <p>After connecting to the server, a handshake byte is sent. It's
71     the major version number of the protocol the client expects to
72     receive. Version 3 and 4 are mostly the same, except that Version 4
73     clients expect server messages to be compressed, version 3 clients
74     not.</p>
75    
76     <p>The server sends back his protocol number, which is always 3 in
77     the current protocol. Most of the protocol variation is determined by
78     the server using the client version that is used in the initial login
79     message, not the initial handshake byte.</p>
80 pcg 1.1
81     <p>After the initial handshake, the client sends uncompressed
82     messages, while the server sends back a zlib-compressed
83     stream (<a href="http://rfc1950.x42.com/">rfc1950</a> and <a href="http://rfc1950.x42.com/">rfc1951</a>).</p>
84    
85     <p>All messages have the same header:</p>
86    
87 pcg 1.3 <h4>STRUCTURE message_header</h4>
88 pcg 1.1 <table border="1">
89     <tr>
90     <th>NAME</th>
91     <th>TYPE</th>
92     <th>DEFAULT</th>
93 pcg 1.3 <th>DEC-GUARD</th>
94 pcg 1.1 </tr>
95     <tr>
96     <td colspan="4">
97     </td>
98     </tr>
99     <tr>
100     <td>_unknown</td>
101 pcg 1.3 <td>U16</td>
102 pcg 1.1 <td></td>
103 pcg 1.3 <td>
104 pcg 1.4 <b></b> </td>
105 pcg 1.1 </tr>
106     <tr>
107     <td colspan="4">
108     </td>
109     </tr>
110     <tr>
111     <td>length</td>
112 pcg 1.3 <td>U16</td>
113 pcg 1.1 <td></td>
114 pcg 1.3 <td>
115 pcg 1.4 <b></b> </td>
116 pcg 1.1 </tr>
117     <tr>
118     <td colspan="4">
119     The length is the length of the full message including the header.
120     </td>
121     </tr>
122     <tr>
123     <td>type</td>
124 pcg 1.3 <td>U16</td>
125 pcg 1.1 <td></td>
126 pcg 1.3 <td>
127 pcg 1.4 <b></b> </td>
128 pcg 1.1 </tr>
129     <tr>
130     <td colspan="4">
131     If the type is &gt;= 0x4000 this is a message for a specific channel. The channel
132 pcg 1.3 number is always the next U16.
133 pcg 1.1 </td>
134     </tr>
135     </table>
136    
137 pcg 1.3 <h2>Primitive types used in the protocol.</h2>
138    
139 pcg 1.9 <p>Apart from the basic types, I need to define some extra types to
140     deal with fixed-point values (based on integer types) or fixed-length
141     strings (either 7-bit-ascii or more limited (<code>A</code>), or UCS-2
142     based (<code>S</code>)).</p>
143    
144 pcg 1.4 <h4>TYPE username</h4>
145     BASE TYPE: A<br />
146     LENGTH: 12<br />
147     MULTIPLIER: <br />
148 pcg 1.8
149     <p>The basic user or login name, used throughout the protocol
150     as a handle to the user.</p>
151    
152 pcg 1.4 <h4>TYPE roomname</h4>
153     BASE TYPE: S<br />
154     LENGTH: 25<br />
155     MULTIPLIER: <br />
156 pcg 1.3 <!-- argh, how horribly broken -->
157 pcg 1.8
158     <p>Many strings in the protocol are fixed-width for no good reason
159     (maybe this is one reason for using compression in enwer versions, as
160     the packets itself are wasting lots of space.</p>
161    
162 pcg 1.4 <h4>TYPE locale</h4>
163     BASE TYPE: A<br />
164     LENGTH: 5<br />
165     MULTIPLIER: <br />
166 pcg 1.8
167     <p>A kind of locale specifier. It seems the general format seems to be
168     lowercase language, underscore, uppercase location, e.g. en_US. More
169     fancy specifications don't fit.</p>
170    
171 pcg 1.4 <h4>TYPE flag</h4>
172     BASE TYPE: U8<br />
173     LENGTH: <br />
174     MULTIPLIER: 1<br />
175 pcg 1.8
176     <p>Just a simple boolean value. 0 means false, and 1 generally true,
177     but I suggest ccepting != 0 as true.</p>
178    
179 pcg 1.6 <h4>TYPE komi16</h4>
180     BASE TYPE: I16<br />
181     LENGTH: <br />
182     MULTIPLIER: 2<br />
183     <h4>TYPE komi32</h4>
184 pcg 1.4 BASE TYPE: I32<br />
185     LENGTH: <br />
186     MULTIPLIER: 2<br />
187 pcg 1.8
188     <p>Komi values are multiplied by 2 to make them integer in the
189 pcg 1.11 protocol.</p>
190 pcg 1.8
191 pcg 1.4 <h4>TYPE result</h4>
192     BASE TYPE: I32<br />
193     LENGTH: <br />
194     MULTIPLIER: 2<br />
195 pcg 1.8
196 pcg 1.13 <p>The game result is also multiplied by two to give it higher
197     resolution. There are also special values for wins by time etc., either
198     in result or in the score* types, or both :)</p>
199 pcg 1.8
200 pcg 1.11 <h4>TYPE score16</h4>
201     BASE TYPE: I16<br />
202     LENGTH: <br />
203     MULTIPLIER: 4<br />
204     <h4>TYPE score32</h4>
205 pcg 1.4 BASE TYPE: I32<br />
206     LENGTH: <br />
207     MULTIPLIER: 4<br />
208 pcg 1.8
209     <p>A score value (used for displaying the score at the end of a game)
210 pcg 1.13 are multiplied by four for a change (the 0.25 resolution is not
211     used). In game structures it is encoded by dividing by two, though, so
212     watch out!</p>
213 pcg 1.8
214 pcg 1.4 <h4>TYPE time</h4>
215     BASE TYPE: U32<br />
216     LENGTH: <br />
217 pcg 1.6 MULTIPLIER: 1000<br />
218 pcg 1.8
219     <p>Time values are multiplied by 1000, giving them millisecond
220     accuracy.</p>
221 pcg 1.3
222     <h2>Constants, enumeration and set types used in the protocol.</h2>
223 pcg 1.1
224     <p>Baaah... not yet.</p>
225    
226 pcg 1.3 <h2>Structs used in send &amp; receive messages</h2>
227 pcg 1.1
228 pcg 1.3 <h4>STRUCTURE user</h4>
229     CLASS: KGS::User<br />
230 pcg 1.1 <table border="1">
231     <tr>
232     <th>NAME</th>
233     <th>TYPE</th>
234     <th>DEFAULT</th>
235 pcg 1.3 <th>DEC-GUARD</th>
236 pcg 1.1 </tr>
237     <tr>
238     <td colspan="4">
239 pcg 1.9
240     Everywhere a user + flags is required, even used in some places
241     where only a username is required. I see no general rule on when a
242     complete user and when a partial user is required.
243    
244 pcg 1.1 </td>
245     </tr>
246     <tr>
247     <td>name</td>
248 pcg 1.3 <td>username</td>
249 pcg 1.1 <td></td>
250 pcg 1.3 <td>
251 pcg 1.4 <b></b> </td>
252 pcg 1.1 </tr>
253     <tr>
254     <td colspan="4">
255     </td>
256     </tr>
257     <tr>
258     <td>flags</td>
259 pcg 1.3 <td>U32</td>
260 pcg 1.1 <td>1</td>
261 pcg 1.3 <td>
262 pcg 1.4 <b></b> </td>
263 pcg 1.1 </tr>
264     <tr>
265     <td colspan="4">
266     </td>
267     </tr>
268     </table>
269    
270 pcg 1.6 <h4>STRUCTURE rules</h4>
271     CLASS: KGS::Rules<br />
272     <table border="1">
273     <tr>
274     <th>NAME</th>
275     <th>TYPE</th>
276     <th>DEFAULT</th>
277     <th>DEC-GUARD</th>
278     </tr>
279     <tr>
280     <td colspan="4">
281 pcg 1.9
282     This structure is used for challanges as well as in the special
283     TREE "subprotocol". It tightly encodes the game parameters.
284    
285 pcg 1.6 </td>
286     </tr>
287     <tr>
288     <td>ruleset</td>
289     <td>U8</td>
290     <td></td>
291     <td>
292     <b></b> </td>
293     </tr>
294     <tr>
295     <td colspan="4">
296     </td>
297     </tr>
298     <tr>
299     <td>size</td>
300     <td>U8</td>
301     <td></td>
302     <td>
303     <b></b> </td>
304     </tr>
305     <tr>
306     <td colspan="4">
307     </td>
308     </tr>
309     <tr>
310     <td>handicap</td>
311     <td>U8</td>
312     <td></td>
313     <td>
314     <b></b> </td>
315     </tr>
316     <tr>
317     <td colspan="4">
318     </td>
319     </tr>
320     <tr>
321     <td>komi</td>
322     <td>komi16</td>
323     <td></td>
324     <td>
325     <b></b> </td>
326     </tr>
327     <tr>
328     <td colspan="4">
329     </td>
330     </tr>
331     <tr>
332     <td>timesys</td>
333     <td>U8</td>
334     <td></td>
335     <td>
336     <b></b> </td>
337     </tr>
338     <tr>
339     <td colspan="4">
340     </td>
341     </tr>
342     <tr>
343     <td>time</td>
344     <td>U32</td>
345     <td></td>
346     <td>
347     <b></b> </td>
348     </tr>
349     <tr>
350     <td colspan="4">
351     </td>
352     </tr>
353     <tr>
354     <td>interval</td>
355     <td>U32</td>
356     <td></td>
357     <td>
358     <b></b> </td>
359     </tr>
360     <tr>
361     <td colspan="4">
362     byo-yomi time / canadian time
363     </td>
364     </tr>
365     <tr>
366     <td>count</td>
367     <td>U16</td>
368     <td></td>
369     <td>
370     <b></b> </td>
371     </tr>
372     <tr>
373     <td colspan="4">
374     periods / moves
375     </td>
376     </tr>
377     </table>
378    
379 pcg 1.3 <h2>Structs used in send messages</h2>
380 pcg 1.1
381     <h4>MESSAGE login</h4>
382     NUMERIC TYPE (hex): 0000 SEND<table border="1">
383     <tr>
384     <th>NAME</th>
385     <th>TYPE</th>
386     <th>DEFAULT</th>
387 pcg 1.3 <th>DEC-GUARD</th>
388 pcg 1.1 </tr>
389     <tr>
390     <td colspan="4">
391 pcg 1.9
392     Send on the initial login. The password needs to be set when the
393     guest flag is true.
394    
395 pcg 1.1 </td>
396     </tr>
397     <tr>
398     <td>ver_major</td>
399 pcg 1.3 <td>U32</td>
400 pcg 1.1 <td>2</td>
401 pcg 1.3 <td>
402 pcg 1.4 <b></b> </td>
403 pcg 1.1 </tr>
404     <tr>
405     <td colspan="4">
406     </td>
407     </tr>
408     <tr>
409     <td>ver_minor</td>
410 pcg 1.3 <td>U32</td>
411 pcg 1.1 <td>4</td>
412 pcg 1.3 <td>
413 pcg 1.4 <b></b> </td>
414 pcg 1.1 </tr>
415     <tr>
416     <td colspan="4">
417     </td>
418     </tr>
419     <tr>
420     <td>ver_micro</td>
421 pcg 1.3 <td>U32</td>
422 pcg 1.1 <td>67</td>
423 pcg 1.3 <td>
424 pcg 1.4 <b></b> </td>
425 pcg 1.1 </tr>
426     <tr>
427     <td colspan="4">
428     </td>
429     </tr>
430     <tr>
431 pcg 1.3 <td>name</td>
432     <td>username</td>
433 pcg 1.1 <td></td>
434 pcg 1.3 <td>
435 pcg 1.4 <b></b> </td>
436 pcg 1.1 </tr>
437     <tr>
438     <td colspan="4">
439     </td>
440     </tr>
441     <tr>
442     <td>password </td>
443 pcg 1.3 <td>U64</td>
444 pcg 1.1 <td>0</td>
445 pcg 1.3 <td>
446 pcg 1.4 <b></b> </td>
447 pcg 1.1 </tr>
448     <tr>
449     <td colspan="4">
450 pcg 1.3 Password is a number calculated as follows (VERY insecure, basically plaintext!):
451 pcg 1.4 password = 0; for char in characters do password ← password * 1055 + ascii_code (char);
452 pcg 1.1 </td>
453     </tr>
454     <tr>
455 pcg 1.2 <td>guest</td>
456 pcg 1.3 <td>flag</td>
457 pcg 1.1 <td>1</td>
458 pcg 1.3 <td>
459 pcg 1.4 <b></b> </td>
460 pcg 1.1 </tr>
461     <tr>
462     <td colspan="4">
463     </td>
464     </tr>
465     <tr>
466     <td>_unknown3</td>
467 pcg 1.3 <td>U16</td>
468 pcg 1.1 <td>0</td>
469 pcg 1.3 <td>
470 pcg 1.4 <b></b> </td>
471 pcg 1.1 </tr>
472     <tr>
473     <td colspan="4">
474     </td>
475     </tr>
476     <tr>
477 pcg 1.2 <td>locale</td>
478 pcg 1.3 <td>locale</td>
479     <td>"en_US"</td>
480     <td>
481 pcg 1.4 <b></b> </td>
482 pcg 1.1 </tr>
483     <tr>
484     <td colspan="4">
485     </td>
486     </tr>
487     <tr>
488     <td>clientver</td>
489     <td>DATA</td>
490 pcg 1.3 <td>"1.4.1_01:Swing app:Sun Microsystems Inc."</td>
491     <td>
492 pcg 1.4 <b></b> </td>
493 pcg 1.1 </tr>
494     <tr>
495     <td colspan="4">
496 pcg 1.4 The "default" is the java vm version, not exactly he client version. However,
497     you should always send a tetx like "Jonathan's C client bersion 0.6" or somesuch,
498     so the server can, if necessary, block broken clients or client versions.
499 pcg 1.1 </td>
500     </tr>
501     </table>
502    
503     <h4>MESSAGE server_stats</h4>
504 pcg 1.2 NUMERIC TYPE (hex): 0014 SEND<table border="1">
505 pcg 1.1 <tr>
506     <th>NAME</th>
507     <th>TYPE</th>
508     <th>DEFAULT</th>
509 pcg 1.3 <th>DEC-GUARD</th>
510 pcg 1.1 </tr>
511     <tr>
512     <td colspan="4">
513     Request server statistics.
514     </td>
515     </tr>
516     </table>
517    
518     <h4>MESSAGE pic_req</h4>
519 pcg 1.2 NUMERIC TYPE (hex): 0021 SEND<table border="1">
520 pcg 1.1 <tr>
521     <th>NAME</th>
522     <th>TYPE</th>
523     <th>DEFAULT</th>
524 pcg 1.3 <th>DEC-GUARD</th>
525 pcg 1.1 </tr>
526     <tr>
527     <td colspan="4">
528 pcg 1.9 Request a user picture from the server. Results in a userpic-reply
529     or a timeout :/.
530 pcg 1.1 </td>
531     </tr>
532     <tr>
533     <td>name</td>
534 pcg 1.3 <td>username</td>
535 pcg 1.1 <td></td>
536 pcg 1.3 <td>
537 pcg 1.4 <b></b> </td>
538 pcg 1.1 </tr>
539     <tr>
540     <td colspan="4">
541     </td>
542     </tr>
543     </table>
544    
545     <h4>MESSAGE pic_upload</h4>
546 pcg 1.2 NUMERIC TYPE (hex): 0021 SEND<table border="1">
547 pcg 1.1 <tr>
548     <th>NAME</th>
549     <th>TYPE</th>
550     <th>DEFAULT</th>
551 pcg 1.3 <th>DEC-GUARD</th>
552 pcg 1.1 </tr>
553     <tr>
554     <td colspan="4">
555     Same code as pic_req, but with an additional data section that
556 pcg 1.4 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels.
557 pcg 1.1 </td>
558     </tr>
559     <tr>
560     <td>name</td>
561 pcg 1.3 <td>username</td>
562 pcg 1.1 <td></td>
563 pcg 1.3 <td>
564 pcg 1.4 <b></b> </td>
565 pcg 1.1 </tr>
566     <tr>
567     <td colspan="4">
568     </td>
569     </tr>
570     <tr>
571     <td>data</td>
572     <td>DATA</td>
573     <td></td>
574 pcg 1.3 <td>
575 pcg 1.4 <b></b> </td>
576 pcg 1.1 </tr>
577     <tr>
578     <td colspan="4">
579     </td>
580     </tr>
581     </table>
582    
583     <h4>MESSAGE gnotice</h4>
584 pcg 1.2 NUMERIC TYPE (hex): 0100 SEND<table border="1">
585 pcg 1.1 <tr>
586     <th>NAME</th>
587     <th>TYPE</th>
588     <th>DEFAULT</th>
589 pcg 1.3 <th>DEC-GUARD</th>
590 pcg 1.1 </tr>
591     <tr>
592     <td colspan="4">
593     Send a global message. Maybe. Never tried, for obvious reasons :/
594     </td>
595     </tr>
596     <tr>
597     <td>notice</td>
598     <td>STRING</td>
599     <td></td>
600 pcg 1.3 <td>
601 pcg 1.4 <b></b> </td>
602 pcg 1.1 </tr>
603     <tr>
604     <td colspan="4">
605     </td>
606     </tr>
607     </table>
608    
609     <h4>MESSAGE list_rooms</h4>
610 pcg 1.2 NUMERIC TYPE (hex): 0318 SEND<table border="1">
611 pcg 1.1 <tr>
612     <th>NAME</th>
613     <th>TYPE</th>
614     <th>DEFAULT</th>
615 pcg 1.3 <th>DEC-GUARD</th>
616 pcg 1.1 </tr>
617     <tr>
618     <td colspan="4">
619 pcg 1.9 List the rooms in a specific group/category. Results in a upd_rooms message.
620 pcg 1.1 </td>
621     </tr>
622     <tr>
623     <td>group</td>
624 pcg 1.3 <td>U8</td>
625 pcg 1.1 <td></td>
626 pcg 1.3 <td>
627 pcg 1.4 <b></b> </td>
628 pcg 1.1 </tr>
629     <tr>
630     <td colspan="4">
631     </td>
632     </tr>
633     </table>
634    
635     <h4>MESSAGE new_room</h4>
636 pcg 1.2 NUMERIC TYPE (hex): 031a SEND<table border="1">
637 pcg 1.1 <tr>
638     <th>NAME</th>
639     <th>TYPE</th>
640     <th>DEFAULT</th>
641 pcg 1.3 <th>DEC-GUARD</th>
642 pcg 1.1 </tr>
643     <tr>
644     <td colspan="4">
645     Create a new room. Not verified.
646     </td>
647     </tr>
648     <tr>
649     <td>name</td>
650 pcg 1.3 <td>username</td>
651 pcg 1.1 <td></td>
652 pcg 1.3 <td>
653 pcg 1.4 <b></b> </td>
654 pcg 1.1 </tr>
655     <tr>
656     <td colspan="4">
657     </td>
658     </tr>
659     <tr>
660     <td>i1</td>
661 pcg 1.3 <td>U32</td>
662 pcg 1.1 <td>0</td>
663 pcg 1.3 <td>
664 pcg 1.4 <b></b> </td>
665 pcg 1.1 </tr>
666     <tr>
667     <td colspan="4">
668     </td>
669     </tr>
670     <tr>
671     <td>b1</td>
672 pcg 1.3 <td>U8</td>
673 pcg 1.1 <td>0</td>
674 pcg 1.3 <td>
675 pcg 1.4 <b></b> </td>
676 pcg 1.1 </tr>
677     <tr>
678     <td colspan="4">
679     </td>
680     </tr>
681     <tr>
682     <td>b2</td>
683 pcg 1.3 <td>U8</td>
684 pcg 1.1 <td>255</td>
685 pcg 1.3 <td>
686 pcg 1.4 <b></b> </td>
687 pcg 1.1 </tr>
688     <tr>
689     <td colspan="4">
690     </td>
691     </tr>
692     <tr>
693     <td>b3</td>
694 pcg 1.3 <td>U8</td>
695 pcg 1.1 <td>255</td>
696 pcg 1.3 <td>
697 pcg 1.4 <b></b> </td>
698 pcg 1.1 </tr>
699     <tr>
700     <td colspan="4">
701     </td>
702     </tr>
703     <tr>
704     <td>group</td>
705 pcg 1.3 <td>U8</td>
706 pcg 1.1 <td>1</td>
707 pcg 1.3 <td>
708 pcg 1.4 <b></b> </td>
709 pcg 1.1 </tr>
710     <tr>
711     <td colspan="4">
712     </td>
713     </tr>
714     <tr>
715     <td>name</td>
716     <td>STRING</td>
717     <td></td>
718 pcg 1.3 <td>
719 pcg 1.4 <b></b> </td>
720 pcg 1.1 </tr>
721     <tr>
722     <td colspan="4">
723     </td>
724     </tr>
725     <tr>
726     <td>description</td>
727     <td>STRING</td>
728     <td></td>
729 pcg 1.3 <td>
730 pcg 1.4 <b></b> </td>
731 pcg 1.1 </tr>
732     <tr>
733     <td colspan="4">
734     </td>
735     </tr>
736     <tr>
737     <td>flags</td>
738 pcg 1.3 <td>U8</td>
739 pcg 1.1 <td></td>
740 pcg 1.3 <td>
741 pcg 1.4 <b></b> </td>
742 pcg 1.1 </tr>
743     <tr>
744     <td colspan="4">
745     0x10 .. private room etc.. see code
746     </td>
747     </tr>
748     </table>
749    
750     <h4>MESSAGE join_room</h4>
751     NUMERIC TYPE (hex): 4300 SEND<table border="1">
752     <tr>
753     <th>NAME</th>
754     <th>TYPE</th>
755     <th>DEFAULT</th>
756 pcg 1.3 <th>DEC-GUARD</th>
757 pcg 1.1 </tr>
758     <tr>
759     <td colspan="4">
760 pcg 1.9 Joins the given room. join_room messages for yourself
761     and all users in that room, as well as the initial gamelist, are
762     send if the room exists. If not, timeout...
763 pcg 1.1 </td>
764     </tr>
765     <tr>
766     <td>channel</td>
767 pcg 1.3 <td>U16</td>
768 pcg 1.1 <td></td>
769 pcg 1.3 <td>
770 pcg 1.4 <b></b> </td>
771 pcg 1.1 </tr>
772     <tr>
773     <td colspan="4">
774     </td>
775     </tr>
776     <tr>
777     <td>user</td>
778     <td>user</td>
779     <td></td>
780 pcg 1.3 <td>
781 pcg 1.4 <b></b> </td>
782 pcg 1.1 </tr>
783     <tr>
784     <td colspan="4">
785     </td>
786     </tr>
787     </table>
788    
789     <h4>MESSAGE msg_room</h4>
790     NUMERIC TYPE (hex): 4301 SEND<table border="1">
791     <tr>
792     <th>NAME</th>
793     <th>TYPE</th>
794     <th>DEFAULT</th>
795 pcg 1.3 <th>DEC-GUARD</th>
796 pcg 1.1 </tr>
797     <tr>
798     <td colspan="4">
799 pcg 1.9 Send a message to the room.
800 pcg 1.1 </td>
801     </tr>
802     <tr>
803     <td>channel</td>
804 pcg 1.3 <td>U16</td>
805 pcg 1.1 <td></td>
806 pcg 1.3 <td>
807 pcg 1.4 <b></b> </td>
808 pcg 1.1 </tr>
809     <tr>
810     <td colspan="4">
811     </td>
812     </tr>
813     <tr>
814     <td>name</td>
815 pcg 1.3 <td>username</td>
816 pcg 1.1 <td></td>
817 pcg 1.3 <td>
818 pcg 1.4 <b></b> </td>
819 pcg 1.1 </tr>
820     <tr>
821     <td colspan="4">
822 pcg 1.9 Must be the login-name of the user.
823 pcg 1.1 </td>
824     </tr>
825     <tr>
826     <td>message</td>
827     <td>STRING</td>
828     <td></td>
829 pcg 1.3 <td>
830 pcg 1.4 <b></b> </td>
831 pcg 1.1 </tr>
832     <tr>
833     <td colspan="4">
834     </td>
835     </tr>
836     </table>
837    
838     <h4>MESSAGE part_room</h4>
839     NUMERIC TYPE (hex): 4302 SEND<table border="1">
840     <tr>
841     <th>NAME</th>
842     <th>TYPE</th>
843     <th>DEFAULT</th>
844 pcg 1.3 <th>DEC-GUARD</th>
845 pcg 1.1 </tr>
846     <tr>
847     <td colspan="4">
848 pcg 1.9 Remove yourself (or maybe others as admin) from a room.
849 pcg 1.1 </td>
850     </tr>
851     <tr>
852     <td>channel</td>
853 pcg 1.3 <td>U16</td>
854 pcg 1.1 <td></td>
855 pcg 1.3 <td>
856 pcg 1.4 <b></b> </td>
857 pcg 1.1 </tr>
858     <tr>
859     <td colspan="4">
860     </td>
861     </tr>
862     <tr>
863     <td>name</td>
864 pcg 1.3 <td>username</td>
865 pcg 1.1 <td></td>
866 pcg 1.3 <td>
867 pcg 1.4 <b></b> </td>
868 pcg 1.1 </tr>
869     <tr>
870     <td colspan="4">
871     </td>
872     </tr>
873     </table>
874    
875     <h4>MESSAGE new_game</h4>
876     NUMERIC TYPE (hex): 4305 SEND<table border="1">
877     <tr>
878     <th>NAME</th>
879     <th>TYPE</th>
880     <th>DEFAULT</th>
881 pcg 1.3 <th>DEC-GUARD</th>
882 pcg 1.1 </tr>
883     <tr>
884     <td colspan="4">
885 pcg 1.9 Unclear.
886 pcg 1.1 </td>
887     </tr>
888     <tr>
889     <td>channel</td>
890 pcg 1.3 <td>U16</td>
891 pcg 1.1 <td></td>
892 pcg 1.3 <td>
893 pcg 1.4 <b></b> </td>
894 pcg 1.1 </tr>
895     <tr>
896     <td colspan="4">
897     </td>
898     </tr>
899     <tr>
900     <td>id</td>
901 pcg 1.3 <td>U16</td>
902 pcg 1.1 <td></td>
903 pcg 1.3 <td>
904 pcg 1.4 <b></b> </td>
905 pcg 1.1 </tr>
906     <tr>
907     <td colspan="4">
908     </td>
909     </tr>
910     <tr>
911     <td>gametype</td>
912 pcg 1.3 <td>U32</td>
913 pcg 1.1 <td></td>
914 pcg 1.3 <td>
915 pcg 1.4 <b></b> </td>
916 pcg 1.1 </tr>
917     <tr>
918     <td colspan="4">
919     </td>
920     </tr>
921     <tr>
922     <td>rules</td>
923     <td>rules</td>
924     <td></td>
925 pcg 1.3 <td>
926 pcg 1.4 <b></b> </td>
927 pcg 1.1 </tr>
928     <tr>
929     <td colspan="4">
930     </td>
931     </tr>
932     <tr>
933     <td>notes</td>
934     <td>STRING</td>
935     <td></td>
936 pcg 1.3 <td>
937 pcg 1.4 <b></b> </td>
938 pcg 1.1 </tr>
939     <tr>
940     <td colspan="4">
941     </td>
942     </tr>
943     </table>
944    
945     <h4>MESSAGE req_games</h4>
946     NUMERIC TYPE (hex): 430b SEND<table border="1">
947     <tr>
948     <th>NAME</th>
949     <th>TYPE</th>
950     <th>DEFAULT</th>
951 pcg 1.3 <th>DEC-GUARD</th>
952 pcg 1.1 </tr>
953     <tr>
954     <td colspan="4">
955 pcg 1.9 Request to update room game list (send this once per minute to get
956     updated). Results in upd_games messages.
957 pcg 1.1 </td>
958     </tr>
959     <tr>
960     <td>channel</td>
961 pcg 1.3 <td>U16</td>
962 pcg 1.1 <td></td>
963 pcg 1.3 <td>
964 pcg 1.4 <b></b> </td>
965 pcg 1.1 </tr>
966     <tr>
967     <td colspan="4">
968     </td>
969     </tr>
970     </table>
971    
972     <h4>MESSAGE req_desc</h4>
973     NUMERIC TYPE (hex): 4319 SEND<table border="1">
974     <tr>
975     <th>NAME</th>
976     <th>TYPE</th>
977     <th>DEFAULT</th>
978 pcg 1.3 <th>DEC-GUARD</th>
979 pcg 1.1 </tr>
980     <tr>
981     <td colspan="4">
982     Request room description.
983     </td>
984     </tr>
985     <tr>
986     <td>channel</td>
987 pcg 1.3 <td>U16</td>
988 pcg 1.1 <td></td>
989 pcg 1.3 <td>
990 pcg 1.4 <b></b> </td>
991 pcg 1.1 </tr>
992     <tr>
993     <td colspan="4">
994     </td>
995     </tr>
996     </table>
997    
998     <h4>MESSAGE send_chal</h4>
999     NUMERIC TYPE (hex): 4400 SEND<table border="1">
1000     <tr>
1001     <th>NAME</th>
1002     <th>TYPE</th>
1003     <th>DEFAULT</th>
1004 pcg 1.3 <th>DEC-GUARD</th>
1005 pcg 1.1 </tr>
1006     <tr>
1007     <td colspan="4">
1008 pcg 1.9 Unclear.
1009 pcg 1.1 </td>
1010     </tr>
1011     <tr>
1012     <td>channel</td>
1013 pcg 1.3 <td>U16</td>
1014 pcg 1.1 <td></td>
1015 pcg 1.3 <td>
1016 pcg 1.4 <b></b> </td>
1017 pcg 1.1 </tr>
1018     <tr>
1019     <td colspan="4">
1020     </td>
1021     </tr>
1022     <tr>
1023     <td>black</td>
1024 pcg 1.3 <td>username</td>
1025 pcg 1.1 <td></td>
1026 pcg 1.3 <td>
1027 pcg 1.4 <b></b> </td>
1028 pcg 1.1 </tr>
1029     <tr>
1030     <td colspan="4">
1031     </td>
1032     </tr>
1033     <tr>
1034     <td>white</td>
1035 pcg 1.3 <td>username</td>
1036 pcg 1.1 <td></td>
1037 pcg 1.3 <td>
1038 pcg 1.4 <b></b> </td>
1039 pcg 1.1 </tr>
1040     <tr>
1041     <td colspan="4">
1042     More following... TREE or challenge.
1043     </td>
1044     </tr>
1045     </table>
1046    
1047     <h4>MESSAGE join_game</h4>
1048     NUMERIC TYPE (hex): 4403 SEND<table border="1">
1049     <tr>
1050     <th>NAME</th>
1051     <th>TYPE</th>
1052     <th>DEFAULT</th>
1053 pcg 1.3 <th>DEC-GUARD</th>
1054 pcg 1.1 </tr>
1055     <tr>
1056     <td colspan="4">
1057 pcg 1.9 Join a game. See join_room.
1058 pcg 1.1 </td>
1059     </tr>
1060     <tr>
1061 pcg 1.5 <td>channel</td>
1062     <td>U16</td>
1063 pcg 1.1 <td></td>
1064 pcg 1.3 <td>
1065 pcg 1.4 <b></b> </td>
1066 pcg 1.1 </tr>
1067     <tr>
1068     <td colspan="4">
1069     </td>
1070     </tr>
1071     <tr>
1072 pcg 1.5 <td>user</td>
1073     <td>user</td>
1074 pcg 1.1 <td></td>
1075 pcg 1.3 <td>
1076 pcg 1.4 <b></b> </td>
1077 pcg 1.1 </tr>
1078     <tr>
1079     <td colspan="4">
1080     </td>
1081     </tr>
1082     </table>
1083    
1084     <h4>MESSAGE part_game</h4>
1085     NUMERIC TYPE (hex): 4404 SEND<table border="1">
1086     <tr>
1087     <th>NAME</th>
1088     <th>TYPE</th>
1089     <th>DEFAULT</th>
1090 pcg 1.3 <th>DEC-GUARD</th>
1091 pcg 1.1 </tr>
1092     <tr>
1093     <td colspan="4">
1094 pcg 1.9 Leave (or kick as admin?) a certain user from a game.
1095 pcg 1.1 </td>
1096     </tr>
1097     <tr>
1098     <td>channel</td>
1099 pcg 1.3 <td>U16</td>
1100 pcg 1.1 <td></td>
1101 pcg 1.3 <td>
1102 pcg 1.4 <b></b> </td>
1103 pcg 1.1 </tr>
1104     <tr>
1105     <td colspan="4">
1106     </td>
1107     </tr>
1108     <tr>
1109     <td>name</td>
1110 pcg 1.3 <td>username</td>
1111 pcg 1.1 <td></td>
1112 pcg 1.3 <td>
1113 pcg 1.4 <b></b> </td>
1114 pcg 1.1 </tr>
1115     <tr>
1116     <td colspan="4">
1117     </td>
1118     </tr>
1119     </table>
1120    
1121     <h4>MESSAGE set_tree</h4>
1122     NUMERIC TYPE (hex): 4405 SEND<table border="1">
1123     <tr>
1124     <th>NAME</th>
1125     <th>TYPE</th>
1126     <th>DEFAULT</th>
1127 pcg 1.3 <th>DEC-GUARD</th>
1128 pcg 1.1 </tr>
1129     <tr>
1130     <td colspan="4">
1131 pcg 1.9 Upload a partial game tree to the server. This is used
1132     to send moves and even in-game comments to the server. For the comments,
1133     the server prepends the username and rank.
1134 pcg 1.1 </td>
1135     </tr>
1136     <tr>
1137     <td>channel</td>
1138 pcg 1.3 <td>U16</td>
1139 pcg 1.1 <td></td>
1140 pcg 1.3 <td>
1141 pcg 1.4 <b></b> </td>
1142 pcg 1.1 </tr>
1143     <tr>
1144     <td colspan="4">
1145     </td>
1146     </tr>
1147     <tr>
1148     <td>tree</td>
1149     <td>TREE</td>
1150     <td></td>
1151 pcg 1.3 <td>
1152 pcg 1.4 <b></b> </td>
1153 pcg 1.1 </tr>
1154     <tr>
1155     <td colspan="4">
1156     </td>
1157     </tr>
1158     </table>
1159    
1160     <h4>MESSAGE get_tree</h4>
1161     NUMERIC TYPE (hex): 4408 SEND<table border="1">
1162     <tr>
1163     <th>NAME</th>
1164     <th>TYPE</th>
1165     <th>DEFAULT</th>
1166 pcg 1.3 <th>DEC-GUARD</th>
1167 pcg 1.1 </tr>
1168     <tr>
1169     <td colspan="4">
1170 pcg 1.9 Request the game tree starting at a given node. This is used
1171     when the server only sends a partial tree (with end code "more").
1172 pcg 1.1 </td>
1173     </tr>
1174     <tr>
1175     <td>channel</td>
1176 pcg 1.3 <td>U16</td>
1177 pcg 1.1 <td></td>
1178 pcg 1.3 <td>
1179 pcg 1.4 <b></b> </td>
1180 pcg 1.1 </tr>
1181     <tr>
1182     <td colspan="4">
1183     </td>
1184     </tr>
1185     <tr>
1186     <td>node</td>
1187 pcg 1.3 <td>U32</td>
1188 pcg 1.1 <td></td>
1189 pcg 1.3 <td>
1190 pcg 1.4 <b></b> </td>
1191 pcg 1.1 </tr>
1192     <tr>
1193     <td colspan="4">
1194     </td>
1195     </tr>
1196     </table>
1197    
1198     <h4>MESSAGE claim_win</h4>
1199     NUMERIC TYPE (hex): 440c SEND<table border="1">
1200     <tr>
1201     <th>NAME</th>
1202     <th>TYPE</th>
1203     <th>DEFAULT</th>
1204 pcg 1.3 <th>DEC-GUARD</th>
1205 pcg 1.1 </tr>
1206     <tr>
1207     <td colspan="4">
1208 pcg 1.9 Unclear.
1209 pcg 1.1 </td>
1210     </tr>
1211     <tr>
1212     <td>channel</td>
1213 pcg 1.3 <td>U16</td>
1214 pcg 1.1 <td></td>
1215 pcg 1.3 <td>
1216 pcg 1.4 <b></b> </td>
1217 pcg 1.1 </tr>
1218     <tr>
1219     <td colspan="4">
1220     </td>
1221     </tr>
1222     <tr>
1223     <td>_byte</td>
1224 pcg 1.3 <td>U8 </td>
1225 pcg 1.1 <td></td>
1226 pcg 1.3 <td>
1227 pcg 1.4 <b></b> </td>
1228 pcg 1.1 </tr>
1229     <tr>
1230     <td colspan="4">
1231     Player colour maybe? Unclear.
1232     </td>
1233     </tr>
1234     </table>
1235    
1236     <h4>MESSAGE add_time</h4>
1237     NUMERIC TYPE (hex): 440d SEND<table border="1">
1238     <tr>
1239     <th>NAME</th>
1240     <th>TYPE</th>
1241     <th>DEFAULT</th>
1242 pcg 1.3 <th>DEC-GUARD</th>
1243 pcg 1.1 </tr>
1244     <tr>
1245     <td colspan="4">
1246 pcg 1.9 Not checked.
1247    
1248 pcg 1.1 </td>
1249     </tr>
1250     <tr>
1251     <td>channel</td>
1252 pcg 1.3 <td>U16</td>
1253 pcg 1.1 <td></td>
1254 pcg 1.3 <td>
1255 pcg 1.4 <b></b> </td>
1256 pcg 1.1 </tr>
1257     <tr>
1258     <td colspan="4">
1259     </td>
1260     </tr>
1261     <tr>
1262     <td>time</td>
1263 pcg 1.3 <td>U32</td>
1264 pcg 1.1 <td></td>
1265 pcg 1.3 <td>
1266 pcg 1.4 <b></b> </td>
1267 pcg 1.1 </tr>
1268     <tr>
1269     <td colspan="4">
1270     </td>
1271     </tr>
1272     <tr>
1273     <td>player</td>
1274 pcg 1.3 <td>U8</td>
1275 pcg 1.1 <td></td>
1276 pcg 1.3 <td>
1277 pcg 1.4 <b></b> </td>
1278 pcg 1.1 </tr>
1279     <tr>
1280     <td colspan="4">
1281     </td>
1282     </tr>
1283     </table>
1284    
1285     <h4>MESSAGE grant_undo</h4>
1286     NUMERIC TYPE (hex): 440f SEND<table border="1">
1287     <tr>
1288     <th>NAME</th>
1289     <th>TYPE</th>
1290     <th>DEFAULT</th>
1291 pcg 1.3 <th>DEC-GUARD</th>
1292 pcg 1.1 </tr>
1293     <tr>
1294     <td colspan="4">
1295 pcg 1.9 Can be send after a req_undo message was received to grant the undo.
1296 pcg 1.1 </td>
1297     </tr>
1298     <tr>
1299     <td>channel</td>
1300 pcg 1.3 <td>U16</td>
1301 pcg 1.1 <td></td>
1302 pcg 1.3 <td>
1303 pcg 1.4 <b></b> </td>
1304 pcg 1.1 </tr>
1305     <tr>
1306     <td colspan="4">
1307     </td>
1308     </tr>
1309     </table>
1310    
1311     <h4>MESSAGE resign_game</h4>
1312     NUMERIC TYPE (hex): 4410 SEND<table border="1">
1313     <tr>
1314     <th>NAME</th>
1315     <th>TYPE</th>
1316     <th>DEFAULT</th>
1317 pcg 1.3 <th>DEC-GUARD</th>
1318 pcg 1.1 </tr>
1319     <tr>
1320     <td colspan="4">
1321 pcg 1.9 Resign the game.
1322 pcg 1.1 </td>
1323     </tr>
1324     <tr>
1325     <td>channel</td>
1326 pcg 1.3 <td>U16</td>
1327 pcg 1.1 <td></td>
1328 pcg 1.3 <td>
1329 pcg 1.4 <b></b> </td>
1330 pcg 1.1 </tr>
1331     <tr>
1332     <td colspan="4">
1333     </td>
1334     </tr>
1335     <tr>
1336     <td>player</td>
1337 pcg 1.3 <td>U8</td>
1338 pcg 1.1 <td></td>
1339 pcg 1.3 <td>
1340 pcg 1.4 <b></b> </td>
1341 pcg 1.1 </tr>
1342     <tr>
1343     <td colspan="4">
1344     </td>
1345     </tr>
1346     </table>
1347    
1348     <h4>MESSAGE set_teacher</h4>
1349     NUMERIC TYPE (hex): 441a SEND<table border="1">
1350     <tr>
1351     <th>NAME</th>
1352     <th>TYPE</th>
1353     <th>DEFAULT</th>
1354 pcg 1.3 <th>DEC-GUARD</th>
1355 pcg 1.1 </tr>
1356     <tr>
1357     <td colspan="4">
1358 pcg 1.9 Change the teacher to somebody else (or possibly yourself == take it).
1359 pcg 1.1 </td>
1360     </tr>
1361     <tr>
1362     <td>channel</td>
1363 pcg 1.3 <td>U16</td>
1364 pcg 1.1 <td></td>
1365 pcg 1.3 <td>
1366 pcg 1.4 <b></b> </td>
1367 pcg 1.1 </tr>
1368     <tr>
1369     <td colspan="4">
1370     </td>
1371     </tr>
1372     <tr>
1373     <td>name</td>
1374 pcg 1.3 <td>username</td>
1375 pcg 1.1 <td></td>
1376 pcg 1.3 <td>
1377 pcg 1.4 <b></b> </td>
1378 pcg 1.1 </tr>
1379     <tr>
1380     <td colspan="4">
1381     </td>
1382     </tr>
1383     </table>
1384    
1385     <h4>MESSAGE add_user</h4>
1386     NUMERIC TYPE (hex): 4422 SEND<table border="1">
1387     <tr>
1388     <th>NAME</th>
1389     <th>TYPE</th>
1390     <th>DEFAULT</th>
1391 pcg 1.3 <th>DEC-GUARD</th>
1392 pcg 1.1 </tr>
1393     <tr>
1394     <td colspan="4">
1395 pcg 1.9 Unclear. Maybe allow users to talk? No idea, really.
1396    
1397 pcg 1.1 </td>
1398     </tr>
1399     <tr>
1400     <td>channel</td>
1401 pcg 1.3 <td>U16</td>
1402 pcg 1.1 <td></td>
1403 pcg 1.3 <td>
1404 pcg 1.4 <b></b> </td>
1405 pcg 1.1 </tr>
1406     <tr>
1407     <td colspan="4">
1408     </td>
1409     </tr>
1410     <tr>
1411     <td>othername</td>
1412 pcg 1.3 <td>username</td>
1413 pcg 1.1 <td></td>
1414 pcg 1.3 <td>
1415 pcg 1.4 <b></b> </td>
1416 pcg 1.1 </tr>
1417     <tr>
1418     <td colspan="4">
1419     </td>
1420     </tr>
1421     <tr>
1422     <td>name</td>
1423 pcg 1.3 <td>username</td>
1424 pcg 1.1 <td></td>
1425 pcg 1.3 <td>
1426 pcg 1.4 <b></b> </td>
1427 pcg 1.1 </tr>
1428     <tr>
1429     <td colspan="4">; # gives user access to the game (to what? ;)
1430     </td>
1431     </tr>
1432     </table>
1433    
1434     <h4>MESSAGE set_privacy</h4>
1435     NUMERIC TYPE (hex): 4423 SEND<table border="1">
1436     <tr>
1437     <th>NAME</th>
1438     <th>TYPE</th>
1439     <th>DEFAULT</th>
1440 pcg 1.3 <th>DEC-GUARD</th>
1441 pcg 1.1 </tr>
1442     <tr>
1443     <td colspan="4">
1444 pcg 1.9 Probably sets the "quiet" flag. Not checked.
1445 pcg 1.1 </td>
1446     </tr>
1447     <tr>
1448     <td>channel</td>
1449 pcg 1.3 <td>U16</td>
1450 pcg 1.1 <td></td>
1451 pcg 1.3 <td>
1452 pcg 1.4 <b></b> </td>
1453 pcg 1.1 </tr>
1454     <tr>
1455     <td colspan="4">
1456     </td>
1457     </tr>
1458     <tr>
1459     <td>private</td>
1460 pcg 1.3 <td>U8</td>
1461 pcg 1.1 <td></td>
1462 pcg 1.3 <td>
1463 pcg 1.4 <b></b> </td>
1464 pcg 1.1 </tr>
1465     <tr>
1466     <td colspan="4">
1467     </td>
1468     </tr>
1469     </table>
1470    
1471     <h4>MESSAGE reject_chal</h4>
1472     NUMERIC TYPE (hex): 4429 SEND<table border="1">
1473     <tr>
1474     <th>NAME</th>
1475     <th>TYPE</th>
1476     <th>DEFAULT</th>
1477 pcg 1.3 <th>DEC-GUARD</th>
1478 pcg 1.1 </tr>
1479     <tr>
1480     <td colspan="4">
1481 pcg 1.9 Reject a challenge from a given user. Not checked.
1482    
1483 pcg 1.1 </td>
1484     </tr>
1485     <tr>
1486     <td>channel</td>
1487 pcg 1.3 <td>U16</td>
1488 pcg 1.1 <td></td>
1489 pcg 1.3 <td>
1490 pcg 1.4 <b></b> </td>
1491 pcg 1.1 </tr>
1492     <tr>
1493     <td colspan="4">
1494     </td>
1495     </tr>
1496     <tr>
1497     <td>name</td>
1498 pcg 1.3 <td>username</td>
1499 pcg 1.1 <td></td>
1500 pcg 1.3 <td>
1501 pcg 1.4 <b></b> </td>
1502 pcg 1.1 </tr>
1503     <tr>
1504     <td colspan="4">
1505     </td>
1506     </tr>
1507     </table>
1508    
1509     <h4>MESSAGE req_result</h4>
1510     NUMERIC TYPE (hex): 4433 SEND<table border="1">
1511     <tr>
1512     <th>NAME</th>
1513     <th>TYPE</th>
1514     <th>DEFAULT</th>
1515 pcg 1.3 <th>DEC-GUARD</th>
1516 pcg 1.1 </tr>
1517     <tr>
1518     <td colspan="4">
1519 pcg 1.9 I forgot.
1520    
1521 pcg 1.1 </td>
1522     </tr>
1523     <tr>
1524     <td>channel</td>
1525 pcg 1.3 <td>U16</td>
1526 pcg 1.1 <td></td>
1527 pcg 1.3 <td>
1528 pcg 1.4 <b></b> </td>
1529 pcg 1.1 </tr>
1530     <tr>
1531     <td colspan="4">
1532     </td>
1533     </tr>
1534     </table>
1535    
1536 pcg 1.3 <h2>Structs mainly used in receive messages</h2>
1537 pcg 1.1
1538 pcg 1.3 <h4>STRUCTURE challenge_defaults</h4>
1539 pcg 1.1 <table border="1">
1540     <tr>
1541     <th>NAME</th>
1542     <th>TYPE</th>
1543     <th>DEFAULT</th>
1544 pcg 1.3 <th>DEC-GUARD</th>
1545 pcg 1.1 </tr>
1546     <tr>
1547     <td colspan="4">
1548 pcg 1.9 Send soon after log-in to set the defaults for game challenges.
1549 pcg 1.1 </td>
1550     </tr>
1551     <tr>
1552     <td>gametype</td>
1553 pcg 1.3 <td>U32</td>
1554 pcg 1.1 <td></td>
1555 pcg 1.3 <td>
1556 pcg 1.4 <b></b> </td>
1557 pcg 1.1 </tr>
1558     <tr>
1559     <td colspan="4">
1560     </td>
1561     </tr>
1562     <tr>
1563     <td>size</td>
1564 pcg 1.3 <td>U32</td>
1565 pcg 1.1 <td></td>
1566 pcg 1.3 <td>
1567 pcg 1.4 <b></b> </td>
1568 pcg 1.1 </tr>
1569     <tr>
1570     <td colspan="4">
1571     </td>
1572     </tr>
1573     <tr>
1574     <td>timesys</td>
1575 pcg 1.3 <td>U32</td>
1576 pcg 1.1 <td></td>
1577 pcg 1.3 <td>
1578 pcg 1.4 <b></b> </td>
1579 pcg 1.1 </tr>
1580     <tr>
1581     <td colspan="4">
1582     </td>
1583     </tr>
1584     <tr>
1585     <td>time</td>
1586 pcg 1.3 <td>U32</td>
1587 pcg 1.1 <td></td>
1588 pcg 1.3 <td>
1589 pcg 1.4 <b></b> </td>
1590 pcg 1.1 </tr>
1591     <tr>
1592     <td colspan="4">
1593     </td>
1594     </tr>
1595     <tr>
1596     <td>byo_time</td>
1597 pcg 1.3 <td>U32</td>
1598 pcg 1.1 <td></td>
1599 pcg 1.3 <td>
1600 pcg 1.4 <b></b> </td>
1601 pcg 1.1 </tr>
1602     <tr>
1603     <td colspan="4">
1604     </td>
1605     </tr>
1606     <tr>
1607     <td>byo_periods</td>
1608 pcg 1.3 <td>U32</td>
1609 pcg 1.1 <td></td>
1610 pcg 1.3 <td>
1611 pcg 1.4 <b></b> </td>
1612 pcg 1.1 </tr>
1613     <tr>
1614     <td colspan="4">
1615     </td>
1616     </tr>
1617     <tr>
1618     <td>can_time</td>
1619 pcg 1.3 <td>U32</td>
1620 pcg 1.1 <td></td>
1621 pcg 1.3 <td>
1622 pcg 1.4 <b></b> </td>
1623 pcg 1.1 </tr>
1624     <tr>
1625     <td colspan="4">
1626     </td>
1627     </tr>
1628     <tr>
1629     <td>can_stones</td>
1630 pcg 1.3 <td>U32</td>
1631 pcg 1.1 <td></td>
1632 pcg 1.3 <td>
1633 pcg 1.4 <b></b> </td>
1634 pcg 1.1 </tr>
1635     <tr>
1636 pcg 1.3 <td colspan="4">
1637 pcg 1.1 </td>
1638     </tr>
1639     </table>
1640    
1641 pcg 1.3 <h4>STRUCTURE challenge</h4>
1642     CLASS: KGS::Challenge<br />
1643 pcg 1.1 <table border="1">
1644     <tr>
1645     <th>NAME</th>
1646     <th>TYPE</th>
1647     <th>DEFAULT</th>
1648 pcg 1.3 <th>DEC-GUARD</th>
1649 pcg 1.1 </tr>
1650     <tr>
1651     <td colspan="4">
1652 pcg 1.9 A challenge.
1653    
1654 pcg 1.1 </td>
1655     </tr>
1656     <tr>
1657     <td>user1</td>
1658     <td>user</td>
1659     <td></td>
1660 pcg 1.3 <td>
1661 pcg 1.4 <b></b> </td>
1662 pcg 1.1 </tr>
1663     <tr>
1664     <td colspan="4">
1665     </td>
1666     </tr>
1667     <tr>
1668     <td>user2</td>
1669     <td>user</td>
1670     <td></td>
1671 pcg 1.3 <td>
1672 pcg 1.4 <b></b> </td>
1673 pcg 1.1 </tr>
1674     <tr>
1675     <td colspan="4">
1676     </td>
1677     </tr>
1678     <tr>
1679     <td>gametype</td>
1680 pcg 1.3 <td>U32</td>
1681 pcg 1.1 <td></td>
1682 pcg 1.3 <td>
1683 pcg 1.4 <b></b> </td>
1684 pcg 1.1 </tr>
1685     <tr>
1686     <td colspan="4">
1687     </td>
1688     </tr>
1689     <tr>
1690     <td>rules</td>
1691     <td>rules</td>
1692     <td></td>
1693 pcg 1.3 <td>
1694 pcg 1.4 <b></b> </td>
1695 pcg 1.1 </tr>
1696     <tr>
1697     <td colspan="4">
1698     Maybe the rules" are in TREE format. I forgot.
1699     </td>
1700     </tr>
1701     </table>
1702    
1703 pcg 1.3 <h4>STRUCTURE game</h4>
1704     CLASS: KGS::Game<br />
1705 pcg 1.1 <table border="1">
1706     <tr>
1707     <th>NAME</th>
1708     <th>TYPE</th>
1709     <th>DEFAULT</th>
1710 pcg 1.3 <th>DEC-GUARD</th>
1711 pcg 1.1 </tr>
1712     <tr>
1713     <td colspan="4">
1714 pcg 1.9 Basic information about a game. Used in rooms for the gamelist and
1715     in games to detect when a game is saved, changed type (e.g. R =&gt; D)
1716     etc.
1717    
1718 pcg 1.1 </td>
1719     </tr>
1720     <tr>
1721     <td>channel</td>
1722 pcg 1.3 <td>U16</td>
1723 pcg 1.1 <td></td>
1724 pcg 1.3 <td>
1725 pcg 1.4 <b></b> </td>
1726 pcg 1.1 </tr>
1727     <tr>
1728     <td colspan="4">
1729     </td>
1730     </tr>
1731     <tr>
1732 pcg 1.3 <td>type</td>
1733     <td>U32</td>
1734 pcg 1.1 <td></td>
1735 pcg 1.3 <td>
1736 pcg 1.4 <b></b> </td>
1737 pcg 1.1 </tr>
1738     <tr>
1739     <td colspan="4">
1740     </td>
1741     </tr>
1742     <tr>
1743     <td>user1</td>
1744     <td>user</td>
1745     <td></td>
1746 pcg 1.3 <td>
1747 pcg 1.4 <b></b> </td>
1748 pcg 1.1 </tr>
1749     <tr>
1750     <td colspan="4">
1751     White
1752     </td>
1753     </tr>
1754     <tr>
1755     <td>user2</td>
1756     <td>user</td>
1757     <td></td>
1758 pcg 1.3 <td>
1759 pcg 1.4 <b></b> </td>
1760 pcg 1.1 </tr>
1761     <tr>
1762     <td colspan="4">
1763     Black
1764     </td>
1765     </tr>
1766     <tr>
1767     <td>user3</td>
1768     <td>user</td>
1769     <td></td>
1770 pcg 1.3 <td>
1771 pcg 1.4 <b></b> </td>
1772 pcg 1.1 </tr>
1773     <tr>
1774     <td colspan="4">
1775     Owner
1776     </td>
1777     </tr>
1778     <tr>
1779     <td>size</td>
1780 pcg 1.3 <td>U32</td>
1781 pcg 1.1 <td></td>
1782 pcg 1.3 <td>
1783 pcg 1.4 <b></b> </td>
1784 pcg 1.1 </tr>
1785     <tr>
1786     <td colspan="4">
1787     </td>
1788     </tr>
1789     <tr>
1790     <td>handicap</td>
1791     <td>I32</td>
1792     <td></td>
1793 pcg 1.3 <td>
1794 pcg 1.4 <b></b> </td>
1795 pcg 1.1 </tr>
1796     <tr>
1797     <td colspan="4">
1798     &lt; 0 not fully setup
1799     </td>
1800     </tr>
1801     <tr>
1802     <td>komi</td>
1803 pcg 1.6 <td>komi32</td>
1804 pcg 1.1 <td></td>
1805 pcg 1.3 <td>
1806 pcg 1.4 <b></b> </td>
1807 pcg 1.1 </tr>
1808     <tr>
1809     <td colspan="4">
1810     </td>
1811     </tr>
1812     <tr>
1813     <td>moves</td>
1814 pcg 1.13 <td>I16</td>
1815 pcg 1.1 <td></td>
1816 pcg 1.3 <td>
1817 pcg 1.4 <b></b> </td>
1818 pcg 1.1 </tr>
1819     <tr>
1820     <td colspan="4">
1821 pcg 1.12 This field reflects either the movenum or the score, sorry, not even guards help, as
1822 pcg 1.13 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
1823     score (NOT score16!).
1824 pcg 1.1 </td>
1825     </tr>
1826     <tr>
1827     <td>flags</td>
1828 pcg 1.3 <td>U16</td>
1829 pcg 1.1 <td></td>
1830 pcg 1.3 <td>
1831 pcg 1.4 <b></b> </td>
1832 pcg 1.1 </tr>
1833     <tr>
1834     <td colspan="4">
1835     </td>
1836     </tr>
1837     <tr>
1838     <td>observers</td>
1839 pcg 1.3 <td>U32</td>
1840 pcg 1.1 <td></td>
1841 pcg 1.3 <td>
1842 pcg 1.4 <b></b> </td>
1843 pcg 1.1 </tr>
1844     <tr>
1845     <td colspan="4">
1846     </td>
1847     </tr>
1848     <tr>
1849     <td>saved</td>
1850 pcg 1.3 <td>flag</td>
1851 pcg 1.1 <td></td>
1852 pcg 1.3 <td>
1853 pcg 1.4 <b></b> </td>
1854 pcg 1.1 </tr>
1855     <tr>
1856     <td colspan="4">
1857     </td>
1858     </tr>
1859     <tr>
1860     <td>notes</td>
1861     <td>STRING</td>
1862     <td></td>
1863 pcg 1.3 <td>
1864 pcg 1.4 <b>handicap</b> &lt; 0</td>
1865 pcg 1.1 </tr>
1866     <tr>
1867     <td colspan="4">
1868     </td>
1869     </tr>
1870     </table>
1871    
1872 pcg 1.3 <h4>STRUCTURE room_obs</h4>
1873 pcg 1.1 <table border="1">
1874     <tr>
1875     <th>NAME</th>
1876     <th>TYPE</th>
1877     <th>DEFAULT</th>
1878 pcg 1.3 <th>DEC-GUARD</th>
1879 pcg 1.1 </tr>
1880     <tr>
1881     <td colspan="4">
1882 pcg 1.9 Obsolete.
1883    
1884 pcg 1.1 </td>
1885     </tr>
1886     <tr>
1887     <td>name</td>
1888 pcg 1.3 <td>roomname</td>
1889 pcg 1.1 <td></td>
1890 pcg 1.3 <td>
1891 pcg 1.4 <b></b> </td>
1892 pcg 1.1 </tr>
1893     <tr>
1894     <td colspan="4">
1895     </td>
1896     </tr>
1897     <tr>
1898     <td>channel</td>
1899 pcg 1.3 <td>U16</td>
1900 pcg 1.1 <td></td>
1901 pcg 1.3 <td>
1902 pcg 1.4 <b></b> </td>
1903 pcg 1.1 </tr>
1904     <tr>
1905     <td colspan="4">
1906     </td>
1907     </tr>
1908     <tr>
1909     <td>flags</td>
1910 pcg 1.3 <td>U32</td>
1911 pcg 1.1 <td></td>
1912 pcg 1.3 <td>
1913 pcg 1.4 <b></b> </td>
1914 pcg 1.1 </tr>
1915     <tr>
1916     <td colspan="4">
1917     </td>
1918     </tr>
1919     <tr>
1920     <td>users</td>
1921 pcg 1.3 <td>U32</td>
1922 pcg 1.1 <td></td>
1923 pcg 1.3 <td>
1924 pcg 1.4 <b></b> </td>
1925 pcg 1.1 </tr>
1926     <tr>
1927 pcg 1.4 <td colspan="4">
1928 pcg 1.1 </td>
1929     </tr>
1930     </table>
1931    
1932 pcg 1.3 <h4>STRUCTURE room</h4>
1933     CLASS: KGS::Room<br />
1934 pcg 1.1 <table border="1">
1935     <tr>
1936     <th>NAME</th>
1937     <th>TYPE</th>
1938     <th>DEFAULT</th>
1939 pcg 1.3 <th>DEC-GUARD</th>
1940 pcg 1.1 </tr>
1941     <tr>
1942     <td colspan="4">
1943     </td>
1944     </tr>
1945     <tr>
1946     <td>channel</td>
1947 pcg 1.3 <td>U16</td>
1948 pcg 1.1 <td></td>
1949 pcg 1.3 <td>
1950 pcg 1.4 <b></b> </td>
1951 pcg 1.1 </tr>
1952     <tr>
1953     <td colspan="4">
1954     </td>
1955     </tr>
1956     <tr>
1957     <td>flags</td>
1958 pcg 1.3 <td>U8</td>
1959 pcg 1.1 <td></td>
1960 pcg 1.3 <td>
1961 pcg 1.4 <b></b> </td>
1962 pcg 1.1 </tr>
1963     <tr>
1964     <td colspan="4">
1965     </td>
1966     </tr>
1967     <tr>
1968     <td>group</td>
1969 pcg 1.3 <td>U8</td>
1970 pcg 1.1 <td></td>
1971 pcg 1.3 <td>
1972 pcg 1.4 <b></b> </td>
1973 pcg 1.1 </tr>
1974     <tr>
1975     <td colspan="4">
1976     </td>
1977     </tr>
1978     <tr>
1979     <td>users</td>
1980 pcg 1.3 <td>U16</td>
1981 pcg 1.1 <td></td>
1982 pcg 1.3 <td>
1983 pcg 1.4 <b></b> </td>
1984 pcg 1.1 </tr>
1985     <tr>
1986     <td colspan="4">
1987     </td>
1988     </tr>
1989     <tr>
1990     <td>games</td>
1991 pcg 1.3 <td>U16</td>
1992 pcg 1.1 <td></td>
1993 pcg 1.3 <td>
1994 pcg 1.4 <b></b> </td>
1995 pcg 1.1 </tr>
1996     <tr>
1997     <td colspan="4">
1998     </td>
1999     </tr>
2000     <tr>
2001     <td>name</td>
2002     <td>STRING</td>
2003     <td></td>
2004 pcg 1.3 <td>
2005 pcg 1.4 <b></b> </td>
2006 pcg 1.1 </tr>
2007     <tr>
2008 pcg 1.4 <td colspan="4">
2009 pcg 1.1 </td>
2010     </tr>
2011     </table>
2012    
2013 pcg 1.10 <h4>STRUCTURE scorevalues</h4>
2014 pcg 1.3 CLASS: KGS::Score<br />
2015 pcg 1.1 <table border="1">
2016     <tr>
2017     <th>NAME</th>
2018     <th>TYPE</th>
2019     <th>DEFAULT</th>
2020 pcg 1.3 <th>DEC-GUARD</th>
2021 pcg 1.1 </tr>
2022     <tr>
2023     <td colspan="4">
2024     </td>
2025     </tr>
2026     <tr>
2027     <td>score</td>
2028 pcg 1.11 <td>score32</td>
2029 pcg 1.1 <td></td>
2030 pcg 1.3 <td>
2031 pcg 1.4 <b></b> </td>
2032 pcg 1.1 </tr>
2033     <tr>
2034     <td colspan="4">
2035     </td>
2036     </tr>
2037     <tr>
2038     <td>territory</td>
2039 pcg 1.3 <td>U32</td>
2040 pcg 1.1 <td></td>
2041 pcg 1.3 <td>
2042 pcg 1.4 <b></b> </td>
2043 pcg 1.1 </tr>
2044     <tr>
2045     <td colspan="4">
2046     </td>
2047     </tr>
2048     <tr>
2049     <td>captures</td>
2050 pcg 1.3 <td>U32</td>
2051 pcg 1.1 <td></td>
2052 pcg 1.3 <td>
2053 pcg 1.4 <b></b> </td>
2054 pcg 1.1 </tr>
2055     <tr>
2056     <td colspan="4">
2057     </td>
2058     </tr>
2059     <tr>
2060     <td>i3</td>
2061 pcg 1.3 <td>U32</td>
2062 pcg 1.1 <td></td>
2063 pcg 1.3 <td>
2064 pcg 1.4 <b></b> </td>
2065 pcg 1.1 </tr>
2066     <tr>
2067     <td colspan="4">
2068     </td>
2069     </tr>
2070     <tr>
2071     <td>f2</td>
2072 pcg 1.3 <td>U32</td>
2073 pcg 1.1 <td></td>
2074 pcg 1.3 <td>
2075 pcg 1.4 <b></b> </td>
2076 pcg 1.1 </tr>
2077     <tr>
2078     <td colspan="4">
2079     </td>
2080     </tr>
2081     <tr>
2082     <td>komi</td>
2083 pcg 1.6 <td>komi32</td>
2084 pcg 1.1 <td></td>
2085 pcg 1.3 <td>
2086 pcg 1.4 <b></b> </td>
2087 pcg 1.1 </tr>
2088     <tr>
2089     <td colspan="4">
2090     </td>
2091     </tr>
2092     <tr>
2093     <td>i4</td>
2094 pcg 1.3 <td>U32</td>
2095 pcg 1.1 <td></td>
2096 pcg 1.3 <td>
2097 pcg 1.4 <b></b> </td>
2098 pcg 1.1 </tr>
2099     <tr>
2100 pcg 1.4 <td colspan="4">
2101 pcg 1.3 Apparently the i3, f2, i4 are zero.
2102 pcg 1.1 </td>
2103     </tr>
2104     </table>
2105    
2106     <h2>Receive messages</h2>
2107    
2108     <h4>MESSAGE login</h4>
2109     NUMERIC TYPE (hex): 0001 RECV<table border="1">
2110     <tr>
2111     <th>NAME</th>
2112     <th>TYPE</th>
2113     <th>DEFAULT</th>
2114 pcg 1.3 <th>DEC-GUARD</th>
2115 pcg 1.1 </tr>
2116     <tr>
2117     <td colspan="4">
2118     </td>
2119     </tr>
2120     <tr>
2121     <td>result</td>
2122     <td>CONSTANT</td>
2123 pcg 1.3 <td>"login ok"</td>
2124     <td>
2125 pcg 1.4 <b></b> </td>
2126 pcg 1.1 </tr>
2127     <tr>
2128     <td colspan="4">
2129     </td>
2130     </tr>
2131     <tr>
2132     <td>success</td>
2133     <td>CONSTANT</td>
2134     <td>1</td>
2135 pcg 1.3 <td>
2136 pcg 1.4 <b></b> </td>
2137 pcg 1.1 </tr>
2138     <tr>
2139     <td colspan="4">
2140     </td>
2141     </tr>
2142     </table>
2143    
2144     <h4>MESSAGE login</h4>
2145     NUMERIC TYPE (hex): 0002 RECV<table border="1">
2146     <tr>
2147     <th>NAME</th>
2148     <th>TYPE</th>
2149     <th>DEFAULT</th>
2150 pcg 1.3 <th>DEC-GUARD</th>
2151 pcg 1.1 </tr>
2152     <tr>
2153     <td colspan="4">
2154     </td>
2155     </tr>
2156     <tr>
2157     <td>result</td>
2158     <td>CONSTANT</td>
2159 pcg 1.3 <td>"guest login ok"</td>
2160     <td>
2161 pcg 1.4 <b></b> </td>
2162 pcg 1.1 </tr>
2163     <tr>
2164     <td colspan="4">
2165     </td>
2166     </tr>
2167     <tr>
2168     <td>success</td>
2169     <td>CONSTANT</td>
2170     <td>1</td>
2171 pcg 1.3 <td>
2172 pcg 1.4 <b></b> </td>
2173 pcg 1.1 </tr>
2174     <tr>
2175     <td colspan="4">
2176     </td>
2177     </tr>
2178     </table>
2179    
2180     <h4>MESSAGE login</h4>
2181     NUMERIC TYPE (hex): 0003 RECV<table border="1">
2182     <tr>
2183     <th>NAME</th>
2184     <th>TYPE</th>
2185     <th>DEFAULT</th>
2186 pcg 1.3 <th>DEC-GUARD</th>
2187 pcg 1.1 </tr>
2188     <tr>
2189     <td colspan="4">
2190     </td>
2191     </tr>
2192     <tr>
2193     <td>result</td>
2194     <td>CONSTANT</td>
2195 pcg 1.3 <td>"login error 3"</td>
2196     <td>
2197 pcg 1.4 <b></b> </td>
2198 pcg 1.1 </tr>
2199     <tr>
2200     <td colspan="4">
2201     ** maybe more following? **
2202     </td>
2203     </tr>
2204     </table>
2205    
2206     <h4>MESSAGE login</h4>
2207     NUMERIC TYPE (hex): 0004 RECV<table border="1">
2208     <tr>
2209     <th>NAME</th>
2210     <th>TYPE</th>
2211     <th>DEFAULT</th>
2212 pcg 1.3 <th>DEC-GUARD</th>
2213 pcg 1.1 </tr>
2214     <tr>
2215     <td colspan="4">
2216     </td>
2217     </tr>
2218     <tr>
2219     <td>result</td>
2220     <td>CONSTANT</td>
2221 pcg 1.3 <td>"wrong password"</td>
2222     <td>
2223 pcg 1.4 <b></b> </td>
2224 pcg 1.1 </tr>
2225     <tr>
2226     <td colspan="4">
2227     ** maybe more following? **
2228     </td>
2229     </tr>
2230     </table>
2231    
2232     <h4>MESSAGE login</h4>
2233     NUMERIC TYPE (hex): 0005 RECV<table border="1">
2234     <tr>
2235     <th>NAME</th>
2236     <th>TYPE</th>
2237     <th>DEFAULT</th>
2238 pcg 1.3 <th>DEC-GUARD</th>
2239 pcg 1.1 </tr>
2240     <tr>
2241     <td colspan="4">
2242     </td>
2243     </tr>
2244     <tr>
2245     <td>result</td>
2246     <td>CONSTANT</td>
2247 pcg 1.3 <td>"user unknown"</td>
2248     <td>
2249 pcg 1.4 <b></b> </td>
2250 pcg 1.1 </tr>
2251     <tr>
2252     <td colspan="4">
2253     ** maybe more following? **
2254     </td>
2255     </tr>
2256     </table>
2257    
2258     <h4>MESSAGE login</h4>
2259     NUMERIC TYPE (hex): 0006 RECV<table border="1">
2260     <tr>
2261     <th>NAME</th>
2262     <th>TYPE</th>
2263     <th>DEFAULT</th>
2264 pcg 1.3 <th>DEC-GUARD</th>
2265 pcg 1.1 </tr>
2266     <tr>
2267     <td colspan="4">
2268     </td>
2269     </tr>
2270     <tr>
2271     <td>result</td>
2272     <td>CONSTANT</td>
2273 pcg 1.3 <td>"user exists"</td>
2274     <td>
2275 pcg 1.4 <b></b> </td>
2276 pcg 1.1 </tr>
2277     <tr>
2278     <td colspan="4">
2279     ** maybe more following? **
2280     </td>
2281     </tr>
2282     </table>
2283    
2284     <h4>MESSAGE login</h4>
2285     NUMERIC TYPE (hex): 0018 RECV<table border="1">
2286     <tr>
2287     <th>NAME</th>
2288     <th>TYPE</th>
2289     <th>DEFAULT</th>
2290 pcg 1.3 <th>DEC-GUARD</th>
2291 pcg 1.1 </tr>
2292     <tr>
2293     <td colspan="4">
2294     </td>
2295     </tr>
2296     <tr>
2297     <td>result</td>
2298     <td>CONSTANT</td>
2299 pcg 1.3 <td>"login error 18"</td>
2300     <td>
2301 pcg 1.4 <b></b> </td>
2302 pcg 1.1 </tr>
2303     <tr>
2304     <td colspan="4">
2305     ** maybe more following? **
2306     </td>
2307     </tr>
2308     </table>
2309    
2310     <h4>MESSAGE login</h4>
2311     NUMERIC TYPE (hex): 0022 RECV<table border="1">
2312     <tr>
2313     <th>NAME</th>
2314     <th>TYPE</th>
2315     <th>DEFAULT</th>
2316 pcg 1.3 <th>DEC-GUARD</th>
2317 pcg 1.1 </tr>
2318     <tr>
2319     <td colspan="4">
2320     </td>
2321     </tr>
2322     <tr>
2323     <td colspan="4">
2324     </td>
2325     </tr>
2326     <tr>
2327     <td>result</td>
2328     <td>CONSTANT</td>
2329 pcg 1.3 <td>"user or ip blocked"</td>
2330     <td>
2331 pcg 1.4 <b></b> </td>
2332 pcg 1.1 </tr>
2333     <tr>
2334     <td colspan="4">
2335     </td>
2336     </tr>
2337     <tr>
2338     <td>reason</td>
2339     <td>STRING</td>
2340     <td></td>
2341 pcg 1.3 <td>
2342 pcg 1.4 <b></b> </td>
2343 pcg 1.1 </tr>
2344     <tr>
2345     <td colspan="4">
2346     </td>
2347     </tr>
2348     </table>
2349    
2350     <h4>MESSAGE msg_chat</h4>
2351     NUMERIC TYPE (hex): 0013 RECV<table border="1">
2352     <tr>
2353     <th>NAME</th>
2354     <th>TYPE</th>
2355     <th>DEFAULT</th>
2356 pcg 1.3 <th>DEC-GUARD</th>
2357 pcg 1.1 </tr>
2358     <tr>
2359     <td colspan="4">
2360     </td>
2361     </tr>
2362     <tr>
2363     <td>user1</td>
2364 pcg 1.3 <td>username</td>
2365 pcg 1.1 <td></td>
2366 pcg 1.3 <td>
2367 pcg 1.4 <b></b> </td>
2368 pcg 1.1 </tr>
2369     <tr>
2370     <td colspan="4">
2371     </td>
2372     </tr>
2373     <tr>
2374     <td>user2</td>
2375 pcg 1.3 <td>username</td>
2376 pcg 1.1 <td></td>
2377 pcg 1.3 <td>
2378 pcg 1.4 <b></b> </td>
2379 pcg 1.1 </tr>
2380     <tr>
2381     <td colspan="4">
2382     </td>
2383     </tr>
2384     <tr>
2385     <td>message</td>
2386     <td>STRING</td>
2387     <td></td>
2388 pcg 1.3 <td>
2389 pcg 1.4 <b></b> </td>
2390 pcg 1.1 </tr>
2391     <tr>
2392     <td colspan="4">
2393     </td>
2394     </tr>
2395     </table>
2396    
2397     <h4>MESSAGE stats</h4>
2398     NUMERIC TYPE (hex): 0015 RECV<table border="1">
2399     <tr>
2400     <th>NAME</th>
2401     <th>TYPE</th>
2402     <th>DEFAULT</th>
2403 pcg 1.3 <th>DEC-GUARD</th>
2404 pcg 1.1 </tr>
2405     <tr>
2406     <td colspan="4">
2407     </td>
2408     </tr>
2409     <tr>
2410     <td>ver_major</td>
2411 pcg 1.3 <td>U16</td>
2412 pcg 1.1 <td></td>
2413 pcg 1.3 <td>
2414 pcg 1.4 <b></b> </td>
2415 pcg 1.1 </tr>
2416     <tr>
2417     <td colspan="4">
2418     </td>
2419     </tr>
2420     <tr>
2421     <td>ver_minor</td>
2422 pcg 1.3 <td>U16</td>
2423 pcg 1.1 <td></td>
2424 pcg 1.3 <td>
2425 pcg 1.4 <b></b> </td>
2426 pcg 1.1 </tr>
2427     <tr>
2428     <td colspan="4">
2429     </td>
2430     </tr>
2431     <tr>
2432     <td>ver_micro</td>
2433 pcg 1.3 <td>U16</td>
2434 pcg 1.1 <td></td>
2435 pcg 1.3 <td>
2436 pcg 1.4 <b></b> </td>
2437 pcg 1.1 </tr>
2438     <tr>
2439     <td colspan="4">
2440     </td>
2441     </tr>
2442     <tr>
2443     <td>boot_time</td>
2444 pcg 1.3 <td>U64</td>
2445 pcg 1.1 <td></td>
2446 pcg 1.3 <td>
2447 pcg 1.4 <b></b> </td>
2448 pcg 1.1 </tr>
2449     <tr>
2450     <td colspan="4">
2451     </td>
2452     </tr>
2453     <tr>
2454     <td>users_cur</td>
2455 pcg 1.3 <td>U32</td>
2456 pcg 1.1 <td></td>
2457 pcg 1.3 <td>
2458 pcg 1.4 <b></b> </td>
2459 pcg 1.1 </tr>
2460     <tr>
2461     <td colspan="4">
2462     </td>
2463     </tr>
2464     <tr>
2465     <td>users_max</td>
2466 pcg 1.3 <td>U32</td>
2467 pcg 1.1 <td></td>
2468 pcg 1.3 <td>
2469 pcg 1.4 <b></b> </td>
2470 pcg 1.1 </tr>
2471     <tr>
2472     <td colspan="4">
2473     </td>
2474     </tr>
2475     <tr>
2476     <td>users_lim</td>
2477 pcg 1.3 <td>U32</td>
2478 pcg 1.1 <td></td>
2479 pcg 1.3 <td>
2480 pcg 1.4 <b></b> </td>
2481 pcg 1.1 </tr>
2482     <tr>
2483     <td colspan="4">
2484     </td>
2485     </tr>
2486     <tr>
2487     <td>accts_cur</td>
2488 pcg 1.3 <td>U32</td>
2489 pcg 1.1 <td></td>
2490 pcg 1.3 <td>
2491 pcg 1.4 <b></b> </td>
2492 pcg 1.1 </tr>
2493     <tr>
2494     <td colspan="4">
2495     </td>
2496     </tr>
2497     <tr>
2498     <td>accts_max</td>
2499 pcg 1.3 <td>U32</td>
2500 pcg 1.1 <td></td>
2501 pcg 1.3 <td>
2502 pcg 1.4 <b></b> </td>
2503 pcg 1.1 </tr>
2504     <tr>
2505     <td colspan="4">
2506     </td>
2507     </tr>
2508     <tr>
2509     <td>unknown1</td>
2510 pcg 1.3 <td>U32</td>
2511 pcg 1.1 <td></td>
2512 pcg 1.3 <td>
2513 pcg 1.4 <b></b> </td>
2514 pcg 1.1 </tr>
2515     <tr>
2516     <td colspan="4">
2517     </td>
2518     </tr>
2519     <tr>
2520     <td>work_max</td>
2521 pcg 1.3 <td>U32</td>
2522 pcg 1.1 <td></td>
2523 pcg 1.3 <td>
2524 pcg 1.4 <b></b> </td>
2525 pcg 1.1 </tr>
2526     <tr>
2527     <td colspan="4">
2528     </td>
2529     </tr>
2530     <tr>
2531     <td>rooms_cur</td>
2532 pcg 1.3 <td>U32</td>
2533 pcg 1.1 <td></td>
2534 pcg 1.3 <td>
2535 pcg 1.4 <b></b> </td>
2536 pcg 1.1 </tr>
2537     <tr>
2538     <td colspan="4">
2539     </td>
2540     </tr>
2541     <tr>
2542     <td>rooms_max</td>
2543 pcg 1.3 <td>U32</td>
2544 pcg 1.1 <td></td>
2545 pcg 1.3 <td>
2546 pcg 1.4 <b></b> </td>
2547 pcg 1.1 </tr>
2548     <tr>
2549     <td colspan="4">
2550     </td>
2551     </tr>
2552     <tr>
2553     <td>rooms_lim</td>
2554 pcg 1.3 <td>U32</td>
2555 pcg 1.1 <td></td>
2556 pcg 1.3 <td>
2557 pcg 1.4 <b></b> </td>
2558 pcg 1.1 </tr>
2559     <tr>
2560     <td colspan="4">
2561     </td>
2562     </tr>
2563     <tr>
2564     <td>games_cur</td>
2565 pcg 1.3 <td>U32</td>
2566 pcg 1.1 <td></td>
2567 pcg 1.3 <td>
2568 pcg 1.4 <b></b> </td>
2569 pcg 1.1 </tr>
2570     <tr>
2571     <td colspan="4">
2572     </td>
2573     </tr>
2574     <tr>
2575     <td>games_max</td>
2576 pcg 1.3 <td>U32</td>
2577 pcg 1.1 <td></td>
2578 pcg 1.3 <td>
2579 pcg 1.4 <b></b> </td>
2580 pcg 1.1 </tr>
2581     <tr>
2582     <td colspan="4">
2583     </td>
2584     </tr>
2585     <tr>
2586     <td>games_lim</td>
2587 pcg 1.3 <td>U32</td>
2588 pcg 1.1 <td></td>
2589 pcg 1.3 <td>
2590 pcg 1.4 <b></b> </td>
2591 pcg 1.1 </tr>
2592     <tr>
2593     <td colspan="4">
2594     </td>
2595     </tr>
2596     <tr>
2597     <td>results_cur</td>
2598 pcg 1.3 <td>U32</td>
2599 pcg 1.1 <td></td>
2600 pcg 1.3 <td>
2601 pcg 1.4 <b></b> </td>
2602 pcg 1.1 </tr>
2603     <tr>
2604     <td colspan="4">
2605     </td>
2606     </tr>
2607     <tr>
2608     <td>results_max</td>
2609 pcg 1.3 <td>U32</td>
2610 pcg 1.1 <td></td>
2611 pcg 1.3 <td>
2612 pcg 1.4 <b></b> </td>
2613 pcg 1.1 </tr>
2614     <tr>
2615     <td colspan="4">
2616     </td>
2617     </tr>
2618     <tr>
2619     <td>unknown2</td>
2620 pcg 1.3 <td>U32</td>
2621 pcg 1.1 <td></td>
2622 pcg 1.3 <td>
2623 pcg 1.4 <b></b> </td>
2624 pcg 1.1 </tr>
2625     <tr>
2626     <td colspan="4">
2627     </td>
2628     </tr>
2629     <tr>
2630     <td>params_cur</td>
2631 pcg 1.3 <td>U32</td>
2632 pcg 1.1 <td></td>
2633 pcg 1.3 <td>
2634 pcg 1.4 <b></b> </td>
2635 pcg 1.1 </tr>
2636     <tr>
2637     <td colspan="4">
2638     </td>
2639     </tr>
2640     <tr>
2641     <td>params_max</td>
2642 pcg 1.3 <td>U32</td>
2643 pcg 1.1 <td></td>
2644 pcg 1.3 <td>
2645 pcg 1.4 <b></b> </td>
2646 pcg 1.1 </tr>
2647     <tr>
2648     <td colspan="4">
2649     </td>
2650     </tr>
2651     <tr>
2652     <td>bytes_in</td>
2653 pcg 1.3 <td>U64</td>
2654 pcg 1.1 <td></td>
2655 pcg 1.3 <td>
2656 pcg 1.4 <b></b> </td>
2657 pcg 1.1 </tr>
2658     <tr>
2659     <td colspan="4">
2660     </td>
2661     </tr>
2662     <tr>
2663     <td>packets_in</td>
2664 pcg 1.3 <td>U64</td>
2665 pcg 1.1 <td></td>
2666 pcg 1.3 <td>
2667 pcg 1.4 <b></b> </td>
2668 pcg 1.1 </tr>
2669     <tr>
2670     <td colspan="4">
2671     </td>
2672     </tr>
2673     <tr>
2674     <td>bytes_out</td>
2675 pcg 1.3 <td>U64</td>
2676 pcg 1.1 <td></td>
2677 pcg 1.3 <td>
2678 pcg 1.4 <b></b> </td>
2679 pcg 1.1 </tr>
2680     <tr>
2681     <td colspan="4">
2682     </td>
2683     </tr>
2684     <tr>
2685     <td>packets_out</td>
2686 pcg 1.3 <td>U64</td>
2687 pcg 1.1 <td></td>
2688 pcg 1.3 <td>
2689 pcg 1.4 <b></b> </td>
2690 pcg 1.1 </tr>
2691     <tr>
2692 pcg 1.4 <td colspan="4">
2693 pcg 1.1 </td>
2694     </tr>
2695     </table>
2696    
2697     <h4>MESSAGE idle_warn</h4>
2698     NUMERIC TYPE (hex): 0016 RECV<table border="1">
2699     <tr>
2700     <th>NAME</th>
2701     <th>TYPE</th>
2702     <th>DEFAULT</th>
2703 pcg 1.3 <th>DEC-GUARD</th>
2704 pcg 1.1 </tr>
2705     <tr>
2706     <td colspan="4">
2707     idle warning, autologout soon (10 minutes...)
2708     </td>
2709     </tr>
2710     </table>
2711    
2712     <h4>MESSAGE timewarning_default</h4>
2713     NUMERIC TYPE (hex): 001b RECV<table border="1">
2714     <tr>
2715     <th>NAME</th>
2716     <th>TYPE</th>
2717     <th>DEFAULT</th>
2718 pcg 1.3 <th>DEC-GUARD</th>
2719 pcg 1.1 </tr>
2720     <tr>
2721     <td colspan="4">
2722     WILD guess
2723     </td>
2724     </tr>
2725     <tr>
2726     <td>channel</td>
2727 pcg 1.3 <td>U16</td>
2728 pcg 1.1 <td></td>
2729 pcg 1.3 <td>
2730 pcg 1.4 <b></b> </td>
2731 pcg 1.1 </tr>
2732     <tr>
2733     <td colspan="4">
2734     </td>
2735     </tr>
2736     <tr>
2737     <td>time</td>
2738 pcg 1.3 <td>U16</td>
2739 pcg 1.1 <td></td>
2740 pcg 1.3 <td>
2741 pcg 1.4 <b></b> </td>
2742 pcg 1.1 </tr>
2743     <tr>
2744     <td colspan="4">
2745     </td>
2746     </tr>
2747     </table>
2748    
2749     <h4>MESSAGE idle_err</h4>
2750     NUMERIC TYPE (hex): 001c RECV<table border="1">
2751     <tr>
2752     <th>NAME</th>
2753     <th>TYPE</th>
2754     <th>DEFAULT</th>
2755 pcg 1.3 <th>DEC-GUARD</th>
2756 pcg 1.1 </tr>
2757     <tr>
2758     <td colspan="4">
2759     autologout
2760     </td>
2761     </tr>
2762     </table>
2763    
2764     <h4>MESSAGE ping</h4>
2765     NUMERIC TYPE (hex): 001d RECV<table border="1">
2766     <tr>
2767     <th>NAME</th>
2768     <th>TYPE</th>
2769     <th>DEFAULT</th>
2770 pcg 1.3 <th>DEC-GUARD</th>
2771 pcg 1.1 </tr>
2772     <tr>
2773     <td colspan="4">
2774     </td>
2775     </tr>
2776     </table>
2777    
2778     <h4>MESSAGE userpic</h4>
2779     NUMERIC TYPE (hex): 0021 RECV<table border="1">
2780     <tr>
2781     <th>NAME</th>
2782     <th>TYPE</th>
2783     <th>DEFAULT</th>
2784 pcg 1.3 <th>DEC-GUARD</th>
2785 pcg 1.1 </tr>
2786     <tr>
2787     <td colspan="4">
2788     </td>
2789     </tr>
2790     <tr>
2791     <td>name</td>
2792 pcg 1.3 <td>username</td>
2793 pcg 1.1 <td></td>
2794 pcg 1.3 <td>
2795 pcg 1.4 <b></b> </td>
2796 pcg 1.1 </tr>
2797     <tr>
2798     <td colspan="4">
2799     Reply to pic_req, contains an image in jpeg format.
2800     </td>
2801     </tr>
2802     <tr>
2803     <td>data</td>
2804     <td>DATA</td>
2805     <td></td>
2806 pcg 1.3 <td>
2807 pcg 1.4 <b></b> </td>
2808 pcg 1.1 </tr>
2809     <tr>
2810     <td colspan="4">
2811     </td>
2812     </tr>
2813     </table>
2814    
2815     <h4>MESSAGE gnotice</h4>
2816     NUMERIC TYPE (hex): 0100 RECV<table border="1">
2817     <tr>
2818     <th>NAME</th>
2819     <th>TYPE</th>
2820     <th>DEFAULT</th>
2821 pcg 1.3 <th>DEC-GUARD</th>
2822 pcg 1.1 </tr>
2823     <tr>
2824     <td colspan="4">
2825     global notice, sent to everybody
2826     </td>
2827     </tr>
2828     <tr>
2829     <td>notice</td>
2830     <td>STRING</td>
2831     <td></td>
2832 pcg 1.3 <td>
2833 pcg 1.4 <b></b> </td>
2834 pcg 1.1 </tr>
2835     <tr>
2836     <td colspan="4">
2837     </td>
2838     </tr>
2839     </table>
2840    
2841    
2842     <h4>MESSAGE priv_room</h4>
2843     NUMERIC TYPE (hex): 0310 RECV<table border="1">
2844     <tr>
2845     <th>NAME</th>
2846     <th>TYPE</th>
2847     <th>DEFAULT</th>
2848 pcg 1.3 <th>DEC-GUARD</th>
2849 pcg 1.1 </tr>
2850     <tr>
2851     <td colspan="4">
2852     "permission denied" when joining a room
2853     </td>
2854     </tr>
2855     <tr>
2856     <td>name</td>
2857     <td>STRING</td>
2858     <td></td>
2859 pcg 1.3 <td>
2860 pcg 1.4 <b></b> </td>
2861 pcg 1.1 </tr>
2862     <tr>
2863     <td colspan="4">
2864     </td>
2865     </tr>
2866     </table>
2867    
2868     <h4>MESSAGE upd_rooms</h4>
2869     NUMERIC TYPE (hex): 0318 RECV<table border="1">
2870     <tr>
2871     <th>NAME</th>
2872     <th>TYPE</th>
2873     <th>DEFAULT</th>
2874 pcg 1.3 <th>DEC-GUARD</th>
2875 pcg 1.1 </tr>
2876     <tr>
2877     <td colspan="4">
2878     </td>
2879     </tr>
2880     <tr>
2881     <td>rooms</td>
2882     <td>room</td>
2883     <td></td>
2884 pcg 1.3 <td>
2885 pcg 1.4 <b></b> </td>
2886 pcg 1.1 </tr>
2887     <tr>
2888     <td colspan="4">
2889     </td>
2890     </tr>
2891     </table>
2892    
2893     <h4>MESSAGE upd_game2</h4>
2894     NUMERIC TYPE (hex): 041c RECV<table border="1">
2895     <tr>
2896     <th>NAME</th>
2897     <th>TYPE</th>
2898     <th>DEFAULT</th>
2899 pcg 1.3 <th>DEC-GUARD</th>
2900 pcg 1.1 </tr>
2901     <tr>
2902     <td colspan="4">
2903     </td>
2904     </tr>
2905     <tr>
2906     <td>channel_junk</td>
2907 pcg 1.3 <td>U16</td>
2908 pcg 1.1 <td></td>
2909 pcg 1.3 <td>
2910 pcg 1.4 <b></b> </td>
2911 pcg 1.1 </tr>
2912     <tr>
2913     <td colspan="4">
2914     </td>
2915     </tr>
2916     <tr>
2917     <td>game</td>
2918     <td>game</td>
2919     <td></td>
2920 pcg 1.3 <td>
2921 pcg 1.4 <b></b> </td>
2922 pcg 1.1 </tr>
2923     <tr>
2924     <td colspan="4">
2925     </td>
2926     </tr>
2927     </table>
2928    
2929     <h4>MESSAGE upd_user</h4>
2930     NUMERIC TYPE (hex): 0202 RECV<table border="1">
2931     <tr>
2932     <th>NAME</th>
2933     <th>TYPE</th>
2934     <th>DEFAULT</th>
2935 pcg 1.3 <th>DEC-GUARD</th>
2936 pcg 1.1 </tr>
2937     <tr>
2938     <td colspan="4">
2939     # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
2940     </td>
2941     </tr>
2942     <tr>
2943     <td>location</td>
2944 pcg 1.3 <td>U32</td>
2945 pcg 1.1 <td></td>
2946 pcg 1.3 <td>
2947 pcg 1.4 <b></b> </td>
2948 pcg 1.1 </tr>
2949     <tr>
2950     <td colspan="4">
2951     </td>
2952     </tr>
2953     <tr>
2954     <td>user</td>
2955     <td>user</td>
2956     <td></td>
2957 pcg 1.3 <td>
2958 pcg 1.4 <b></b> </td>
2959 pcg 1.1 </tr>
2960     <tr>
2961     <td colspan="4">
2962     </td>
2963     </tr>
2964     <tr>
2965     <td>lotsofinfo</td>
2966     <td>DATA</td>
2967     <td></td>
2968 pcg 1.3 <td>
2969 pcg 1.4 <b>location</b> == 2</td>
2970 pcg 1.1 </tr>
2971     <tr>
2972     <td colspan="4">
2973     </td>
2974     </tr>
2975     </table>
2976    
2977     <h3>Room messages</h3>
2978    
2979     <p>Not all room messages are for rooms only, and rooms need to parse
2980     not only these messages. Orthogonality, what for?</p>
2981    
2982     <h4>MESSAGE join_room</h4>
2983     NUMERIC TYPE (hex): 4300 RECV<table border="1">
2984     <tr>
2985     <th>NAME</th>
2986     <th>TYPE</th>
2987     <th>DEFAULT</th>
2988 pcg 1.3 <th>DEC-GUARD</th>
2989 pcg 1.1 </tr>
2990     <tr>
2991     <td colspan="4">
2992     </td>
2993     </tr>
2994     <tr>
2995     <td>channel</td>
2996 pcg 1.3 <td>U16</td>
2997 pcg 1.1 <td></td>
2998 pcg 1.3 <td>
2999 pcg 1.4 <b></b> </td>
3000 pcg 1.1 </tr>
3001     <tr>
3002     <td colspan="4">
3003     </td>
3004     </tr>
3005     <tr>
3006     <td>users</td>
3007     <td>user</td>
3008     <td></td>
3009 pcg 1.3 <td>
3010 pcg 1.4 <b></b> </td>
3011 pcg 1.1 </tr>
3012     <tr>
3013     <td colspan="4">
3014     </td>
3015     </tr>
3016     </table>
3017    
3018     <h4>MESSAGE msg_room</h4>
3019     NUMERIC TYPE (hex): 4301 RECV<table border="1">
3020     <tr>
3021     <th>NAME</th>
3022     <th>TYPE</th>
3023     <th>DEFAULT</th>
3024 pcg 1.3 <th>DEC-GUARD</th>
3025 pcg 1.1 </tr>
3026     <tr>
3027     <td colspan="4">
3028     </td>
3029     </tr>
3030     <tr>
3031     <td>channel</td>
3032 pcg 1.3 <td>U16</td>
3033 pcg 1.1 <td></td>
3034 pcg 1.3 <td>
3035 pcg 1.4 <b></b> </td>
3036 pcg 1.1 </tr>
3037     <tr>
3038     <td colspan="4">
3039     </td>
3040     </tr>
3041     <tr>
3042     <td>name</td>
3043 pcg 1.3 <td>username</td>
3044 pcg 1.1 <td></td>
3045 pcg 1.3 <td>
3046 pcg 1.4 <b></b> </td>
3047 pcg 1.1 </tr>
3048     <tr>
3049     <td colspan="4">
3050     </td>
3051     </tr>
3052     <tr>
3053     <td>message</td>
3054     <td>STRING</td>
3055     <td></td>
3056 pcg 1.3 <td>
3057 pcg 1.4 <b></b> </td>
3058 pcg 1.1 </tr>
3059     <tr>
3060     <td colspan="4">
3061     </td>
3062     </tr>
3063     </table>
3064    
3065     <h4>MESSAGE part_room</h4>
3066     NUMERIC TYPE (hex): 4302 RECV<table border="1">
3067     <tr>
3068     <th>NAME</th>
3069     <th>TYPE</th>
3070     <th>DEFAULT</th>
3071 pcg 1.3 <th>DEC-GUARD</th>
3072 pcg 1.1 </tr>
3073     <tr>
3074     <td colspan="4">
3075     </td>
3076     </tr>
3077     <tr>
3078     <td>channel</td>
3079 pcg 1.3 <td>U16</td>
3080 pcg 1.1 <td></td>
3081 pcg 1.3 <td>
3082 pcg 1.4 <b></b> </td>
3083 pcg 1.1 </tr>
3084     <tr>
3085     <td colspan="4">
3086     </td>
3087     </tr>
3088     <tr>
3089     <td>user</td>
3090     <td>user</td>
3091     <td></td>
3092 pcg 1.3 <td>
3093 pcg 1.4 <b></b> </td>
3094 pcg 1.1 </tr>
3095     <tr>
3096     <td colspan="4">
3097     </td>
3098     </tr>
3099     </table>
3100    
3101     <h4>MESSAGE del_room</h4>
3102     NUMERIC TYPE (hex): 4303 RECV<table border="1">
3103     <tr>
3104     <th>NAME</th>
3105     <th>TYPE</th>
3106     <th>DEFAULT</th>
3107 pcg 1.3 <th>DEC-GUARD</th>
3108 pcg 1.1 </tr>
3109     <tr>
3110     <td colspan="4">
3111     </td>
3112     </tr>
3113     <tr>
3114     <td>channel</td>
3115 pcg 1.3 <td>U16</td>
3116 pcg 1.1 <td></td>
3117 pcg 1.3 <td>
3118 pcg 1.4 <b></b> </td>
3119 pcg 1.1 </tr>
3120     <tr>
3121     <td colspan="4">
3122    
3123     </td>
3124     </tr>
3125     </table>
3126    
3127     <h4>MESSAGE upd_games</h4>
3128     NUMERIC TYPE (hex): 4304 RECV<table border="1">
3129     <tr>
3130     <th>NAME</th>
3131     <th>TYPE</th>
3132     <th>DEFAULT</th>
3133 pcg 1.3 <th>DEC-GUARD</th>
3134 pcg 1.1 </tr>
3135     <tr>
3136     <td colspan="4">
3137     </td>
3138     </tr>
3139     <tr>
3140     <td>channel</td>
3141 pcg 1.3 <td>U16</td>
3142 pcg 1.1 <td></td>
3143 pcg 1.3 <td>
3144 pcg 1.4 <b></b> </td>
3145 pcg 1.1 </tr>
3146     <tr>
3147     <td colspan="4">
3148     </td>
3149     </tr>
3150     <tr>
3151     <td>games</td>
3152     <td>game</td>
3153     <td></td>
3154 pcg 1.3 <td>
3155 pcg 1.4 <b></b> </td>
3156 pcg 1.1 </tr>
3157     <tr>
3158     <td colspan="4">
3159     </td>
3160     </tr>
3161     </table>
3162    
3163     <h4>MESSAGE desc_room</h4>
3164     NUMERIC TYPE (hex): 4319 RECV<table border="1">
3165     <tr>
3166     <th>NAME</th>
3167     <th>TYPE</th>
3168     <th>DEFAULT</th>
3169 pcg 1.3 <th>DEC-GUARD</th>
3170 pcg 1.1 </tr>
3171     <tr>
3172     <td colspan="4">
3173     </td>
3174     </tr>
3175     <tr>
3176     <td>channel</td>
3177 pcg 1.3 <td>U16</td>
3178 pcg 1.1 <td></td>
3179 pcg 1.3 <td>
3180 pcg 1.4 <b></b> </td>
3181 pcg 1.1 </tr>
3182     <tr>
3183     <td colspan="4">
3184     </td>
3185     </tr>
3186     <tr>
3187     <td>owner</td>
3188 pcg 1.3 <td>username</td>
3189 pcg 1.1 <td></td>
3190 pcg 1.3 <td>
3191 pcg 1.4 <b></b> </td>
3192 pcg 1.1 </tr>
3193     <tr>
3194     <td colspan="4">
3195     </td>
3196     </tr>
3197     <tr>
3198     <td>description</td>
3199     <td>STRING</td>
3200     <td></td>
3201 pcg 1.3 <td>
3202 pcg 1.4 <b></b> </td>
3203 pcg 1.1 </tr>
3204     <tr>
3205     <td colspan="4">
3206     </td>
3207     </tr>
3208     </table>
3209    
3210    
3211     <h4>MESSAGE chal_defaults</h4>
3212     NUMERIC TYPE (hex): 0411 RECV<table border="1">
3213     <tr>
3214     <th>NAME</th>
3215     <th>TYPE</th>
3216     <th>DEFAULT</th>
3217 pcg 1.3 <th>DEC-GUARD</th>
3218 pcg 1.1 </tr>
3219     <tr>
3220     <td colspan="4">
3221     </td>
3222     </tr>
3223     <tr>
3224     <td>channel</td>
3225 pcg 1.3 <td>U16</td>
3226 pcg 1.1 <td></td>
3227 pcg 1.3 <td>
3228 pcg 1.4 <b></b> </td>
3229 pcg 1.1 </tr>
3230     <tr>
3231     <td colspan="4">
3232     </td>
3233     </tr>
3234     <tr>
3235     <td>defaults</td>
3236     <td>challenge_defaults</td>
3237     <td></td>
3238 pcg 1.3 <td>
3239 pcg 1.4 <b></b> </td>
3240 pcg 1.1 </tr>
3241     <tr>
3242     <td colspan="4">
3243     </td>
3244     </tr>
3245     </table>
3246    
3247     <h3>Game messages</h3>
3248    
3249     <h4>MESSAGE upd_chal</h4>
3250     NUMERIC TYPE (hex): 4400 RECV<table border="1">
3251     <tr>
3252     <th>NAME</th>
3253     <th>TYPE</th>
3254     <th>DEFAULT</th>
3255 pcg 1.3 <th>DEC-GUARD</th>
3256 pcg 1.1 </tr>
3257     <tr>
3258     <td colspan="4">
3259     Unclear.
3260     </td>
3261     </tr>
3262     <tr>
3263     <td>channel</td>
3264 pcg 1.3 <td>U16</td>
3265 pcg 1.1 <td></td>
3266 pcg 1.3 <td>
3267 pcg 1.4 <b></b> </td>
3268 pcg 1.1 </tr>
3269     <tr>
3270     <td colspan="4">
3271     </td>
3272     </tr>
3273     <tr>
3274     <td>challenge</td>
3275     <td>challenge</td>
3276     <td></td>
3277 pcg 1.3 <td>
3278 pcg 1.4 <b></b> </td>
3279 pcg 1.1 </tr>
3280     <tr>
3281     <td colspan="4">
3282     </td>
3283     </tr>
3284     </table>
3285    
3286     <h4>MESSAGE upd_game</h4>
3287     NUMERIC TYPE (hex): 4401 RECV<table border="1">
3288     <tr>
3289     <th>NAME</th>
3290     <th>TYPE</th>
3291     <th>DEFAULT</th>
3292 pcg 1.3 <th>DEC-GUARD</th>
3293 pcg 1.1 </tr>
3294     <tr>
3295     <td colspan="4">
3296     </td>
3297     </tr>
3298     <tr>
3299     <td>channel</td>
3300 pcg 1.3 <td>U16</td>
3301 pcg 1.1 <td></td>
3302 pcg 1.3 <td>
3303 pcg 1.4 <b></b> </td>
3304 pcg 1.1 </tr>
3305     <tr>
3306     <td colspan="4">
3307     </td>
3308     </tr>
3309     <tr>
3310     <td>game</td>
3311     <td>game</td>
3312     <td></td>
3313 pcg 1.3 <td>
3314 pcg 1.4 <b></b> </td>
3315 pcg 1.1 </tr>
3316     <tr>
3317     <td colspan="4">
3318     </td>
3319     </tr>
3320     </table>
3321    
3322     <h4>MESSAGE del_game</h4>
3323     NUMERIC TYPE (hex): 4402 RECV<table border="1">
3324     <tr>
3325     <th>NAME</th>
3326     <th>TYPE</th>
3327     <th>DEFAULT</th>
3328 pcg 1.3 <th>DEC-GUARD</th>
3329 pcg 1.1 </tr>
3330     <tr>
3331     <td colspan="4">
3332     </td>
3333     </tr>
3334     <tr>
3335     <td>channel</td>
3336 pcg 1.3 <td>U16</td>
3337 pcg 1.1 <td></td>
3338 pcg 1.3 <td>
3339 pcg 1.4 <b></b> </td>
3340 pcg 1.1 </tr>
3341     <tr>
3342     <td colspan="4">
3343     </td>
3344     </tr>
3345     </table>
3346    
3347     <h4>MESSAGE upd_observers</h4>
3348     NUMERIC TYPE (hex): 4403 RECV<table border="1">
3349     <tr>
3350     <th>NAME</th>
3351     <th>TYPE</th>
3352     <th>DEFAULT</th>
3353 pcg 1.3 <th>DEC-GUARD</th>
3354 pcg 1.1 </tr>
3355     <tr>
3356     <td colspan="4">
3357     </td>
3358     </tr>
3359     <tr>
3360     <td>channel</td>
3361 pcg 1.3 <td>U16</td>
3362 pcg 1.1 <td></td>
3363 pcg 1.3 <td>
3364 pcg 1.4 <b></b> </td>
3365 pcg 1.1 </tr>
3366     <tr>
3367     <td colspan="4">
3368     </td>
3369     </tr>
3370     <tr>
3371     <td>users</td>
3372     <td>user</td>
3373     <td></td>
3374 pcg 1.3 <td>
3375 pcg 1.4 <b></b> </td>
3376 pcg 1.1 </tr>
3377     <tr>
3378     <td colspan="4">
3379     </td>
3380     </tr>
3381     </table>
3382    
3383     <h4>MESSAGE del_observer</h4>
3384     NUMERIC TYPE (hex): 4404 RECV<table border="1">
3385     <tr>
3386     <th>NAME</th>
3387     <th>TYPE</th>
3388     <th>DEFAULT</th>
3389 pcg 1.3 <th>DEC-GUARD</th>
3390 pcg 1.1 </tr>
3391     <tr>
3392     <td colspan="4">
3393     </td>
3394     </tr>
3395     <tr>
3396     <td>channel</td>
3397 pcg 1.3 <td>U16</td>
3398 pcg 1.1 <td></td>
3399 pcg 1.3 <td>
3400 pcg 1.4 <b></b> </td>
3401 pcg 1.1 </tr>
3402     <tr>
3403     <td colspan="4">
3404     </td>
3405     </tr>
3406     <tr>
3407     <td>name</td>
3408 pcg 1.3 <td>username</td>
3409 pcg 1.1 <td></td>
3410 pcg 1.3 <td>
3411 pcg 1.4 <b></b> </td>
3412 pcg 1.1 </tr>
3413     <tr>
3414     <td colspan="4">
3415     </td>
3416     </tr>
3417     </table>
3418    
3419     <h4>MESSAGE set_tree</h4>
3420     NUMERIC TYPE (hex): 4405 RECV<table border="1">
3421     <tr>
3422     <th>NAME</th>
3423     <th>TYPE</th>
3424     <th>DEFAULT</th>
3425 pcg 1.3 <th>DEC-GUARD</th>
3426 pcg 1.1 </tr>
3427     <tr>
3428     <td colspan="4">
3429     </td>
3430     </tr>
3431     <tr>
3432     <td>channel</td>
3433 pcg 1.3 <td>U16</td>
3434 pcg 1.1 <td></td>
3435 pcg 1.3 <td>
3436 pcg 1.4 <b></b> </td>
3437 pcg 1.1 </tr>
3438     <tr>
3439     <td colspan="4">
3440     </td>
3441     </tr>
3442     <tr>
3443     <td>tree</td>
3444     <td>TREE</td>
3445     <td></td>
3446 pcg 1.3 <td>
3447 pcg 1.4 <b></b> </td>
3448 pcg 1.1 </tr>
3449     <tr>
3450     <td colspan="4">
3451     </td>
3452     </tr>
3453     </table>
3454    
3455     <h4>MESSAGE upd_tree</h4>
3456     NUMERIC TYPE (hex): 4406 RECV<table border="1">
3457     <tr>
3458     <th>NAME</th>
3459     <th>TYPE</th>
3460     <th>DEFAULT</th>
3461 pcg 1.3 <th>DEC-GUARD</th>
3462 pcg 1.1 </tr>
3463     <tr>
3464     <td colspan="4">
3465     </td>
3466     </tr>
3467     <tr>
3468     <td>channel</td>
3469 pcg 1.3 <td>U16</td>
3470 pcg 1.1 <td></td>
3471 pcg 1.3 <td>
3472 pcg 1.4 <b></b> </td>
3473 pcg 1.1 </tr>
3474     <tr>
3475     <td colspan="4">
3476     </td>
3477     </tr>
3478     <tr>
3479     <td>tree</td>
3480     <td>TREE</td>
3481     <td></td>
3482 pcg 1.3 <td>
3483 pcg 1.4 <b></b> </td>
3484 pcg 1.1 </tr>
3485     <tr>
3486     <td colspan="4">
3487     </td>
3488     </tr>
3489     </table>
3490    
3491     <h4>MESSAGE set_node</h4>
3492     NUMERIC TYPE (hex): 4407 RECV<table border="1">
3493     <tr>
3494     <th>NAME</th>
3495     <th>TYPE</th>
3496     <th>DEFAULT</th>
3497 pcg 1.3 <th>DEC-GUARD</th>
3498 pcg 1.1 </tr>
3499     <tr>
3500     <td colspan="4">
3501     </td>
3502     </tr>
3503     <tr>
3504     <td>channel</td>
3505 pcg 1.3 <td>U16</td>
3506 pcg 1.1 <td></td>
3507 pcg 1.3 <td>
3508 pcg 1.4 <b></b> </td>
3509 pcg 1.1 </tr>
3510     <tr>
3511     <td colspan="4">
3512     </td>
3513     </tr>
3514     <tr>
3515     <td>node</td>
3516 pcg 1.3 <td>U32</td>
3517 pcg 1.1 <td></td>
3518 pcg 1.3 <td>
3519 pcg 1.4 <b></b> </td>
3520 pcg 1.1 </tr>
3521     <tr>
3522     <td colspan="4">
3523     </td>
3524     </tr>
3525     </table>
3526    
3527     <h4>MESSAGE superko</h4>
3528     NUMERIC TYPE (hex): 4409 RECV<table border="1">
3529     <tr>
3530     <th>NAME</th>
3531     <th>TYPE</th>
3532     <th>DEFAULT</th>
3533 pcg 1.3 <th>DEC-GUARD</th>
3534 pcg 1.1 </tr>
3535     <tr>
3536     <td colspan="4">
3537     Superko-warning.
3538     </td>
3539     </tr>
3540     <tr>
3541     <td>channel</td>
3542 pcg 1.3 <td>U16</td>
3543 pcg 1.1 <td></td>
3544 pcg 1.3 <td>
3545 pcg 1.4 <b></b> </td>
3546 pcg 1.1 </tr>
3547     <tr>
3548     <td colspan="4">
3549     </td>
3550     </tr>
3551     </table>
3552    
3553     <h4>MESSAGE final_result</h4>
3554     NUMERIC TYPE (hex): 440b RECV<table border="1">
3555     <tr>
3556     <th>NAME</th>
3557     <th>TYPE</th>
3558     <th>DEFAULT</th>
3559 pcg 1.3 <th>DEC-GUARD</th>
3560 pcg 1.1 </tr>
3561     <tr>
3562     <td colspan="4">
3563     </td>
3564     </tr>
3565     <tr>
3566     <td>channel</td>
3567 pcg 1.3 <td>U16</td>
3568 pcg 1.1 <td></td>
3569 pcg 1.3 <td>
3570 pcg 1.4 <b></b> </td>
3571 pcg 1.1 </tr>
3572     <tr>
3573     <td colspan="4">
3574     </td>
3575     </tr>
3576     <tr>
3577     <td>blackscore</td>
3578 pcg 1.10 <td>scorevalues</td>
3579 pcg 1.1 <td></td>
3580 pcg 1.3 <td>
3581 pcg 1.4 <b></b> </td>
3582 pcg 1.1 </tr>
3583     <tr>
3584     <td colspan="4">
3585     </td>
3586     </tr>
3587     <tr>
3588     <td>whitescore</td>
3589 pcg 1.10 <td>scorevalues</td>
3590 pcg 1.1 <td></td>
3591 pcg 1.3 <td>
3592 pcg 1.4 <b></b> </td>
3593 pcg 1.1 </tr>
3594     <tr>
3595     <td colspan="4">
3596     </td>
3597     </tr>
3598     </table>
3599    
3600     <h4>MESSAGE req_undo</h4>
3601     NUMERIC TYPE (hex): 440e RECV<table border="1">
3602     <tr>
3603     <th>NAME</th>
3604     <th>TYPE</th>
3605     <th>DEFAULT</th>
3606 pcg 1.3 <th>DEC-GUARD</th>
3607 pcg 1.1 </tr>
3608     <tr>
3609     <td colspan="4">
3610     </td>
3611     </tr>
3612     <tr>
3613     <td>channel</td>
3614 pcg 1.3 <td>U16</td>
3615 pcg 1.1 <td></td>
3616 pcg 1.3 <td>
3617 pcg 1.4 <b></b> </td>
3618 pcg 1.1 </tr>
3619     <tr>
3620     <td colspan="4">
3621    
3622     </td>
3623     </tr>
3624     </table>
3625    
3626     <h4>MESSAGE resign_game</h4>
3627     NUMERIC TYPE (hex): 4410 RECV<table border="1">
3628     <tr>
3629     <th>NAME</th>
3630     <th>TYPE</th>
3631     <th>DEFAULT</th>
3632 pcg 1.3 <th>DEC-GUARD</th>
3633 pcg 1.1 </tr>
3634     <tr>
3635     <td colspan="4">
3636     </td>
3637     </tr>
3638     <tr>
3639     <td>channel</td>
3640 pcg 1.3 <td>U16</td>
3641 pcg 1.1 <td></td>
3642 pcg 1.3 <td>
3643 pcg 1.4 <b></b> </td>
3644 pcg 1.1 </tr>
3645     <tr>
3646     <td colspan="4">
3647     </td>
3648     </tr>
3649     <tr>
3650     <td>player</td>
3651 pcg 1.3 <td>U8</td>
3652 pcg 1.1 <td></td>
3653 pcg 1.3 <td>
3654 pcg 1.4 <b></b> </td>
3655 pcg 1.1 </tr>
3656     <tr>
3657     <td colspan="4">
3658     </td>
3659     </tr>
3660     </table>
3661    
3662     <h4>MESSAGE set_teacher</h4>
3663     NUMERIC TYPE (hex): 441a RECV<table border="1">
3664     <tr>
3665     <th>NAME</th>
3666     <th>TYPE</th>
3667     <th>DEFAULT</th>
3668 pcg 1.3 <th>DEC-GUARD</th>
3669 pcg 1.1 </tr>
3670     <tr>
3671     <td colspan="4">
3672     </td>
3673     </tr>
3674     <tr>
3675     <td>channel</td>
3676 pcg 1.3 <td>U16</td>
3677 pcg 1.1 <td></td>
3678 pcg 1.3 <td>
3679 pcg 1.4 <b></b> </td>
3680 pcg 1.1 </tr>
3681     <tr>
3682     <td colspan="4">
3683     </td>
3684     </tr>
3685     <tr>
3686     <td>name</td>
3687 pcg 1.3 <td>username</td>
3688 pcg 1.1 <td></td>
3689 pcg 1.3 <td>
3690 pcg 1.4 <b></b> </td>
3691 pcg 1.1 </tr>
3692     <tr>
3693     <td colspan="4">
3694     </td>
3695     </tr>
3696     </table>
3697    
3698     <h4>MESSAGE owner_left</h4>
3699     NUMERIC TYPE (hex): 441d RECV<table border="1">
3700     <tr>
3701     <th>NAME</th>
3702     <th>TYPE</th>
3703     <th>DEFAULT</th>
3704 pcg 1.3 <th>DEC-GUARD</th>
3705 pcg 1.1 </tr>
3706     <tr>
3707     <td colspan="4">
3708     Unclear.
3709     </td>
3710     </tr>
3711     <tr>
3712     <td>channel</td>
3713 pcg 1.3 <td>U16</td>
3714 pcg 1.1 <td></td>
3715 pcg 1.3 <td>
3716 pcg 1.4 <b></b> </td>
3717 pcg 1.1 </tr>
3718     <tr>
3719     <td colspan="4">
3720     </td>
3721     </tr>
3722     </table>
3723    
3724     <h4>MESSAGE teacher_left</h4>
3725     NUMERIC TYPE (hex): 441e RECV<table border="1">
3726     <tr>
3727     <th>NAME</th>
3728     <th>TYPE</th>
3729     <th>DEFAULT</th>
3730 pcg 1.3 <th>DEC-GUARD</th>
3731 pcg 1.1 </tr>
3732     <tr>
3733     <td colspan="4">
3734     Unclear.
3735     </td>
3736     </tr>
3737     <tr>
3738     <td>channel</td>
3739 pcg 1.3 <td>U16</td>
3740 pcg 1.1 <td></td>
3741 pcg 1.3 <td>
3742 pcg 1.4 <b></b> </td>
3743 pcg 1.1 </tr>
3744     <tr>
3745     <td colspan="4">
3746     </td>
3747     </tr>
3748     </table>
3749    
3750     <h4>MESSAGE unknown4422</h4>
3751     NUMERIC TYPE (hex): 4422 RECV<table border="1">
3752     <tr>
3753     <th>NAME</th>
3754     <th>TYPE</th>
3755     <th>DEFAULT</th>
3756 pcg 1.3 <th>DEC-GUARD</th>
3757 pcg 1.1 </tr>
3758     <tr>
3759     <td colspan="4">
3760     change teacher? something to do with editing?
3761     </td>
3762     </tr>
3763     <tr>
3764     <td>channel</td>
3765 pcg 1.3 <td>U16</td>
3766 pcg 1.1 <td></td>
3767 pcg 1.3 <td>
3768 pcg 1.4 <b></b> </td>
3769 pcg 1.1 </tr>
3770     <tr>
3771     <td colspan="4">
3772     </td>
3773     </tr>
3774     <tr>
3775     <td>name1</td>
3776 pcg 1.3 <td>username</td>
3777 pcg 1.1 <td></td>
3778 pcg 1.3 <td>
3779 pcg 1.4 <b></b> </td>
3780 pcg 1.1 </tr>
3781     <tr>
3782     <td colspan="4">
3783     </td>
3784     </tr>
3785     <tr>
3786     <td>name2</td>
3787 pcg 1.3 <td>username</td>
3788 pcg 1.1 <td></td>
3789 pcg 1.3 <td>
3790 pcg 1.4 <b></b> </td>
3791 pcg 1.1 </tr>
3792     <tr>
3793     <td colspan="4">
3794     </td>
3795     </tr>
3796     </table>
3797    
3798     <h4>MESSAGE req_result</h4>
3799     NUMERIC TYPE (hex): 4433 RECV<table border="1">
3800     <tr>
3801     <th>NAME</th>
3802     <th>TYPE</th>
3803     <th>DEFAULT</th>
3804 pcg 1.3 <th>DEC-GUARD</th>
3805 pcg 1.1 </tr>
3806     <tr>
3807     <td colspan="4">
3808     Unclear.
3809     </td>
3810     </tr>
3811     <tr>
3812     <td>channel</td>
3813 pcg 1.3 <td>U16</td>
3814 pcg 1.1 <td></td>
3815 pcg 1.3 <td>
3816 pcg 1.4 <b></b> </td>
3817 pcg 1.1 </tr>
3818     <tr>
3819     <td colspan="4">
3820     # # recv_result(?)
3821     </td>
3822     </tr>
3823     </table>
3824    
3825     <h4>MESSAGE unknown4434</h4>
3826     NUMERIC TYPE (hex): 4434 RECV<table border="1">
3827     <tr>
3828     <th>NAME</th>
3829     <th>TYPE</th>
3830     <th>DEFAULT</th>
3831 pcg 1.3 <th>DEC-GUARD</th>
3832 pcg 1.1 </tr>
3833     <tr>
3834     <td colspan="4">
3835     </td>
3836     </tr>
3837     <tr>
3838     <td>channel</td>
3839 pcg 1.3 <td>U16</td>
3840 pcg 1.1 <td></td>
3841 pcg 1.3 <td>
3842 pcg 1.4 <b></b> </td>
3843 pcg 1.1 </tr>
3844     <tr>
3845     <td colspan="4">
3846     </td>
3847     </tr>
3848     <tr>
3849     <td>b1</td>
3850 pcg 1.3 <td>U8</td>
3851 pcg 1.1 <td></td>
3852 pcg 1.3 <td>
3853 pcg 1.4 <b></b> </td>
3854 pcg 1.1 </tr>
3855     <tr>
3856     <td colspan="4">
3857     ?? !demonstration game??
3858     </td>
3859     </tr>
3860     </table>
3861    
3862     </body>
3863     </html>