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