ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/kgsueme/doc/protocol.html
Revision: 1.11
Committed: Fri Jun 6 05:50:32 2003 UTC (23 years, 4 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.10: +8 -5 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.11 <h1>$Revision: 1.12 $</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     </td>
1820     </tr>
1821     <tr>
1822     <td>flags</td>
1823 pcg 1.3 <td>U16</td>
1824 pcg 1.1 <td></td>
1825 pcg 1.3 <td>
1826 pcg 1.4 <b></b> </td>
1827 pcg 1.1 </tr>
1828     <tr>
1829     <td colspan="4">
1830     </td>
1831     </tr>
1832     <tr>
1833     <td>observers</td>
1834 pcg 1.3 <td>U32</td>
1835 pcg 1.1 <td></td>
1836 pcg 1.3 <td>
1837 pcg 1.4 <b></b> </td>
1838 pcg 1.1 </tr>
1839     <tr>
1840     <td colspan="4">
1841     </td>
1842     </tr>
1843     <tr>
1844     <td>saved</td>
1845 pcg 1.3 <td>flag</td>
1846 pcg 1.1 <td></td>
1847 pcg 1.3 <td>
1848 pcg 1.4 <b></b> </td>
1849 pcg 1.1 </tr>
1850     <tr>
1851     <td colspan="4">
1852     </td>
1853     </tr>
1854     <tr>
1855     <td>notes</td>
1856     <td>STRING</td>
1857     <td></td>
1858 pcg 1.3 <td>
1859 pcg 1.4 <b>handicap</b> &lt; 0</td>
1860 pcg 1.1 </tr>
1861     <tr>
1862     <td colspan="4">
1863     </td>
1864     </tr>
1865     </table>
1866    
1867 pcg 1.3 <h4>STRUCTURE room_obs</h4>
1868 pcg 1.1 <table border="1">
1869     <tr>
1870     <th>NAME</th>
1871     <th>TYPE</th>
1872     <th>DEFAULT</th>
1873 pcg 1.3 <th>DEC-GUARD</th>
1874 pcg 1.1 </tr>
1875     <tr>
1876     <td colspan="4">
1877 pcg 1.9 Obsolete.
1878    
1879 pcg 1.1 </td>
1880     </tr>
1881     <tr>
1882     <td>name</td>
1883 pcg 1.3 <td>roomname</td>
1884 pcg 1.1 <td></td>
1885 pcg 1.3 <td>
1886 pcg 1.4 <b></b> </td>
1887 pcg 1.1 </tr>
1888     <tr>
1889     <td colspan="4">
1890     </td>
1891     </tr>
1892     <tr>
1893     <td>channel</td>
1894 pcg 1.3 <td>U16</td>
1895 pcg 1.1 <td></td>
1896 pcg 1.3 <td>
1897 pcg 1.4 <b></b> </td>
1898 pcg 1.1 </tr>
1899     <tr>
1900     <td colspan="4">
1901     </td>
1902     </tr>
1903     <tr>
1904     <td>flags</td>
1905 pcg 1.3 <td>U32</td>
1906 pcg 1.1 <td></td>
1907 pcg 1.3 <td>
1908 pcg 1.4 <b></b> </td>
1909 pcg 1.1 </tr>
1910     <tr>
1911     <td colspan="4">
1912     </td>
1913     </tr>
1914     <tr>
1915     <td>users</td>
1916 pcg 1.3 <td>U32</td>
1917 pcg 1.1 <td></td>
1918 pcg 1.3 <td>
1919 pcg 1.4 <b></b> </td>
1920 pcg 1.1 </tr>
1921     <tr>
1922 pcg 1.4 <td colspan="4">
1923 pcg 1.1 </td>
1924     </tr>
1925     </table>
1926    
1927 pcg 1.3 <h4>STRUCTURE room</h4>
1928     CLASS: KGS::Room<br />
1929 pcg 1.1 <table border="1">
1930     <tr>
1931     <th>NAME</th>
1932     <th>TYPE</th>
1933     <th>DEFAULT</th>
1934 pcg 1.3 <th>DEC-GUARD</th>
1935 pcg 1.1 </tr>
1936     <tr>
1937     <td colspan="4">
1938     </td>
1939     </tr>
1940     <tr>
1941     <td>channel</td>
1942 pcg 1.3 <td>U16</td>
1943 pcg 1.1 <td></td>
1944 pcg 1.3 <td>
1945 pcg 1.4 <b></b> </td>
1946 pcg 1.1 </tr>
1947     <tr>
1948     <td colspan="4">
1949     </td>
1950     </tr>
1951     <tr>
1952     <td>flags</td>
1953 pcg 1.3 <td>U8</td>
1954 pcg 1.1 <td></td>
1955 pcg 1.3 <td>
1956 pcg 1.4 <b></b> </td>
1957 pcg 1.1 </tr>
1958     <tr>
1959     <td colspan="4">
1960     </td>
1961     </tr>
1962     <tr>
1963     <td>group</td>
1964 pcg 1.3 <td>U8</td>
1965 pcg 1.1 <td></td>
1966 pcg 1.3 <td>
1967 pcg 1.4 <b></b> </td>
1968 pcg 1.1 </tr>
1969     <tr>
1970     <td colspan="4">
1971     </td>
1972     </tr>
1973     <tr>
1974     <td>users</td>
1975 pcg 1.3 <td>U16</td>
1976 pcg 1.1 <td></td>
1977 pcg 1.3 <td>
1978 pcg 1.4 <b></b> </td>
1979 pcg 1.1 </tr>
1980     <tr>
1981     <td colspan="4">
1982     </td>
1983     </tr>
1984     <tr>
1985     <td>games</td>
1986 pcg 1.3 <td>U16</td>
1987 pcg 1.1 <td></td>
1988 pcg 1.3 <td>
1989 pcg 1.4 <b></b> </td>
1990 pcg 1.1 </tr>
1991     <tr>
1992     <td colspan="4">
1993     </td>
1994     </tr>
1995     <tr>
1996     <td>name</td>
1997     <td>STRING</td>
1998     <td></td>
1999 pcg 1.3 <td>
2000 pcg 1.4 <b></b> </td>
2001 pcg 1.1 </tr>
2002     <tr>
2003 pcg 1.4 <td colspan="4">
2004 pcg 1.1 </td>
2005     </tr>
2006     </table>
2007    
2008 pcg 1.10 <h4>STRUCTURE scorevalues</h4>
2009 pcg 1.3 CLASS: KGS::Score<br />
2010 pcg 1.1 <table border="1">
2011     <tr>
2012     <th>NAME</th>
2013     <th>TYPE</th>
2014     <th>DEFAULT</th>
2015 pcg 1.3 <th>DEC-GUARD</th>
2016 pcg 1.1 </tr>
2017     <tr>
2018     <td colspan="4">
2019     </td>
2020     </tr>
2021     <tr>
2022     <td>score</td>
2023 pcg 1.11 <td>score32</td>
2024 pcg 1.1 <td></td>
2025 pcg 1.3 <td>
2026 pcg 1.4 <b></b> </td>
2027 pcg 1.1 </tr>
2028     <tr>
2029     <td colspan="4">
2030     </td>
2031     </tr>
2032     <tr>
2033     <td>territory</td>
2034 pcg 1.3 <td>U32</td>
2035 pcg 1.1 <td></td>
2036 pcg 1.3 <td>
2037 pcg 1.4 <b></b> </td>
2038 pcg 1.1 </tr>
2039     <tr>
2040     <td colspan="4">
2041     </td>
2042     </tr>
2043     <tr>
2044     <td>captures</td>
2045 pcg 1.3 <td>U32</td>
2046 pcg 1.1 <td></td>
2047 pcg 1.3 <td>
2048 pcg 1.4 <b></b> </td>
2049 pcg 1.1 </tr>
2050     <tr>
2051     <td colspan="4">
2052     </td>
2053     </tr>
2054     <tr>
2055     <td>i3</td>
2056 pcg 1.3 <td>U32</td>
2057 pcg 1.1 <td></td>
2058 pcg 1.3 <td>
2059 pcg 1.4 <b></b> </td>
2060 pcg 1.1 </tr>
2061     <tr>
2062     <td colspan="4">
2063     </td>
2064     </tr>
2065     <tr>
2066     <td>f2</td>
2067 pcg 1.3 <td>U32</td>
2068 pcg 1.1 <td></td>
2069 pcg 1.3 <td>
2070 pcg 1.4 <b></b> </td>
2071 pcg 1.1 </tr>
2072     <tr>
2073     <td colspan="4">
2074     </td>
2075     </tr>
2076     <tr>
2077     <td>komi</td>
2078 pcg 1.6 <td>komi32</td>
2079 pcg 1.1 <td></td>
2080 pcg 1.3 <td>
2081 pcg 1.4 <b></b> </td>
2082 pcg 1.1 </tr>
2083     <tr>
2084     <td colspan="4">
2085     </td>
2086     </tr>
2087     <tr>
2088     <td>i4</td>
2089 pcg 1.3 <td>U32</td>
2090 pcg 1.1 <td></td>
2091 pcg 1.3 <td>
2092 pcg 1.4 <b></b> </td>
2093 pcg 1.1 </tr>
2094     <tr>
2095 pcg 1.4 <td colspan="4">
2096 pcg 1.3 Apparently the i3, f2, i4 are zero.
2097 pcg 1.1 </td>
2098     </tr>
2099     </table>
2100    
2101     <h2>Receive messages</h2>
2102    
2103     <h4>MESSAGE login</h4>
2104     NUMERIC TYPE (hex): 0001 RECV<table border="1">
2105     <tr>
2106     <th>NAME</th>
2107     <th>TYPE</th>
2108     <th>DEFAULT</th>
2109 pcg 1.3 <th>DEC-GUARD</th>
2110 pcg 1.1 </tr>
2111     <tr>
2112     <td colspan="4">
2113     </td>
2114     </tr>
2115     <tr>
2116     <td>result</td>
2117     <td>CONSTANT</td>
2118 pcg 1.3 <td>"login ok"</td>
2119     <td>
2120 pcg 1.4 <b></b> </td>
2121 pcg 1.1 </tr>
2122     <tr>
2123     <td colspan="4">
2124     </td>
2125     </tr>
2126     <tr>
2127     <td>success</td>
2128     <td>CONSTANT</td>
2129     <td>1</td>
2130 pcg 1.3 <td>
2131 pcg 1.4 <b></b> </td>
2132 pcg 1.1 </tr>
2133     <tr>
2134     <td colspan="4">
2135     </td>
2136     </tr>
2137     </table>
2138    
2139     <h4>MESSAGE login</h4>
2140     NUMERIC TYPE (hex): 0002 RECV<table border="1">
2141     <tr>
2142     <th>NAME</th>
2143     <th>TYPE</th>
2144     <th>DEFAULT</th>
2145 pcg 1.3 <th>DEC-GUARD</th>
2146 pcg 1.1 </tr>
2147     <tr>
2148     <td colspan="4">
2149     </td>
2150     </tr>
2151     <tr>
2152     <td>result</td>
2153     <td>CONSTANT</td>
2154 pcg 1.3 <td>"guest login ok"</td>
2155     <td>
2156 pcg 1.4 <b></b> </td>
2157 pcg 1.1 </tr>
2158     <tr>
2159     <td colspan="4">
2160     </td>
2161     </tr>
2162     <tr>
2163     <td>success</td>
2164     <td>CONSTANT</td>
2165     <td>1</td>
2166 pcg 1.3 <td>
2167 pcg 1.4 <b></b> </td>
2168 pcg 1.1 </tr>
2169     <tr>
2170     <td colspan="4">
2171     </td>
2172     </tr>
2173     </table>
2174    
2175     <h4>MESSAGE login</h4>
2176     NUMERIC TYPE (hex): 0003 RECV<table border="1">
2177     <tr>
2178     <th>NAME</th>
2179     <th>TYPE</th>
2180     <th>DEFAULT</th>
2181 pcg 1.3 <th>DEC-GUARD</th>
2182 pcg 1.1 </tr>
2183     <tr>
2184     <td colspan="4">
2185     </td>
2186     </tr>
2187     <tr>
2188     <td>result</td>
2189     <td>CONSTANT</td>
2190 pcg 1.3 <td>"login error 3"</td>
2191     <td>
2192 pcg 1.4 <b></b> </td>
2193 pcg 1.1 </tr>
2194     <tr>
2195     <td colspan="4">
2196     ** maybe more following? **
2197     </td>
2198     </tr>
2199     </table>
2200    
2201     <h4>MESSAGE login</h4>
2202     NUMERIC TYPE (hex): 0004 RECV<table border="1">
2203     <tr>
2204     <th>NAME</th>
2205     <th>TYPE</th>
2206     <th>DEFAULT</th>
2207 pcg 1.3 <th>DEC-GUARD</th>
2208 pcg 1.1 </tr>
2209     <tr>
2210     <td colspan="4">
2211     </td>
2212     </tr>
2213     <tr>
2214     <td>result</td>
2215     <td>CONSTANT</td>
2216 pcg 1.3 <td>"wrong password"</td>
2217     <td>
2218 pcg 1.4 <b></b> </td>
2219 pcg 1.1 </tr>
2220     <tr>
2221     <td colspan="4">
2222     ** maybe more following? **
2223     </td>
2224     </tr>
2225     </table>
2226    
2227     <h4>MESSAGE login</h4>
2228     NUMERIC TYPE (hex): 0005 RECV<table border="1">
2229     <tr>
2230     <th>NAME</th>
2231     <th>TYPE</th>
2232     <th>DEFAULT</th>
2233 pcg 1.3 <th>DEC-GUARD</th>
2234 pcg 1.1 </tr>
2235     <tr>
2236     <td colspan="4">
2237     </td>
2238     </tr>
2239     <tr>
2240     <td>result</td>
2241     <td>CONSTANT</td>
2242 pcg 1.3 <td>"user unknown"</td>
2243     <td>
2244 pcg 1.4 <b></b> </td>
2245 pcg 1.1 </tr>
2246     <tr>
2247     <td colspan="4">
2248     ** maybe more following? **
2249     </td>
2250     </tr>
2251     </table>
2252    
2253     <h4>MESSAGE login</h4>
2254     NUMERIC TYPE (hex): 0006 RECV<table border="1">
2255     <tr>
2256     <th>NAME</th>
2257     <th>TYPE</th>
2258     <th>DEFAULT</th>
2259 pcg 1.3 <th>DEC-GUARD</th>
2260 pcg 1.1 </tr>
2261     <tr>
2262     <td colspan="4">
2263     </td>
2264     </tr>
2265     <tr>
2266     <td>result</td>
2267     <td>CONSTANT</td>
2268 pcg 1.3 <td>"user exists"</td>
2269     <td>
2270 pcg 1.4 <b></b> </td>
2271 pcg 1.1 </tr>
2272     <tr>
2273     <td colspan="4">
2274     ** maybe more following? **
2275     </td>
2276     </tr>
2277     </table>
2278    
2279     <h4>MESSAGE login</h4>
2280     NUMERIC TYPE (hex): 0018 RECV<table border="1">
2281     <tr>
2282     <th>NAME</th>
2283     <th>TYPE</th>
2284     <th>DEFAULT</th>
2285 pcg 1.3 <th>DEC-GUARD</th>
2286 pcg 1.1 </tr>
2287     <tr>
2288     <td colspan="4">
2289     </td>
2290     </tr>
2291     <tr>
2292     <td>result</td>
2293     <td>CONSTANT</td>
2294 pcg 1.3 <td>"login error 18"</td>
2295     <td>
2296 pcg 1.4 <b></b> </td>
2297 pcg 1.1 </tr>
2298     <tr>
2299     <td colspan="4">
2300     ** maybe more following? **
2301     </td>
2302     </tr>
2303     </table>
2304    
2305     <h4>MESSAGE login</h4>
2306     NUMERIC TYPE (hex): 0022 RECV<table border="1">
2307     <tr>
2308     <th>NAME</th>
2309     <th>TYPE</th>
2310     <th>DEFAULT</th>
2311 pcg 1.3 <th>DEC-GUARD</th>
2312 pcg 1.1 </tr>
2313     <tr>
2314     <td colspan="4">
2315     </td>
2316     </tr>
2317     <tr>
2318     <td colspan="4">
2319     </td>
2320     </tr>
2321     <tr>
2322     <td>result</td>
2323     <td>CONSTANT</td>
2324 pcg 1.3 <td>"user or ip blocked"</td>
2325     <td>
2326 pcg 1.4 <b></b> </td>
2327 pcg 1.1 </tr>
2328     <tr>
2329     <td colspan="4">
2330     </td>
2331     </tr>
2332     <tr>
2333     <td>reason</td>
2334     <td>STRING</td>
2335     <td></td>
2336 pcg 1.3 <td>
2337 pcg 1.4 <b></b> </td>
2338 pcg 1.1 </tr>
2339     <tr>
2340     <td colspan="4">
2341     </td>
2342     </tr>
2343     </table>
2344    
2345     <h4>MESSAGE msg_chat</h4>
2346     NUMERIC TYPE (hex): 0013 RECV<table border="1">
2347     <tr>
2348     <th>NAME</th>
2349     <th>TYPE</th>
2350     <th>DEFAULT</th>
2351 pcg 1.3 <th>DEC-GUARD</th>
2352 pcg 1.1 </tr>
2353     <tr>
2354     <td colspan="4">
2355     </td>
2356     </tr>
2357     <tr>
2358     <td>user1</td>
2359 pcg 1.3 <td>username</td>
2360 pcg 1.1 <td></td>
2361 pcg 1.3 <td>
2362 pcg 1.4 <b></b> </td>
2363 pcg 1.1 </tr>
2364     <tr>
2365     <td colspan="4">
2366     </td>
2367     </tr>
2368     <tr>
2369     <td>user2</td>
2370 pcg 1.3 <td>username</td>
2371 pcg 1.1 <td></td>
2372 pcg 1.3 <td>
2373 pcg 1.4 <b></b> </td>
2374 pcg 1.1 </tr>
2375     <tr>
2376     <td colspan="4">
2377     </td>
2378     </tr>
2379     <tr>
2380     <td>message</td>
2381     <td>STRING</td>
2382     <td></td>
2383 pcg 1.3 <td>
2384 pcg 1.4 <b></b> </td>
2385 pcg 1.1 </tr>
2386     <tr>
2387     <td colspan="4">
2388     </td>
2389     </tr>
2390     </table>
2391    
2392     <h4>MESSAGE stats</h4>
2393     NUMERIC TYPE (hex): 0015 RECV<table border="1">
2394     <tr>
2395     <th>NAME</th>
2396     <th>TYPE</th>
2397     <th>DEFAULT</th>
2398 pcg 1.3 <th>DEC-GUARD</th>
2399 pcg 1.1 </tr>
2400     <tr>
2401     <td colspan="4">
2402     </td>
2403     </tr>
2404     <tr>
2405     <td>ver_major</td>
2406 pcg 1.3 <td>U16</td>
2407 pcg 1.1 <td></td>
2408 pcg 1.3 <td>
2409 pcg 1.4 <b></b> </td>
2410 pcg 1.1 </tr>
2411     <tr>
2412     <td colspan="4">
2413     </td>
2414     </tr>
2415     <tr>
2416     <td>ver_minor</td>
2417 pcg 1.3 <td>U16</td>
2418 pcg 1.1 <td></td>
2419 pcg 1.3 <td>
2420 pcg 1.4 <b></b> </td>
2421 pcg 1.1 </tr>
2422     <tr>
2423     <td colspan="4">
2424     </td>
2425     </tr>
2426     <tr>
2427     <td>ver_micro</td>
2428 pcg 1.3 <td>U16</td>
2429 pcg 1.1 <td></td>
2430 pcg 1.3 <td>
2431 pcg 1.4 <b></b> </td>
2432 pcg 1.1 </tr>
2433     <tr>
2434     <td colspan="4">
2435     </td>
2436     </tr>
2437     <tr>
2438     <td>boot_time</td>
2439 pcg 1.3 <td>U64</td>
2440 pcg 1.1 <td></td>
2441 pcg 1.3 <td>
2442 pcg 1.4 <b></b> </td>
2443 pcg 1.1 </tr>
2444     <tr>
2445     <td colspan="4">
2446     </td>
2447     </tr>
2448     <tr>
2449     <td>users_cur</td>
2450 pcg 1.3 <td>U32</td>
2451 pcg 1.1 <td></td>
2452 pcg 1.3 <td>
2453 pcg 1.4 <b></b> </td>
2454 pcg 1.1 </tr>
2455     <tr>
2456     <td colspan="4">
2457     </td>
2458     </tr>
2459     <tr>
2460     <td>users_max</td>
2461 pcg 1.3 <td>U32</td>
2462 pcg 1.1 <td></td>
2463 pcg 1.3 <td>
2464 pcg 1.4 <b></b> </td>
2465 pcg 1.1 </tr>
2466     <tr>
2467     <td colspan="4">
2468     </td>
2469     </tr>
2470     <tr>
2471     <td>users_lim</td>
2472 pcg 1.3 <td>U32</td>
2473 pcg 1.1 <td></td>
2474 pcg 1.3 <td>
2475 pcg 1.4 <b></b> </td>
2476 pcg 1.1 </tr>
2477     <tr>
2478     <td colspan="4">
2479     </td>
2480     </tr>
2481     <tr>
2482     <td>accts_cur</td>
2483 pcg 1.3 <td>U32</td>
2484 pcg 1.1 <td></td>
2485 pcg 1.3 <td>
2486 pcg 1.4 <b></b> </td>
2487 pcg 1.1 </tr>
2488     <tr>
2489     <td colspan="4">
2490     </td>
2491     </tr>
2492     <tr>
2493     <td>accts_max</td>
2494 pcg 1.3 <td>U32</td>
2495 pcg 1.1 <td></td>
2496 pcg 1.3 <td>
2497 pcg 1.4 <b></b> </td>
2498 pcg 1.1 </tr>
2499     <tr>
2500     <td colspan="4">
2501     </td>
2502     </tr>
2503     <tr>
2504     <td>unknown1</td>
2505 pcg 1.3 <td>U32</td>
2506 pcg 1.1 <td></td>
2507 pcg 1.3 <td>
2508 pcg 1.4 <b></b> </td>
2509 pcg 1.1 </tr>
2510     <tr>
2511     <td colspan="4">
2512     </td>
2513     </tr>
2514     <tr>
2515     <td>work_max</td>
2516 pcg 1.3 <td>U32</td>
2517 pcg 1.1 <td></td>
2518 pcg 1.3 <td>
2519 pcg 1.4 <b></b> </td>
2520 pcg 1.1 </tr>
2521     <tr>
2522     <td colspan="4">
2523     </td>
2524     </tr>
2525     <tr>
2526     <td>rooms_cur</td>
2527 pcg 1.3 <td>U32</td>
2528 pcg 1.1 <td></td>
2529 pcg 1.3 <td>
2530 pcg 1.4 <b></b> </td>
2531 pcg 1.1 </tr>
2532     <tr>
2533     <td colspan="4">
2534     </td>
2535     </tr>
2536     <tr>
2537     <td>rooms_max</td>
2538 pcg 1.3 <td>U32</td>
2539 pcg 1.1 <td></td>
2540 pcg 1.3 <td>
2541 pcg 1.4 <b></b> </td>
2542 pcg 1.1 </tr>
2543     <tr>
2544     <td colspan="4">
2545     </td>
2546     </tr>
2547     <tr>
2548     <td>rooms_lim</td>
2549 pcg 1.3 <td>U32</td>
2550 pcg 1.1 <td></td>
2551 pcg 1.3 <td>
2552 pcg 1.4 <b></b> </td>
2553 pcg 1.1 </tr>
2554     <tr>
2555     <td colspan="4">
2556     </td>
2557     </tr>
2558     <tr>
2559     <td>games_cur</td>
2560 pcg 1.3 <td>U32</td>
2561 pcg 1.1 <td></td>
2562 pcg 1.3 <td>
2563 pcg 1.4 <b></b> </td>
2564 pcg 1.1 </tr>
2565     <tr>
2566     <td colspan="4">
2567     </td>
2568     </tr>
2569     <tr>
2570     <td>games_max</td>
2571 pcg 1.3 <td>U32</td>
2572 pcg 1.1 <td></td>
2573 pcg 1.3 <td>
2574 pcg 1.4 <b></b> </td>
2575 pcg 1.1 </tr>
2576     <tr>
2577     <td colspan="4">
2578     </td>
2579     </tr>
2580     <tr>
2581     <td>games_lim</td>
2582 pcg 1.3 <td>U32</td>
2583 pcg 1.1 <td></td>
2584 pcg 1.3 <td>
2585 pcg 1.4 <b></b> </td>
2586 pcg 1.1 </tr>
2587     <tr>
2588     <td colspan="4">
2589     </td>
2590     </tr>
2591     <tr>
2592     <td>results_cur</td>
2593 pcg 1.3 <td>U32</td>
2594 pcg 1.1 <td></td>
2595 pcg 1.3 <td>
2596 pcg 1.4 <b></b> </td>
2597 pcg 1.1 </tr>
2598     <tr>
2599     <td colspan="4">
2600     </td>
2601     </tr>
2602     <tr>
2603     <td>results_max</td>
2604 pcg 1.3 <td>U32</td>
2605 pcg 1.1 <td></td>
2606 pcg 1.3 <td>
2607 pcg 1.4 <b></b> </td>
2608 pcg 1.1 </tr>
2609     <tr>
2610     <td colspan="4">
2611     </td>
2612     </tr>
2613     <tr>
2614     <td>unknown2</td>
2615 pcg 1.3 <td>U32</td>
2616 pcg 1.1 <td></td>
2617 pcg 1.3 <td>
2618 pcg 1.4 <b></b> </td>
2619 pcg 1.1 </tr>
2620     <tr>
2621     <td colspan="4">
2622     </td>
2623     </tr>
2624     <tr>
2625     <td>params_cur</td>
2626 pcg 1.3 <td>U32</td>
2627 pcg 1.1 <td></td>
2628 pcg 1.3 <td>
2629 pcg 1.4 <b></b> </td>
2630 pcg 1.1 </tr>
2631     <tr>
2632     <td colspan="4">
2633     </td>
2634     </tr>
2635     <tr>
2636     <td>params_max</td>
2637 pcg 1.3 <td>U32</td>
2638 pcg 1.1 <td></td>
2639 pcg 1.3 <td>
2640 pcg 1.4 <b></b> </td>
2641 pcg 1.1 </tr>
2642     <tr>
2643     <td colspan="4">
2644     </td>
2645     </tr>
2646     <tr>
2647     <td>bytes_in</td>
2648 pcg 1.3 <td>U64</td>
2649 pcg 1.1 <td></td>
2650 pcg 1.3 <td>
2651 pcg 1.4 <b></b> </td>
2652 pcg 1.1 </tr>
2653     <tr>
2654     <td colspan="4">
2655     </td>
2656     </tr>
2657     <tr>
2658     <td>packets_in</td>
2659 pcg 1.3 <td>U64</td>
2660 pcg 1.1 <td></td>
2661 pcg 1.3 <td>
2662 pcg 1.4 <b></b> </td>
2663 pcg 1.1 </tr>
2664     <tr>
2665     <td colspan="4">
2666     </td>
2667     </tr>
2668     <tr>
2669     <td>bytes_out</td>
2670 pcg 1.3 <td>U64</td>
2671 pcg 1.1 <td></td>
2672 pcg 1.3 <td>
2673 pcg 1.4 <b></b> </td>
2674 pcg 1.1 </tr>
2675     <tr>
2676     <td colspan="4">
2677     </td>
2678     </tr>
2679     <tr>
2680     <td>packets_out</td>
2681 pcg 1.3 <td>U64</td>
2682 pcg 1.1 <td></td>
2683 pcg 1.3 <td>
2684 pcg 1.4 <b></b> </td>
2685 pcg 1.1 </tr>
2686     <tr>
2687 pcg 1.4 <td colspan="4">
2688 pcg 1.1 </td>
2689     </tr>
2690     </table>
2691    
2692     <h4>MESSAGE idle_warn</h4>
2693     NUMERIC TYPE (hex): 0016 RECV<table border="1">
2694     <tr>
2695     <th>NAME</th>
2696     <th>TYPE</th>
2697     <th>DEFAULT</th>
2698 pcg 1.3 <th>DEC-GUARD</th>
2699 pcg 1.1 </tr>
2700     <tr>
2701     <td colspan="4">
2702     idle warning, autologout soon (10 minutes...)
2703     </td>
2704     </tr>
2705     </table>
2706    
2707     <h4>MESSAGE timewarning_default</h4>
2708     NUMERIC TYPE (hex): 001b RECV<table border="1">
2709     <tr>
2710     <th>NAME</th>
2711     <th>TYPE</th>
2712     <th>DEFAULT</th>
2713 pcg 1.3 <th>DEC-GUARD</th>
2714 pcg 1.1 </tr>
2715     <tr>
2716     <td colspan="4">
2717     WILD guess
2718     </td>
2719     </tr>
2720     <tr>
2721     <td>channel</td>
2722 pcg 1.3 <td>U16</td>
2723 pcg 1.1 <td></td>
2724 pcg 1.3 <td>
2725 pcg 1.4 <b></b> </td>
2726 pcg 1.1 </tr>
2727     <tr>
2728     <td colspan="4">
2729     </td>
2730     </tr>
2731     <tr>
2732     <td>time</td>
2733 pcg 1.3 <td>U16</td>
2734 pcg 1.1 <td></td>
2735 pcg 1.3 <td>
2736 pcg 1.4 <b></b> </td>
2737 pcg 1.1 </tr>
2738     <tr>
2739     <td colspan="4">
2740     </td>
2741     </tr>
2742     </table>
2743    
2744     <h4>MESSAGE idle_err</h4>
2745     NUMERIC TYPE (hex): 001c RECV<table border="1">
2746     <tr>
2747     <th>NAME</th>
2748     <th>TYPE</th>
2749     <th>DEFAULT</th>
2750 pcg 1.3 <th>DEC-GUARD</th>
2751 pcg 1.1 </tr>
2752     <tr>
2753     <td colspan="4">
2754     autologout
2755     </td>
2756     </tr>
2757     </table>
2758    
2759     <h4>MESSAGE ping</h4>
2760     NUMERIC TYPE (hex): 001d RECV<table border="1">
2761     <tr>
2762     <th>NAME</th>
2763     <th>TYPE</th>
2764     <th>DEFAULT</th>
2765 pcg 1.3 <th>DEC-GUARD</th>
2766 pcg 1.1 </tr>
2767     <tr>
2768     <td colspan="4">
2769     </td>
2770     </tr>
2771     </table>
2772    
2773     <h4>MESSAGE userpic</h4>
2774     NUMERIC TYPE (hex): 0021 RECV<table border="1">
2775     <tr>
2776     <th>NAME</th>
2777     <th>TYPE</th>
2778     <th>DEFAULT</th>
2779 pcg 1.3 <th>DEC-GUARD</th>
2780 pcg 1.1 </tr>
2781     <tr>
2782     <td colspan="4">
2783     </td>
2784     </tr>
2785     <tr>
2786     <td>name</td>
2787 pcg 1.3 <td>username</td>
2788 pcg 1.1 <td></td>
2789 pcg 1.3 <td>
2790 pcg 1.4 <b></b> </td>
2791 pcg 1.1 </tr>
2792     <tr>
2793     <td colspan="4">
2794     Reply to pic_req, contains an image in jpeg format.
2795     </td>
2796     </tr>
2797     <tr>
2798     <td>data</td>
2799     <td>DATA</td>
2800     <td></td>
2801 pcg 1.3 <td>
2802 pcg 1.4 <b></b> </td>
2803 pcg 1.1 </tr>
2804     <tr>
2805     <td colspan="4">
2806     </td>
2807     </tr>
2808     </table>
2809    
2810     <h4>MESSAGE gnotice</h4>
2811     NUMERIC TYPE (hex): 0100 RECV<table border="1">
2812     <tr>
2813     <th>NAME</th>
2814     <th>TYPE</th>
2815     <th>DEFAULT</th>
2816 pcg 1.3 <th>DEC-GUARD</th>
2817 pcg 1.1 </tr>
2818     <tr>
2819     <td colspan="4">
2820     global notice, sent to everybody
2821     </td>
2822     </tr>
2823     <tr>
2824     <td>notice</td>
2825     <td>STRING</td>
2826     <td></td>
2827 pcg 1.3 <td>
2828 pcg 1.4 <b></b> </td>
2829 pcg 1.1 </tr>
2830     <tr>
2831     <td colspan="4">
2832     </td>
2833     </tr>
2834     </table>
2835    
2836    
2837     <h4>MESSAGE priv_room</h4>
2838     NUMERIC TYPE (hex): 0310 RECV<table border="1">
2839     <tr>
2840     <th>NAME</th>
2841     <th>TYPE</th>
2842     <th>DEFAULT</th>
2843 pcg 1.3 <th>DEC-GUARD</th>
2844 pcg 1.1 </tr>
2845     <tr>
2846     <td colspan="4">
2847     "permission denied" when joining a room
2848     </td>
2849     </tr>
2850     <tr>
2851     <td>name</td>
2852     <td>STRING</td>
2853     <td></td>
2854 pcg 1.3 <td>
2855 pcg 1.4 <b></b> </td>
2856 pcg 1.1 </tr>
2857     <tr>
2858     <td colspan="4">
2859     </td>
2860     </tr>
2861     </table>
2862    
2863     <h4>MESSAGE upd_rooms</h4>
2864     NUMERIC TYPE (hex): 0318 RECV<table border="1">
2865     <tr>
2866     <th>NAME</th>
2867     <th>TYPE</th>
2868     <th>DEFAULT</th>
2869 pcg 1.3 <th>DEC-GUARD</th>
2870 pcg 1.1 </tr>
2871     <tr>
2872     <td colspan="4">
2873     </td>
2874     </tr>
2875     <tr>
2876     <td>rooms</td>
2877     <td>room</td>
2878     <td></td>
2879 pcg 1.3 <td>
2880 pcg 1.4 <b></b> </td>
2881 pcg 1.1 </tr>
2882     <tr>
2883     <td colspan="4">
2884     </td>
2885     </tr>
2886     </table>
2887    
2888     <h4>MESSAGE upd_game2</h4>
2889     NUMERIC TYPE (hex): 041c RECV<table border="1">
2890     <tr>
2891     <th>NAME</th>
2892     <th>TYPE</th>
2893     <th>DEFAULT</th>
2894 pcg 1.3 <th>DEC-GUARD</th>
2895 pcg 1.1 </tr>
2896     <tr>
2897     <td colspan="4">
2898     </td>
2899     </tr>
2900     <tr>
2901     <td>channel_junk</td>
2902 pcg 1.3 <td>U16</td>
2903 pcg 1.1 <td></td>
2904 pcg 1.3 <td>
2905 pcg 1.4 <b></b> </td>
2906 pcg 1.1 </tr>
2907     <tr>
2908     <td colspan="4">
2909     </td>
2910     </tr>
2911     <tr>
2912     <td>game</td>
2913     <td>game</td>
2914     <td></td>
2915 pcg 1.3 <td>
2916 pcg 1.4 <b></b> </td>
2917 pcg 1.1 </tr>
2918     <tr>
2919     <td colspan="4">
2920     </td>
2921     </tr>
2922     </table>
2923    
2924     <h4>MESSAGE upd_user</h4>
2925     NUMERIC TYPE (hex): 0202 RECV<table border="1">
2926     <tr>
2927     <th>NAME</th>
2928     <th>TYPE</th>
2929     <th>DEFAULT</th>
2930 pcg 1.3 <th>DEC-GUARD</th>
2931 pcg 1.1 </tr>
2932     <tr>
2933     <td colspan="4">
2934     # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
2935     </td>
2936     </tr>
2937     <tr>
2938     <td>location</td>
2939 pcg 1.3 <td>U32</td>
2940 pcg 1.1 <td></td>
2941 pcg 1.3 <td>
2942 pcg 1.4 <b></b> </td>
2943 pcg 1.1 </tr>
2944     <tr>
2945     <td colspan="4">
2946     </td>
2947     </tr>
2948     <tr>
2949     <td>user</td>
2950     <td>user</td>
2951     <td></td>
2952 pcg 1.3 <td>
2953 pcg 1.4 <b></b> </td>
2954 pcg 1.1 </tr>
2955     <tr>
2956     <td colspan="4">
2957     </td>
2958     </tr>
2959     <tr>
2960     <td>lotsofinfo</td>
2961     <td>DATA</td>
2962     <td></td>
2963 pcg 1.3 <td>
2964 pcg 1.4 <b>location</b> == 2</td>
2965 pcg 1.1 </tr>
2966     <tr>
2967     <td colspan="4">
2968     </td>
2969     </tr>
2970     </table>
2971    
2972     <h3>Room messages</h3>
2973    
2974     <p>Not all room messages are for rooms only, and rooms need to parse
2975     not only these messages. Orthogonality, what for?</p>
2976    
2977     <h4>MESSAGE join_room</h4>
2978     NUMERIC TYPE (hex): 4300 RECV<table border="1">
2979     <tr>
2980     <th>NAME</th>
2981     <th>TYPE</th>
2982     <th>DEFAULT</th>
2983 pcg 1.3 <th>DEC-GUARD</th>
2984 pcg 1.1 </tr>
2985     <tr>
2986     <td colspan="4">
2987     </td>
2988     </tr>
2989     <tr>
2990     <td>channel</td>
2991 pcg 1.3 <td>U16</td>
2992 pcg 1.1 <td></td>
2993 pcg 1.3 <td>
2994 pcg 1.4 <b></b> </td>
2995 pcg 1.1 </tr>
2996     <tr>
2997     <td colspan="4">
2998     </td>
2999     </tr>
3000     <tr>
3001     <td>users</td>
3002     <td>user</td>
3003     <td></td>
3004 pcg 1.3 <td>
3005 pcg 1.4 <b></b> </td>
3006 pcg 1.1 </tr>
3007     <tr>
3008     <td colspan="4">
3009     </td>
3010     </tr>
3011     </table>
3012    
3013     <h4>MESSAGE msg_room</h4>
3014     NUMERIC TYPE (hex): 4301 RECV<table border="1">
3015     <tr>
3016     <th>NAME</th>
3017     <th>TYPE</th>
3018     <th>DEFAULT</th>
3019 pcg 1.3 <th>DEC-GUARD</th>
3020 pcg 1.1 </tr>
3021     <tr>
3022     <td colspan="4">
3023     </td>
3024     </tr>
3025     <tr>
3026     <td>channel</td>
3027 pcg 1.3 <td>U16</td>
3028 pcg 1.1 <td></td>
3029 pcg 1.3 <td>
3030 pcg 1.4 <b></b> </td>
3031 pcg 1.1 </tr>
3032     <tr>
3033     <td colspan="4">
3034     </td>
3035     </tr>
3036     <tr>
3037     <td>name</td>
3038 pcg 1.3 <td>username</td>
3039 pcg 1.1 <td></td>
3040 pcg 1.3 <td>
3041 pcg 1.4 <b></b> </td>
3042 pcg 1.1 </tr>
3043     <tr>
3044     <td colspan="4">
3045     </td>
3046     </tr>
3047     <tr>
3048     <td>message</td>
3049     <td>STRING</td>
3050     <td></td>
3051 pcg 1.3 <td>
3052 pcg 1.4 <b></b> </td>
3053 pcg 1.1 </tr>
3054     <tr>
3055     <td colspan="4">
3056     </td>
3057     </tr>
3058     </table>
3059    
3060     <h4>MESSAGE part_room</h4>
3061     NUMERIC TYPE (hex): 4302 RECV<table border="1">
3062     <tr>
3063     <th>NAME</th>
3064     <th>TYPE</th>
3065     <th>DEFAULT</th>
3066 pcg 1.3 <th>DEC-GUARD</th>
3067 pcg 1.1 </tr>
3068     <tr>
3069     <td colspan="4">
3070     </td>
3071     </tr>
3072     <tr>
3073     <td>channel</td>
3074 pcg 1.3 <td>U16</td>
3075 pcg 1.1 <td></td>
3076 pcg 1.3 <td>
3077 pcg 1.4 <b></b> </td>
3078 pcg 1.1 </tr>
3079     <tr>
3080     <td colspan="4">
3081     </td>
3082     </tr>
3083     <tr>
3084     <td>user</td>
3085     <td>user</td>
3086     <td></td>
3087 pcg 1.3 <td>
3088 pcg 1.4 <b></b> </td>
3089 pcg 1.1 </tr>
3090     <tr>
3091     <td colspan="4">
3092     </td>
3093     </tr>
3094     </table>
3095    
3096     <h4>MESSAGE del_room</h4>
3097     NUMERIC TYPE (hex): 4303 RECV<table border="1">
3098     <tr>
3099     <th>NAME</th>
3100     <th>TYPE</th>
3101     <th>DEFAULT</th>
3102 pcg 1.3 <th>DEC-GUARD</th>
3103 pcg 1.1 </tr>
3104     <tr>
3105     <td colspan="4">
3106     </td>
3107     </tr>
3108     <tr>
3109     <td>channel</td>
3110 pcg 1.3 <td>U16</td>
3111 pcg 1.1 <td></td>
3112 pcg 1.3 <td>
3113 pcg 1.4 <b></b> </td>
3114 pcg 1.1 </tr>
3115     <tr>
3116     <td colspan="4">
3117    
3118     </td>
3119     </tr>
3120     </table>
3121    
3122     <h4>MESSAGE upd_games</h4>
3123     NUMERIC TYPE (hex): 4304 RECV<table border="1">
3124     <tr>
3125     <th>NAME</th>
3126     <th>TYPE</th>
3127     <th>DEFAULT</th>
3128 pcg 1.3 <th>DEC-GUARD</th>
3129 pcg 1.1 </tr>
3130     <tr>
3131     <td colspan="4">
3132     </td>
3133     </tr>
3134     <tr>
3135     <td>channel</td>
3136 pcg 1.3 <td>U16</td>
3137 pcg 1.1 <td></td>
3138 pcg 1.3 <td>
3139 pcg 1.4 <b></b> </td>
3140 pcg 1.1 </tr>
3141     <tr>
3142     <td colspan="4">
3143     </td>
3144     </tr>
3145     <tr>
3146     <td>games</td>
3147     <td>game</td>
3148     <td></td>
3149 pcg 1.3 <td>
3150 pcg 1.4 <b></b> </td>
3151 pcg 1.1 </tr>
3152     <tr>
3153     <td colspan="4">
3154     </td>
3155     </tr>
3156     </table>
3157    
3158     <h4>MESSAGE desc_room</h4>
3159     NUMERIC TYPE (hex): 4319 RECV<table border="1">
3160     <tr>
3161     <th>NAME</th>
3162     <th>TYPE</th>
3163     <th>DEFAULT</th>
3164 pcg 1.3 <th>DEC-GUARD</th>
3165 pcg 1.1 </tr>
3166     <tr>
3167     <td colspan="4">
3168     </td>
3169     </tr>
3170     <tr>
3171     <td>channel</td>
3172 pcg 1.3 <td>U16</td>
3173 pcg 1.1 <td></td>
3174 pcg 1.3 <td>
3175 pcg 1.4 <b></b> </td>
3176 pcg 1.1 </tr>
3177     <tr>
3178     <td colspan="4">
3179     </td>
3180     </tr>
3181     <tr>
3182     <td>owner</td>
3183 pcg 1.3 <td>username</td>
3184 pcg 1.1 <td></td>
3185 pcg 1.3 <td>
3186 pcg 1.4 <b></b> </td>
3187 pcg 1.1 </tr>
3188     <tr>
3189     <td colspan="4">
3190     </td>
3191     </tr>
3192     <tr>
3193     <td>description</td>
3194     <td>STRING</td>
3195     <td></td>
3196 pcg 1.3 <td>
3197 pcg 1.4 <b></b> </td>
3198 pcg 1.1 </tr>
3199     <tr>
3200     <td colspan="4">
3201     </td>
3202     </tr>
3203     </table>
3204    
3205    
3206     <h4>MESSAGE chal_defaults</h4>
3207     NUMERIC TYPE (hex): 0411 RECV<table border="1">
3208     <tr>
3209     <th>NAME</th>
3210     <th>TYPE</th>
3211     <th>DEFAULT</th>
3212 pcg 1.3 <th>DEC-GUARD</th>
3213 pcg 1.1 </tr>
3214     <tr>
3215     <td colspan="4">
3216     </td>
3217     </tr>
3218     <tr>
3219     <td>channel</td>
3220 pcg 1.3 <td>U16</td>
3221 pcg 1.1 <td></td>
3222 pcg 1.3 <td>
3223 pcg 1.4 <b></b> </td>
3224 pcg 1.1 </tr>
3225     <tr>
3226     <td colspan="4">
3227     </td>
3228     </tr>
3229     <tr>
3230     <td>defaults</td>
3231     <td>challenge_defaults</td>
3232     <td></td>
3233 pcg 1.3 <td>
3234 pcg 1.4 <b></b> </td>
3235 pcg 1.1 </tr>
3236     <tr>
3237     <td colspan="4">
3238     </td>
3239     </tr>
3240     </table>
3241    
3242     <h3>Game messages</h3>
3243    
3244     <h4>MESSAGE upd_chal</h4>
3245     NUMERIC TYPE (hex): 4400 RECV<table border="1">
3246     <tr>
3247     <th>NAME</th>
3248     <th>TYPE</th>
3249     <th>DEFAULT</th>
3250 pcg 1.3 <th>DEC-GUARD</th>
3251 pcg 1.1 </tr>
3252     <tr>
3253     <td colspan="4">
3254     Unclear.
3255     </td>
3256     </tr>
3257     <tr>
3258     <td>channel</td>
3259 pcg 1.3 <td>U16</td>
3260 pcg 1.1 <td></td>
3261 pcg 1.3 <td>
3262 pcg 1.4 <b></b> </td>
3263 pcg 1.1 </tr>
3264     <tr>
3265     <td colspan="4">
3266     </td>
3267     </tr>
3268     <tr>
3269     <td>challenge</td>
3270     <td>challenge</td>
3271     <td></td>
3272 pcg 1.3 <td>
3273 pcg 1.4 <b></b> </td>
3274 pcg 1.1 </tr>
3275     <tr>
3276     <td colspan="4">
3277     </td>
3278     </tr>
3279     </table>
3280    
3281     <h4>MESSAGE upd_game</h4>
3282     NUMERIC TYPE (hex): 4401 RECV<table border="1">
3283     <tr>
3284     <th>NAME</th>
3285     <th>TYPE</th>
3286     <th>DEFAULT</th>
3287 pcg 1.3 <th>DEC-GUARD</th>
3288 pcg 1.1 </tr>
3289     <tr>
3290     <td colspan="4">
3291     </td>
3292     </tr>
3293     <tr>
3294     <td>channel</td>
3295 pcg 1.3 <td>U16</td>
3296 pcg 1.1 <td></td>
3297 pcg 1.3 <td>
3298 pcg 1.4 <b></b> </td>
3299 pcg 1.1 </tr>
3300     <tr>
3301     <td colspan="4">
3302     </td>
3303     </tr>
3304     <tr>
3305     <td>game</td>
3306     <td>game</td>
3307     <td></td>
3308 pcg 1.3 <td>
3309 pcg 1.4 <b></b> </td>
3310 pcg 1.1 </tr>
3311     <tr>
3312     <td colspan="4">
3313     </td>
3314     </tr>
3315     </table>
3316    
3317     <h4>MESSAGE del_game</h4>
3318     NUMERIC TYPE (hex): 4402 RECV<table border="1">
3319     <tr>
3320     <th>NAME</th>
3321     <th>TYPE</th>
3322     <th>DEFAULT</th>
3323 pcg 1.3 <th>DEC-GUARD</th>
3324 pcg 1.1 </tr>
3325     <tr>
3326     <td colspan="4">
3327     </td>
3328     </tr>
3329     <tr>
3330     <td>channel</td>
3331 pcg 1.3 <td>U16</td>
3332 pcg 1.1 <td></td>
3333 pcg 1.3 <td>
3334 pcg 1.4 <b></b> </td>
3335 pcg 1.1 </tr>
3336     <tr>
3337     <td colspan="4">
3338     </td>
3339     </tr>
3340     </table>
3341    
3342     <h4>MESSAGE upd_observers</h4>
3343     NUMERIC TYPE (hex): 4403 RECV<table border="1">
3344     <tr>
3345     <th>NAME</th>
3346     <th>TYPE</th>
3347     <th>DEFAULT</th>
3348 pcg 1.3 <th>DEC-GUARD</th>
3349 pcg 1.1 </tr>
3350     <tr>
3351     <td colspan="4">
3352     </td>
3353     </tr>
3354     <tr>
3355     <td>channel</td>
3356 pcg 1.3 <td>U16</td>
3357 pcg 1.1 <td></td>
3358 pcg 1.3 <td>
3359 pcg 1.4 <b></b> </td>
3360 pcg 1.1 </tr>
3361     <tr>
3362     <td colspan="4">
3363     </td>
3364     </tr>
3365     <tr>
3366     <td>users</td>
3367     <td>user</td>
3368     <td></td>
3369 pcg 1.3 <td>
3370 pcg 1.4 <b></b> </td>
3371 pcg 1.1 </tr>
3372     <tr>
3373     <td colspan="4">
3374     </td>
3375     </tr>
3376     </table>
3377    
3378     <h4>MESSAGE del_observer</h4>
3379     NUMERIC TYPE (hex): 4404 RECV<table border="1">
3380     <tr>
3381     <th>NAME</th>
3382     <th>TYPE</th>
3383     <th>DEFAULT</th>
3384 pcg 1.3 <th>DEC-GUARD</th>
3385 pcg 1.1 </tr>
3386     <tr>
3387     <td colspan="4">
3388     </td>
3389     </tr>
3390     <tr>
3391     <td>channel</td>
3392 pcg 1.3 <td>U16</td>
3393 pcg 1.1 <td></td>
3394 pcg 1.3 <td>
3395 pcg 1.4 <b></b> </td>
3396 pcg 1.1 </tr>
3397     <tr>
3398     <td colspan="4">
3399     </td>
3400     </tr>
3401     <tr>
3402     <td>name</td>
3403 pcg 1.3 <td>username</td>
3404 pcg 1.1 <td></td>
3405 pcg 1.3 <td>
3406 pcg 1.4 <b></b> </td>
3407 pcg 1.1 </tr>
3408     <tr>
3409     <td colspan="4">
3410     </td>
3411     </tr>
3412     </table>
3413    
3414     <h4>MESSAGE set_tree</h4>
3415     NUMERIC TYPE (hex): 4405 RECV<table border="1">
3416     <tr>
3417     <th>NAME</th>
3418     <th>TYPE</th>
3419     <th>DEFAULT</th>
3420 pcg 1.3 <th>DEC-GUARD</th>
3421 pcg 1.1 </tr>
3422     <tr>
3423     <td colspan="4">
3424     </td>
3425     </tr>
3426     <tr>
3427     <td>channel</td>
3428 pcg 1.3 <td>U16</td>
3429 pcg 1.1 <td></td>
3430 pcg 1.3 <td>
3431 pcg 1.4 <b></b> </td>
3432 pcg 1.1 </tr>
3433     <tr>
3434     <td colspan="4">
3435     </td>
3436     </tr>
3437     <tr>
3438     <td>tree</td>
3439     <td>TREE</td>
3440     <td></td>
3441 pcg 1.3 <td>
3442 pcg 1.4 <b></b> </td>
3443 pcg 1.1 </tr>
3444     <tr>
3445     <td colspan="4">
3446     </td>
3447     </tr>
3448     </table>
3449    
3450     <h4>MESSAGE upd_tree</h4>
3451     NUMERIC TYPE (hex): 4406 RECV<table border="1">
3452     <tr>
3453     <th>NAME</th>
3454     <th>TYPE</th>
3455     <th>DEFAULT</th>
3456 pcg 1.3 <th>DEC-GUARD</th>
3457 pcg 1.1 </tr>
3458     <tr>
3459     <td colspan="4">
3460     </td>
3461     </tr>
3462     <tr>
3463     <td>channel</td>
3464 pcg 1.3 <td>U16</td>
3465 pcg 1.1 <td></td>
3466 pcg 1.3 <td>
3467 pcg 1.4 <b></b> </td>
3468 pcg 1.1 </tr>
3469     <tr>
3470     <td colspan="4">
3471     </td>
3472     </tr>
3473     <tr>
3474     <td>tree</td>
3475     <td>TREE</td>
3476     <td></td>
3477 pcg 1.3 <td>
3478 pcg 1.4 <b></b> </td>
3479 pcg 1.1 </tr>
3480     <tr>
3481     <td colspan="4">
3482     </td>
3483     </tr>
3484     </table>
3485    
3486     <h4>MESSAGE set_node</h4>
3487     NUMERIC TYPE (hex): 4407 RECV<table border="1">
3488     <tr>
3489     <th>NAME</th>
3490     <th>TYPE</th>
3491     <th>DEFAULT</th>
3492 pcg 1.3 <th>DEC-GUARD</th>
3493 pcg 1.1 </tr>
3494     <tr>
3495     <td colspan="4">
3496     </td>
3497     </tr>
3498     <tr>
3499     <td>channel</td>
3500 pcg 1.3 <td>U16</td>
3501 pcg 1.1 <td></td>
3502 pcg 1.3 <td>
3503 pcg 1.4 <b></b> </td>
3504 pcg 1.1 </tr>
3505     <tr>
3506     <td colspan="4">
3507     </td>
3508     </tr>
3509     <tr>
3510     <td>node</td>
3511 pcg 1.3 <td>U32</td>
3512 pcg 1.1 <td></td>
3513 pcg 1.3 <td>
3514 pcg 1.4 <b></b> </td>
3515 pcg 1.1 </tr>
3516     <tr>
3517     <td colspan="4">
3518     </td>
3519     </tr>
3520     </table>
3521    
3522     <h4>MESSAGE superko</h4>
3523     NUMERIC TYPE (hex): 4409 RECV<table border="1">
3524     <tr>
3525     <th>NAME</th>
3526     <th>TYPE</th>
3527     <th>DEFAULT</th>
3528 pcg 1.3 <th>DEC-GUARD</th>
3529 pcg 1.1 </tr>
3530     <tr>
3531     <td colspan="4">
3532     Superko-warning.
3533     </td>
3534     </tr>
3535     <tr>
3536     <td>channel</td>
3537 pcg 1.3 <td>U16</td>
3538 pcg 1.1 <td></td>
3539 pcg 1.3 <td>
3540 pcg 1.4 <b></b> </td>
3541 pcg 1.1 </tr>
3542     <tr>
3543     <td colspan="4">
3544     </td>
3545     </tr>
3546     </table>
3547    
3548     <h4>MESSAGE final_result</h4>
3549     NUMERIC TYPE (hex): 440b RECV<table border="1">
3550     <tr>
3551     <th>NAME</th>
3552     <th>TYPE</th>
3553     <th>DEFAULT</th>
3554 pcg 1.3 <th>DEC-GUARD</th>
3555 pcg 1.1 </tr>
3556     <tr>
3557     <td colspan="4">
3558     </td>
3559     </tr>
3560     <tr>
3561     <td>channel</td>
3562 pcg 1.3 <td>U16</td>
3563 pcg 1.1 <td></td>
3564 pcg 1.3 <td>
3565 pcg 1.4 <b></b> </td>
3566 pcg 1.1 </tr>
3567     <tr>
3568     <td colspan="4">
3569     </td>
3570     </tr>
3571     <tr>
3572     <td>blackscore</td>
3573 pcg 1.10 <td>scorevalues</td>
3574 pcg 1.1 <td></td>
3575 pcg 1.3 <td>
3576 pcg 1.4 <b></b> </td>
3577 pcg 1.1 </tr>
3578     <tr>
3579     <td colspan="4">
3580     </td>
3581     </tr>
3582     <tr>
3583     <td>whitescore</td>
3584 pcg 1.10 <td>scorevalues</td>
3585 pcg 1.1 <td></td>
3586 pcg 1.3 <td>
3587 pcg 1.4 <b></b> </td>
3588 pcg 1.1 </tr>
3589     <tr>
3590     <td colspan="4">
3591     </td>
3592     </tr>
3593     </table>
3594    
3595     <h4>MESSAGE req_undo</h4>
3596     NUMERIC TYPE (hex): 440e RECV<table border="1">
3597     <tr>
3598     <th>NAME</th>
3599     <th>TYPE</th>
3600     <th>DEFAULT</th>
3601 pcg 1.3 <th>DEC-GUARD</th>
3602 pcg 1.1 </tr>
3603     <tr>
3604     <td colspan="4">
3605     </td>
3606     </tr>
3607     <tr>
3608     <td>channel</td>
3609 pcg 1.3 <td>U16</td>
3610 pcg 1.1 <td></td>
3611 pcg 1.3 <td>
3612 pcg 1.4 <b></b> </td>
3613 pcg 1.1 </tr>
3614     <tr>
3615     <td colspan="4">
3616    
3617     </td>
3618     </tr>
3619     </table>
3620    
3621     <h4>MESSAGE resign_game</h4>
3622     NUMERIC TYPE (hex): 4410 RECV<table border="1">
3623     <tr>
3624     <th>NAME</th>
3625     <th>TYPE</th>
3626     <th>DEFAULT</th>
3627 pcg 1.3 <th>DEC-GUARD</th>
3628 pcg 1.1 </tr>
3629     <tr>
3630     <td colspan="4">
3631     </td>
3632     </tr>
3633     <tr>
3634     <td>channel</td>
3635 pcg 1.3 <td>U16</td>
3636 pcg 1.1 <td></td>
3637 pcg 1.3 <td>
3638 pcg 1.4 <b></b> </td>
3639 pcg 1.1 </tr>
3640     <tr>
3641     <td colspan="4">
3642     </td>
3643     </tr>
3644     <tr>
3645     <td>player</td>
3646 pcg 1.3 <td>U8</td>
3647 pcg 1.1 <td></td>
3648 pcg 1.3 <td>
3649 pcg 1.4 <b></b> </td>
3650 pcg 1.1 </tr>
3651     <tr>
3652     <td colspan="4">
3653     </td>
3654     </tr>
3655     </table>
3656    
3657     <h4>MESSAGE set_teacher</h4>
3658     NUMERIC TYPE (hex): 441a RECV<table border="1">
3659     <tr>
3660     <th>NAME</th>
3661     <th>TYPE</th>
3662     <th>DEFAULT</th>
3663 pcg 1.3 <th>DEC-GUARD</th>
3664 pcg 1.1 </tr>
3665     <tr>
3666     <td colspan="4">
3667     </td>
3668     </tr>
3669     <tr>
3670     <td>channel</td>
3671 pcg 1.3 <td>U16</td>
3672 pcg 1.1 <td></td>
3673 pcg 1.3 <td>
3674 pcg 1.4 <b></b> </td>
3675 pcg 1.1 </tr>
3676     <tr>
3677     <td colspan="4">
3678     </td>
3679     </tr>
3680     <tr>
3681     <td>name</td>
3682 pcg 1.3 <td>username</td>
3683 pcg 1.1 <td></td>
3684 pcg 1.3 <td>
3685 pcg 1.4 <b></b> </td>
3686 pcg 1.1 </tr>
3687     <tr>
3688     <td colspan="4">
3689     </td>
3690     </tr>
3691     </table>
3692    
3693     <h4>MESSAGE owner_left</h4>
3694     NUMERIC TYPE (hex): 441d RECV<table border="1">
3695     <tr>
3696     <th>NAME</th>
3697     <th>TYPE</th>
3698     <th>DEFAULT</th>
3699 pcg 1.3 <th>DEC-GUARD</th>
3700 pcg 1.1 </tr>
3701     <tr>
3702     <td colspan="4">
3703     Unclear.
3704     </td>
3705     </tr>
3706     <tr>
3707     <td>channel</td>
3708 pcg 1.3 <td>U16</td>
3709 pcg 1.1 <td></td>
3710 pcg 1.3 <td>
3711 pcg 1.4 <b></b> </td>
3712 pcg 1.1 </tr>
3713     <tr>
3714     <td colspan="4">
3715     </td>
3716     </tr>
3717     </table>
3718    
3719     <h4>MESSAGE teacher_left</h4>
3720     NUMERIC TYPE (hex): 441e RECV<table border="1">
3721     <tr>
3722     <th>NAME</th>
3723     <th>TYPE</th>
3724     <th>DEFAULT</th>
3725 pcg 1.3 <th>DEC-GUARD</th>
3726 pcg 1.1 </tr>
3727     <tr>
3728     <td colspan="4">
3729     Unclear.
3730     </td>
3731     </tr>
3732     <tr>
3733     <td>channel</td>
3734 pcg 1.3 <td>U16</td>
3735 pcg 1.1 <td></td>
3736 pcg 1.3 <td>
3737 pcg 1.4 <b></b> </td>
3738 pcg 1.1 </tr>
3739     <tr>
3740     <td colspan="4">
3741     </td>
3742     </tr>
3743     </table>
3744    
3745     <h4>MESSAGE unknown4422</h4>
3746     NUMERIC TYPE (hex): 4422 RECV<table border="1">
3747     <tr>
3748     <th>NAME</th>
3749     <th>TYPE</th>
3750     <th>DEFAULT</th>
3751 pcg 1.3 <th>DEC-GUARD</th>
3752 pcg 1.1 </tr>
3753     <tr>
3754     <td colspan="4">
3755     change teacher? something to do with editing?
3756     </td>
3757     </tr>
3758     <tr>
3759     <td>channel</td>
3760 pcg 1.3 <td>U16</td>
3761 pcg 1.1 <td></td>
3762 pcg 1.3 <td>
3763 pcg 1.4 <b></b> </td>
3764 pcg 1.1 </tr>
3765     <tr>
3766     <td colspan="4">
3767     </td>
3768     </tr>
3769     <tr>
3770     <td>name1</td>
3771 pcg 1.3 <td>username</td>
3772 pcg 1.1 <td></td>
3773 pcg 1.3 <td>
3774 pcg 1.4 <b></b> </td>
3775 pcg 1.1 </tr>
3776     <tr>
3777     <td colspan="4">
3778     </td>
3779     </tr>
3780     <tr>
3781     <td>name2</td>
3782 pcg 1.3 <td>username</td>
3783 pcg 1.1 <td></td>
3784 pcg 1.3 <td>
3785 pcg 1.4 <b></b> </td>
3786 pcg 1.1 </tr>
3787     <tr>
3788     <td colspan="4">
3789     </td>
3790     </tr>
3791     </table>
3792    
3793     <h4>MESSAGE req_result</h4>
3794     NUMERIC TYPE (hex): 4433 RECV<table border="1">
3795     <tr>
3796     <th>NAME</th>
3797     <th>TYPE</th>
3798     <th>DEFAULT</th>
3799 pcg 1.3 <th>DEC-GUARD</th>
3800 pcg 1.1 </tr>
3801     <tr>
3802     <td colspan="4">
3803     Unclear.
3804     </td>
3805     </tr>
3806     <tr>
3807     <td>channel</td>
3808 pcg 1.3 <td>U16</td>
3809 pcg 1.1 <td></td>
3810 pcg 1.3 <td>
3811 pcg 1.4 <b></b> </td>
3812 pcg 1.1 </tr>
3813     <tr>
3814     <td colspan="4">
3815     # # recv_result(?)
3816     </td>
3817     </tr>
3818     </table>
3819    
3820     <h4>MESSAGE unknown4434</h4>
3821     NUMERIC TYPE (hex): 4434 RECV<table border="1">
3822     <tr>
3823     <th>NAME</th>
3824     <th>TYPE</th>
3825     <th>DEFAULT</th>
3826 pcg 1.3 <th>DEC-GUARD</th>
3827 pcg 1.1 </tr>
3828     <tr>
3829     <td colspan="4">
3830     </td>
3831     </tr>
3832     <tr>
3833     <td>channel</td>
3834 pcg 1.3 <td>U16</td>
3835 pcg 1.1 <td></td>
3836 pcg 1.3 <td>
3837 pcg 1.4 <b></b> </td>
3838 pcg 1.1 </tr>
3839     <tr>
3840     <td colspan="4">
3841     </td>
3842     </tr>
3843     <tr>
3844     <td>b1</td>
3845 pcg 1.3 <td>U8</td>
3846 pcg 1.1 <td></td>
3847 pcg 1.3 <td>
3848 pcg 1.4 <b></b> </td>
3849 pcg 1.1 </tr>
3850     <tr>
3851     <td colspan="4">
3852     ?? !demonstration game??
3853     </td>
3854     </tr>
3855     </table>
3856    
3857     </body>
3858     </html>