ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.20
Committed: Mon Jun 16 20:50:29 2003 UTC (20 years, 11 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.19: +2 -2 lines
Log Message:
*** empty log message ***

File Contents

# Content
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 <h1>$Revision: 1.20 $</h1>
25
26 <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 <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 <p>If you feel you need to update the visual appearance of this
44 document, feel free to look <tt>doc/doc2html.xsl</tt> and improve
45 it.</p>
46
47 <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 <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 <p>Everything on the wire is in little-endian format (what a shame).</p>
59
60 <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
66 <p>For the rest, go figure or bug me, <a href="mailto:pcg@goof.com">Marc Lehmann &lt;pcg@goof.com&gt;</a>
67 </p>
68
69 <h2>Stream and message structure.</h2>
70
71 <p>After connecting to the server, a handshake byte is sent. It's
72 the major version number of the protocol the client expects to
73 receive. Version 3 and 4 are mostly the same, except that Version 4
74 clients expect server messages to be compressed, version 3 clients
75 not.</p>
76
77 <p>The server sends back his protocol number, which is always 3 in
78 the current protocol. Most of the protocol variation is determined by
79 the server using the client version that is used in the initial login
80 message, not the initial handshake byte.</p>
81
82 <p>After the initial handshake, the client sends uncompressed
83 messages, while the server sends back a zlib-compressed
84 stream (<a href="http://rfc1950.x42.com/">rfc1950</a> and <a href="http://rfc1950.x42.com/">rfc1951</a>).</p>
85
86 <p>All messages have the same header:</p>
87
88 <h4>STRUCTURE message_header</h4>
89 <p>
90 </p>
91 <table border="1" width="100%">
92 <tr>
93 <th width="10%">NAME</th>
94 <th width="10%">TYPE</th>
95 <th width="15%">DEFAULT</th>
96 <th>DESCRIPTION</th>
97 <th width="15%">DEC-GUARD</th>
98 </tr>
99 <tr>
100 <td>_unknown</td>
101 <td>U16</td>
102 <td> </td>
103 <td>
104
105  
106 </td>
107 <td>
108 <b></b>
109  
110 </td>
111 </tr>
112 <tr>
113 <td>length</td>
114 <td>U16</td>
115 <td> </td>
116 <td>
117
118  
119 </td>
120 <td>
121 <b></b>
122  
123 </td>
124 </tr>
125 <tr>
126 <td>type</td>
127 <td>U16</td>
128 <td> </td>
129 <td>
130
131  
132 </td>
133 <td>
134 <b></b>
135  
136 </td>
137 </tr>
138 </table>
139
140 <h2>Primitive types used in the protocol.</h2>
141
142 <p>Apart from the basic types, I need to define some extra types to
143 deal with fixed-point values (based on integer types) or fixed-length
144 strings (either 7-bit-ascii or more limited (<code>A</code>), or UCS-2
145 based (<code>S</code>)).</p>
146
147 <h4>TYPE username</h4>
148 BASE TYPE A, LENGTH 12, MULTIPLIER <br />
149
150 <p>The basic user or login name, used throughout the protocol
151 as a handle to the user.</p>
152
153 <h4>TYPE roomname</h4>
154 BASE TYPE S, LENGTH 25, MULTIPLIER <br />
155 <!-- argh, how horribly broken -->
156
157 <p>Many strings in the protocol are fixed-width for no good reason
158 (maybe this is one reason for using compression in newer versions, as
159 the packets itself are wasting lots of space.</p>
160
161 <h4>TYPE realname</h4>
162 BASE TYPE S, LENGTH 50, MULTIPLIER <br />
163 <h4>TYPE email</h4>
164 BASE TYPE S, LENGTH 70, MULTIPLIER <br />
165 <h4>TYPE userinfo</h4>
166 BASE TYPE S, LENGTH 1000, MULTIPLIER <br />
167 <h4>TYPE url</h4>
168 BASE TYPE A, LENGTH 100, MULTIPLIER <br />
169
170 <p>Used in user_record.</p>
171
172 <h4>TYPE locale</h4>
173 BASE TYPE A, LENGTH 5, MULTIPLIER <br />
174
175 <p>A kind of locale specifier. It seems the general format seems to be
176 lowercase language, underscore, uppercase location, e.g. en_US. More
177 fancy specifications don't fit.</p>
178
179 <h4>TYPE flag</h4>
180 BASE TYPE U8, LENGTH , MULTIPLIER 1<br />
181
182 <p>Just a simple boolean value. 0 means false, and 1 generally true,
183 but I suggest ccepting != 0 as true.</p>
184
185 <h4>TYPE komi16</h4>
186 BASE TYPE I16, LENGTH , MULTIPLIER 2<br />
187 <h4>TYPE komi32</h4>
188 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
189 <h4>TYPE komi324</h4>
190 BASE TYPE I32, LENGTH , MULTIPLIER 4<br />
191
192 <p>Komi values are multiplied by 2 to make them integer in the
193 protocol. Well, *most* of the time at least...</p>
194
195 <h4>TYPE result</h4>
196 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
197
198 <p>The game result is also multiplied by two to give it higher
199 resolution. There are also special values for wins by time etc., either
200 in result or in the score* types, or both :)</p>
201
202 <h4>TYPE score16</h4>
203 BASE TYPE I16, LENGTH , MULTIPLIER 4<br />
204 <h4>TYPE score32</h4>
205 BASE TYPE I32, LENGTH , MULTIPLIER 4<br />
206
207 <p>A score value (used for displaying the score at the end of a game)
208 are multiplied by four for a change (the 0.25 resolution is not
209 used). In game structures it is encoded by dividing by two, though, so
210 watch out!</p>
211
212 <h4>TYPE time</h4>
213 BASE TYPE U32, LENGTH , MULTIPLIER 1000<br />
214
215 <p>Time values are multiplied by 1000, giving them millisecond
216 accuracy.</p>
217
218 <h4>TYPE timestamp</h4>
219 BASE TYPE U64, LENGTH , MULTIPLIER 1000<br />
220
221 <p>64 bit timeval, milliseconds since posix epoch, e.g. <code>my
222 ($year, $month, $day) = (gmtime $date * 0.001)[5,4,3];</code>
223 </p>
224
225 <h4>TYPE password</h4>
226 BASE TYPE U64, LENGTH , MULTIPLIER <br />
227
228 <p>Password is a number calculated as follows (VERY insecure, basically
229 plaintext!): <code>password = 0; for char in characters do password ←
230 password * 1055 + ascii_code (char)</code>
231 </p>
232
233 <h2>Constants, enumeration and set types used in the protocol.</h2>
234
235 <p>Baaah... not yet.</p>
236
237 <h2>Structs used in send &amp; receive messages</h2>
238
239 <h4>STRUCTURE user</h4>
240 CLASS: KGS::User<br />
241 <p>
242
243 <p>Everywhere a user + flags is required, even used in some places
244 where only a username is required. I see no general rule on when a
245 complete user and when a partial user is required.</p>
246 </p>
247 <table border="1" width="100%">
248 <tr>
249 <th width="10%">NAME</th>
250 <th width="10%">TYPE</th>
251 <th width="15%">DEFAULT</th>
252 <th>DESCRIPTION</th>
253 <th width="15%">DEC-GUARD</th>
254 </tr>
255 <tr>
256 <td>name</td>
257 <td>username</td>
258 <td> </td>
259 <td>
260
261  
262 </td>
263 <td>
264 <b></b>
265  
266 </td>
267 </tr>
268 <tr>
269 <td>flags</td>
270 <td>U32</td>
271 <td>1 </td>
272 <td>
273
274  
275 </td>
276 <td>
277 <b></b>
278  
279 </td>
280 </tr>
281 </table>
282
283 <h4>STRUCTURE rules</h4>
284 CLASS: KGS::Rules<br />
285 <p>
286
287 <p>This structure is used for challanges as well as in the special
288 TREE "subprotocol". It tightly encodes the game parameters.</p>
289 </p>
290 <table border="1" width="100%">
291 <tr>
292 <th width="10%">NAME</th>
293 <th width="10%">TYPE</th>
294 <th width="15%">DEFAULT</th>
295 <th>DESCRIPTION</th>
296 <th width="15%">DEC-GUARD</th>
297 </tr>
298 <tr>
299 <td>ruleset</td>
300 <td>U8</td>
301 <td> </td>
302 <td>
303
304  
305 </td>
306 <td>
307 <b></b>
308  
309 </td>
310 </tr>
311 <tr>
312 <td>size</td>
313 <td>U8</td>
314 <td> </td>
315 <td>
316
317  
318 </td>
319 <td>
320 <b></b>
321  
322 </td>
323 </tr>
324 <tr>
325 <td>handicap</td>
326 <td>U8</td>
327 <td> </td>
328 <td>
329
330  
331 </td>
332 <td>
333 <b></b>
334  
335 </td>
336 </tr>
337 <tr>
338 <td>komi</td>
339 <td>komi16</td>
340 <td> </td>
341 <td>
342
343  
344 </td>
345 <td>
346 <b></b>
347  
348 </td>
349 </tr>
350 <tr>
351 <td>timesys</td>
352 <td>U8</td>
353 <td> </td>
354 <td>
355
356  
357 </td>
358 <td>
359 <b></b>
360  
361 </td>
362 </tr>
363 <tr>
364 <td>time</td>
365 <td>U32</td>
366 <td> </td>
367 <td>
368
369  
370 </td>
371 <td>
372 <b></b>
373  
374 </td>
375 </tr>
376 <tr>
377 <td>interval</td>
378 <td>U32</td>
379 <td> </td>
380 <td>
381 byo-yomi time / canadian time
382
383  
384 </td>
385 <td>
386 <b></b>
387  
388 </td>
389 </tr>
390 <tr>
391 <td>count</td>
392 <td>U16</td>
393 <td> </td>
394 <td>
395 periods / moves
396
397  
398 </td>
399 <td>
400 <b></b>
401  
402 </td>
403 </tr>
404 </table>
405
406 <h2>Structs used in send messages</h2>
407
408 <h2>Send messages</h2>
409
410 <h4>
411 <a name="S0000"></a>SEND
412 MESSAGE login</h4>
413 NUMERIC TYPE (hex): 0000<p>
414
415 <p>Sent to login, usually the first message sent. The password needs to be set when the
416 guest flag is true.
417 Possible replies: <a href="#R0001">login(0001)</a>
418 <a href="#R0002">login(0002)</a>
419 <a href="#R0003">login(0003)</a>
420 <a href="#R0004">login(0004)</a>
421 <a href="#R0005">login(0005)</a>
422 <a href="#R0006">login(0006)</a>
423 <a href="#R0018">login(0018)</a>
424 <a href="#R0022">login(0022)</a>. Followed by: <a href="#R001b">timewarning_default(001b)</a> <a href="#R0411">chal_defaults(0411)</a>
425 </p>
426 </p>
427 <table border="1" width="100%">
428 <tr>
429 <th width="10%">NAME</th>
430 <th width="10%">TYPE</th>
431 <th width="15%">DEFAULT</th>
432 <th>DESCRIPTION</th>
433 <th width="15%">DEC-GUARD</th>
434 </tr>
435 <tr>
436 <td>ver_major</td>
437 <td>U32</td>
438 <td>2 </td>
439 <td>
440
441  
442 </td>
443 <td>
444 <b></b>
445  
446 </td>
447 </tr>
448 <tr>
449 <td>ver_minor</td>
450 <td>U32</td>
451 <td>4 </td>
452 <td>
453
454  
455 </td>
456 <td>
457 <b></b>
458  
459 </td>
460 </tr>
461 <tr>
462 <td>ver_micro</td>
463 <td>U32</td>
464 <td>67 </td>
465 <td>
466
467  
468 </td>
469 <td>
470 <b></b>
471  
472 </td>
473 </tr>
474 <tr>
475 <td>name</td>
476 <td>username</td>
477 <td> </td>
478 <td>
479
480  
481 </td>
482 <td>
483 <b></b>
484  
485 </td>
486 </tr>
487 <tr>
488 <td>password</td>
489 <td>password</td>
490 <td>0 </td>
491 <td>
492
493  
494 </td>
495 <td>
496 <b></b>
497  
498 </td>
499 </tr>
500 <tr>
501 <td>guest</td>
502 <td>flag</td>
503 <td>1 </td>
504 <td>
505
506  
507 </td>
508 <td>
509 <b></b>
510  
511 </td>
512 </tr>
513 <tr>
514 <td>_unknown3</td>
515 <td>U16</td>
516 <td>0 </td>
517 <td>
518
519  
520 </td>
521 <td>
522 <b></b>
523  
524 </td>
525 </tr>
526 <tr>
527 <td>locale</td>
528 <td>locale</td>
529 <td>"en_US" </td>
530 <td>
531
532  
533 </td>
534 <td>
535 <b></b>
536  
537 </td>
538 </tr>
539 <tr>
540 <td>clientver</td>
541 <td>DATA</td>
542 <td>"1.4.1_01:Swing app:Sun Microsystems Inc." </td>
543 <td>
544 The "default" is the java vm version, not exactly he client version. However,
545 you should always send a text like "Jonathan's C client bersion 0.6" or somesuch,
546 so the server can, if necessary, block broken clients or client versions.
547
548  
549 </td>
550 <td>
551 <b></b>
552  
553 </td>
554 </tr>
555 </table>
556
557 <h4>
558 <a name="S0007"></a>SEND
559 MESSAGE req_userinfo</h4>
560 NUMERIC TYPE (hex): 0007<p>
561 <p>Request info about a certain user. Possible reply: <a href="#R0008">userinfo(0008)</a>
562 </p>
563 </p>
564 <table border="1" width="100%">
565 <tr>
566 <th width="10%">NAME</th>
567 <th width="10%">TYPE</th>
568 <th width="15%">DEFAULT</th>
569 <th>DESCRIPTION</th>
570 <th width="15%">DEC-GUARD</th>
571 </tr>
572 <tr>
573 <td>name</td>
574 <td>username</td>
575 <td> </td>
576 <td>
577
578  
579 </td>
580 <td>
581 <b></b>
582  
583 </td>
584 </tr>
585 </table>
586
587 <h4>
588 <a name="S0007"></a>SEND
589 MESSAGE update_userinfo</h4>
590 NUMERIC TYPE (hex): 0007<p>
591 <p>Update user info. Message structure is very similar
592 to <a href="#R0008">userinfo(0008)</a>.</p>
593 </p>
594 <table border="1" width="100%">
595 <tr>
596 <th width="10%">NAME</th>
597 <th width="10%">TYPE</th>
598 <th width="15%">DEFAULT</th>
599 <th>DESCRIPTION</th>
600 <th width="15%">DEC-GUARD</th>
601 </tr>
602 <tr>
603 <td>setpass</td>
604 <td>flag</td>
605 <td> </td>
606 <td>
607 Should the password be updated?
608
609  
610 </td>
611 <td>
612 <b></b>
613  
614 </td>
615 </tr>
616 <tr>
617 <td>password</td>
618 <td>password</td>
619 <td>0 </td>
620 <td>
621
622  
623 </td>
624 <td>
625 <b></b>
626  
627 </td>
628 </tr>
629 <tr>
630 <td>realname</td>
631 <td>realname</td>
632 <td> </td>
633 <td>
634
635  
636 </td>
637 <td>
638 <b></b>
639  
640 </td>
641 </tr>
642 <tr>
643 <td>email</td>
644 <td>email</td>
645 <td> </td>
646 <td>
647
648  
649 </td>
650 <td>
651 <b></b>
652  
653 </td>
654 </tr>
655 <tr>
656 <td>info</td>
657 <td>userinfo</td>
658 <td> </td>
659 <td>
660
661  
662 </td>
663 <td>
664 <b></b>
665  
666 </td>
667 </tr>
668 <tr>
669 <td>homepage</td>
670 <td>url</td>
671 <td> </td>
672 <td>
673
674  
675 </td>
676 <td>
677 <b></b>
678  
679 </td>
680 </tr>
681 <tr>
682 <td>_unused</td>
683 <td>U64</td>
684 <td>0 </td>
685 <td>
686
687  
688 </td>
689 <td>
690 <b></b>
691  
692 </td>
693 </tr>
694 <tr>
695 <td>_unused</td>
696 <td>U64</td>
697 <td>0 </td>
698 <td>
699
700  
701 </td>
702 <td>
703 <b></b>
704  
705 </td>
706 </tr>
707 </table>
708
709 <h4>
710 <a name="S0014"></a>SEND
711 MESSAGE req_stats</h4>
712 NUMERIC TYPE (hex): 0014<p>
713 <p>Request server statistics. Replied with <a href="#R0015">stats(0015)</a>
714 </p>
715 </p>
716 <table border="1" width="100%">
717 <tr>
718 <th width="10%">NAME</th>
719 <th width="10%">TYPE</th>
720 <th width="15%">DEFAULT</th>
721 <th>DESCRIPTION</th>
722 <th width="15%">DEC-GUARD</th>
723 </tr>
724 </table>
725
726 <h4>
727 <a name="S001d"></a>SEND
728 MESSAGE ping</h4>
729 NUMERIC TYPE (hex): 001d<p>
730 <p>Wild guess, I send it in <a href="#R0016">idle_warn(0016)</a>.</p>
731 </p>
732 <table border="1" width="100%">
733 <tr>
734 <th width="10%">NAME</th>
735 <th width="10%">TYPE</th>
736 <th width="15%">DEFAULT</th>
737 <th>DESCRIPTION</th>
738 <th width="15%">DEC-GUARD</th>
739 </tr>
740 </table>
741
742 <h4>
743 <a name="S001e"></a>SEND
744 MESSAGE req_usergraph</h4>
745 NUMERIC TYPE (hex): 001e<p>
746 <p>Request user graph data, replied with <a href="#R001e">usergraph(001e)</a>.</p>
747 </p>
748 <table border="1" width="100%">
749 <tr>
750 <th width="10%">NAME</th>
751 <th width="10%">TYPE</th>
752 <th width="15%">DEFAULT</th>
753 <th>DESCRIPTION</th>
754 <th width="15%">DEC-GUARD</th>
755 </tr>
756 <tr>
757 <td>name</td>
758 <td>username</td>
759 <td> </td>
760 <td>
761
762  
763 </td>
764 <td>
765 <b></b>
766  
767 </td>
768 </tr>
769 </table>
770
771 <h4>
772 <a name="S001f"></a>SEND
773 MESSAGE fetch_memos</h4>
774 NUMERIC TYPE (hex): 001f<p>
775 <p>Unclear. Fetch all outstanding memos? Replied with <a href="#R001f">memo(001f)</a>
776 </p>
777 </p>
778 <table border="1" width="100%">
779 <tr>
780 <th width="10%">NAME</th>
781 <th width="10%">TYPE</th>
782 <th width="15%">DEFAULT</th>
783 <th>DESCRIPTION</th>
784 <th width="15%">DEC-GUARD</th>
785 </tr>
786 </table>
787
788 <h4>
789 <a name="S0021"></a>SEND
790 MESSAGE req_pic</h4>
791 NUMERIC TYPE (hex): 0021<p>
792 <p>Request a user picture from the server. Results in a <a href="#R0021">userpic(0021)</a>
793 or a timeout.</p>
794 </p>
795 <table border="1" width="100%">
796 <tr>
797 <th width="10%">NAME</th>
798 <th width="10%">TYPE</th>
799 <th width="15%">DEFAULT</th>
800 <th>DESCRIPTION</th>
801 <th width="15%">DEC-GUARD</th>
802 </tr>
803 <tr>
804 <td>name</td>
805 <td>username</td>
806 <td> </td>
807 <td>
808
809  
810 </td>
811 <td>
812 <b></b>
813  
814 </td>
815 </tr>
816 </table>
817
818 <h4>
819 <a name="S0021"></a>SEND
820 MESSAGE upload_pic</h4>
821 NUMERIC TYPE (hex): 0021<p>
822 Same code as pic_req, but with an additional data section that
823 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels.
824 </p>
825 <table border="1" width="100%">
826 <tr>
827 <th width="10%">NAME</th>
828 <th width="10%">TYPE</th>
829 <th width="15%">DEFAULT</th>
830 <th>DESCRIPTION</th>
831 <th width="15%">DEC-GUARD</th>
832 </tr>
833 <tr>
834 <td>name</td>
835 <td>username</td>
836 <td> </td>
837 <td>
838
839  
840 </td>
841 <td>
842 <b></b>
843  
844 </td>
845 </tr>
846 <tr>
847 <td>data</td>
848 <td>DATA</td>
849 <td> </td>
850 <td>
851
852  
853 </td>
854 <td>
855 <b></b>
856  
857 </td>
858 </tr>
859 </table>
860
861 <h4>
862 <a name="S0100"></a>SEND
863 MESSAGE gnotice</h4>
864 NUMERIC TYPE (hex): 0100<p>
865 <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results
866 in a <a href="#R0100">gnotice(0100)</a> sent to all users.</p>
867 </p>
868 <table border="1" width="100%">
869 <tr>
870 <th width="10%">NAME</th>
871 <th width="10%">TYPE</th>
872 <th width="15%">DEFAULT</th>
873 <th>DESCRIPTION</th>
874 <th width="15%">DEC-GUARD</th>
875 </tr>
876 <tr>
877 <td>notice</td>
878 <td>STRING</td>
879 <td> </td>
880 <td>
881
882  
883 </td>
884 <td>
885 <b></b>
886  
887 </td>
888 </tr>
889 </table>
890
891 <h4>
892 <a name="S0318"></a>SEND
893 MESSAGE list_rooms</h4>
894 NUMERIC TYPE (hex): 0318<p>
895 <p>List the rooms in a specific group/category. Results in a <a href="#R0318">upd_rooms(0318)</a> message.</p>
896 </p>
897 <table border="1" width="100%">
898 <tr>
899 <th width="10%">NAME</th>
900 <th width="10%">TYPE</th>
901 <th width="15%">DEFAULT</th>
902 <th>DESCRIPTION</th>
903 <th width="15%">DEC-GUARD</th>
904 </tr>
905 <tr>
906 <td>group</td>
907 <td>U8</td>
908 <td> </td>
909 <td>
910
911  
912 </td>
913 <td>
914 <b></b>
915  
916 </td>
917 </tr>
918 </table>
919
920 <h4>
921 <a name="S031a"></a>SEND
922 MESSAGE new_room</h4>
923 NUMERIC TYPE (hex): 031a<p>
924 Create a new room. Not verified.
925 </p>
926 <table border="1" width="100%">
927 <tr>
928 <th width="10%">NAME</th>
929 <th width="10%">TYPE</th>
930 <th width="15%">DEFAULT</th>
931 <th>DESCRIPTION</th>
932 <th width="15%">DEC-GUARD</th>
933 </tr>
934 <tr>
935 <td>name</td>
936 <td>username</td>
937 <td> </td>
938 <td>
939
940  
941 </td>
942 <td>
943 <b></b>
944  
945 </td>
946 </tr>
947 <tr>
948 <td>i1</td>
949 <td>U32</td>
950 <td>0 </td>
951 <td>
952
953  
954 </td>
955 <td>
956 <b></b>
957  
958 </td>
959 </tr>
960 <tr>
961 <td>b1</td>
962 <td>U8</td>
963 <td>0 </td>
964 <td>
965
966  
967 </td>
968 <td>
969 <b></b>
970  
971 </td>
972 </tr>
973 <tr>
974 <td>b2</td>
975 <td>U8</td>
976 <td>255 </td>
977 <td>
978
979  
980 </td>
981 <td>
982 <b></b>
983  
984 </td>
985 </tr>
986 <tr>
987 <td>b3</td>
988 <td>U8</td>
989 <td>255 </td>
990 <td>
991
992  
993 </td>
994 <td>
995 <b></b>
996  
997 </td>
998 </tr>
999 <tr>
1000 <td>group</td>
1001 <td>U8</td>
1002 <td>1 </td>
1003 <td>
1004
1005  
1006 </td>
1007 <td>
1008 <b></b>
1009  
1010 </td>
1011 </tr>
1012 <tr>
1013 <td>name</td>
1014 <td>STRING</td>
1015 <td> </td>
1016 <td>
1017
1018  
1019 </td>
1020 <td>
1021 <b></b>
1022  
1023 </td>
1024 </tr>
1025 <tr>
1026 <td>description</td>
1027 <td>STRING</td>
1028 <td> </td>
1029 <td>
1030
1031  
1032 </td>
1033 <td>
1034 <b></b>
1035  
1036 </td>
1037 </tr>
1038 <tr>
1039 <td>flags</td>
1040 <td>U8</td>
1041 <td> </td>
1042 <td>
1043 0x10 .. private room etc.. see code
1044
1045  
1046 </td>
1047 <td>
1048 <b></b>
1049  
1050 </td>
1051 </tr>
1052 </table>
1053
1054 <h4>
1055 <a name="S0413"></a>SEND
1056 MESSAGE req_game_record</h4>
1057 NUMERIC TYPE (hex): 0413<p>
1058 <p>Requests part of the users game record to be sent. Results in a <a href="#R0414">game_record(0414)</a> or maybe a timeout.</p>
1059 </p>
1060 <table border="1" width="100%">
1061 <tr>
1062 <th width="10%">NAME</th>
1063 <th width="10%">TYPE</th>
1064 <th width="15%">DEFAULT</th>
1065 <th>DESCRIPTION</th>
1066 <th width="15%">DEC-GUARD</th>
1067 </tr>
1068 <tr>
1069 <td>name</td>
1070 <td>username</td>
1071 <td> </td>
1072 <td>
1073
1074  
1075 </td>
1076 <td>
1077 <b></b>
1078  
1079 </td>
1080 </tr>
1081 <tr>
1082 <td>timestamp</td>
1083 <td>timestamp</td>
1084 <td> </td>
1085 <td>
1086 If zero, start at the newest games, else only send games
1087 before the given timestap.
1088
1089  
1090 </td>
1091 <td>
1092 <b></b>
1093  
1094 </td>
1095 </tr>
1096 </table>
1097
1098 <h4>
1099 <a name="S4300"></a>SEND
1100 MESSAGE join_room</h4>
1101 NUMERIC TYPE (hex): 4300<p>
1102 <p>Joins the given room. <a href="#R4300">join_room(4300)</a> messages for yourself
1103 and all users in that room, as well as the initial gamelist, are
1104 send if the room exists. If not, timeout...</p>
1105 </p>
1106 <table border="1" width="100%">
1107 <tr>
1108 <th width="10%">NAME</th>
1109 <th width="10%">TYPE</th>
1110 <th width="15%">DEFAULT</th>
1111 <th>DESCRIPTION</th>
1112 <th width="15%">DEC-GUARD</th>
1113 </tr>
1114 <tr>
1115 <td>channel</td>
1116 <td>U16</td>
1117 <td> </td>
1118 <td>
1119
1120  
1121 </td>
1122 <td>
1123 <b></b>
1124  
1125 </td>
1126 </tr>
1127 <tr>
1128 <td>user</td>
1129 <td>user</td>
1130 <td> </td>
1131 <td>
1132
1133  
1134 </td>
1135 <td>
1136 <b></b>
1137  
1138 </td>
1139 </tr>
1140 </table>
1141
1142 <h4>
1143 <a name="S4301"></a>SEND
1144 MESSAGE msg_room</h4>
1145 NUMERIC TYPE (hex): 4301<p>
1146 Send a message to the room.
1147 </p>
1148 <table border="1" width="100%">
1149 <tr>
1150 <th width="10%">NAME</th>
1151 <th width="10%">TYPE</th>
1152 <th width="15%">DEFAULT</th>
1153 <th>DESCRIPTION</th>
1154 <th width="15%">DEC-GUARD</th>
1155 </tr>
1156 <tr>
1157 <td>channel</td>
1158 <td>U16</td>
1159 <td> </td>
1160 <td>
1161
1162  
1163 </td>
1164 <td>
1165 <b></b>
1166  
1167 </td>
1168 </tr>
1169 <tr>
1170 <td>name</td>
1171 <td>username</td>
1172 <td> </td>
1173 <td>
1174 Must be the login-name of the user.
1175
1176  
1177 </td>
1178 <td>
1179 <b></b>
1180  
1181 </td>
1182 </tr>
1183 <tr>
1184 <td>message</td>
1185 <td>STRING</td>
1186 <td> </td>
1187 <td>
1188
1189  
1190 </td>
1191 <td>
1192 <b></b>
1193  
1194 </td>
1195 </tr>
1196 </table>
1197
1198 <h4>
1199 <a name="S4302"></a>SEND
1200 MESSAGE part_room</h4>
1201 NUMERIC TYPE (hex): 4302<p>
1202 Remove yourself (or maybe others as admin) from a room.
1203 </p>
1204 <table border="1" width="100%">
1205 <tr>
1206 <th width="10%">NAME</th>
1207 <th width="10%">TYPE</th>
1208 <th width="15%">DEFAULT</th>
1209 <th>DESCRIPTION</th>
1210 <th width="15%">DEC-GUARD</th>
1211 </tr>
1212 <tr>
1213 <td>channel</td>
1214 <td>U16</td>
1215 <td> </td>
1216 <td>
1217
1218  
1219 </td>
1220 <td>
1221 <b></b>
1222  
1223 </td>
1224 </tr>
1225 <tr>
1226 <td>name</td>
1227 <td>username</td>
1228 <td> </td>
1229 <td>
1230
1231  
1232 </td>
1233 <td>
1234 <b></b>
1235  
1236 </td>
1237 </tr>
1238 </table>
1239
1240 <h4>
1241 <a name="S4305"></a>SEND
1242 MESSAGE new_game</h4>
1243 NUMERIC TYPE (hex): 4305<p>
1244 Unclear. Start a new game.
1245 </p>
1246 <table border="1" width="100%">
1247 <tr>
1248 <th width="10%">NAME</th>
1249 <th width="10%">TYPE</th>
1250 <th width="15%">DEFAULT</th>
1251 <th>DESCRIPTION</th>
1252 <th width="15%">DEC-GUARD</th>
1253 </tr>
1254 <tr>
1255 <td>channel</td>
1256 <td>U16</td>
1257 <td> </td>
1258 <td>
1259
1260  
1261 </td>
1262 <td>
1263 <b></b>
1264  
1265 </td>
1266 </tr>
1267 <tr>
1268 <td>id</td>
1269 <td>U16</td>
1270 <td> </td>
1271 <td>
1272
1273  
1274 </td>
1275 <td>
1276 <b></b>
1277  
1278 </td>
1279 </tr>
1280 <tr>
1281 <td>gametype</td>
1282 <td>U32</td>
1283 <td> </td>
1284 <td>
1285
1286  
1287 </td>
1288 <td>
1289 <b></b>
1290  
1291 </td>
1292 </tr>
1293 <tr>
1294 <td>rules</td>
1295 <td>rules</td>
1296 <td> </td>
1297 <td>
1298
1299  
1300 </td>
1301 <td>
1302 <b></b>
1303  
1304 </td>
1305 </tr>
1306 <tr>
1307 <td>notes</td>
1308 <td>STRING</td>
1309 <td> </td>
1310 <td>
1311
1312  
1313 </td>
1314 <td>
1315 <b></b>
1316  
1317 </td>
1318 </tr>
1319 </table>
1320
1321 <h4>
1322 <a name="S430b"></a>SEND
1323 MESSAGE req_games</h4>
1324 NUMERIC TYPE (hex): 430b<p>
1325 Request to update room game list (send this once per minute to get
1326 updated). Results in upd_games messages.
1327 </p>
1328 <table border="1" width="100%">
1329 <tr>
1330 <th width="10%">NAME</th>
1331 <th width="10%">TYPE</th>
1332 <th width="15%">DEFAULT</th>
1333 <th>DESCRIPTION</th>
1334 <th width="15%">DEC-GUARD</th>
1335 </tr>
1336 <tr>
1337 <td>channel</td>
1338 <td>U16</td>
1339 <td> </td>
1340 <td>
1341
1342  
1343 </td>
1344 <td>
1345 <b></b>
1346  
1347 </td>
1348 </tr>
1349 </table>
1350
1351 <h4>
1352 <a name="S4319"></a>SEND
1353 MESSAGE req_desc</h4>
1354 NUMERIC TYPE (hex): 4319<p>
1355 Request room description.
1356 </p>
1357 <table border="1" width="100%">
1358 <tr>
1359 <th width="10%">NAME</th>
1360 <th width="10%">TYPE</th>
1361 <th width="15%">DEFAULT</th>
1362 <th>DESCRIPTION</th>
1363 <th width="15%">DEC-GUARD</th>
1364 </tr>
1365 <tr>
1366 <td>channel</td>
1367 <td>U16</td>
1368 <td> </td>
1369 <td>
1370
1371  
1372 </td>
1373 <td>
1374 <b></b>
1375  
1376 </td>
1377 </tr>
1378 </table>
1379
1380 <h4>
1381 <a name="S4400"></a>SEND
1382 MESSAGE send_chal</h4>
1383 NUMERIC TYPE (hex): 4400<p>
1384 Unclear.
1385 </p>
1386 <table border="1" width="100%">
1387 <tr>
1388 <th width="10%">NAME</th>
1389 <th width="10%">TYPE</th>
1390 <th width="15%">DEFAULT</th>
1391 <th>DESCRIPTION</th>
1392 <th width="15%">DEC-GUARD</th>
1393 </tr>
1394 <tr>
1395 <td>channel</td>
1396 <td>U16</td>
1397 <td> </td>
1398 <td>
1399
1400  
1401 </td>
1402 <td>
1403 <b></b>
1404  
1405 </td>
1406 </tr>
1407 <tr>
1408 <td>black</td>
1409 <td>username</td>
1410 <td> </td>
1411 <td>
1412
1413  
1414 </td>
1415 <td>
1416 <b></b>
1417  
1418 </td>
1419 </tr>
1420 <tr>
1421 <td>white</td>
1422 <td>username</td>
1423 <td> </td>
1424 <td>
1425 More following... TREE or challenge.
1426
1427  
1428 </td>
1429 <td>
1430 <b></b>
1431  
1432 </td>
1433 </tr>
1434 </table>
1435
1436 <h4>
1437 <a name="S4403"></a>SEND
1438 MESSAGE join_game</h4>
1439 NUMERIC TYPE (hex): 4403<p>
1440 Join a game. See join_room.
1441 </p>
1442 <table border="1" width="100%">
1443 <tr>
1444 <th width="10%">NAME</th>
1445 <th width="10%">TYPE</th>
1446 <th width="15%">DEFAULT</th>
1447 <th>DESCRIPTION</th>
1448 <th width="15%">DEC-GUARD</th>
1449 </tr>
1450 <tr>
1451 <td>channel</td>
1452 <td>U16</td>
1453 <td> </td>
1454 <td>
1455
1456  
1457 </td>
1458 <td>
1459 <b></b>
1460  
1461 </td>
1462 </tr>
1463 <tr>
1464 <td>user</td>
1465 <td>user</td>
1466 <td> </td>
1467 <td>
1468
1469  
1470 </td>
1471 <td>
1472 <b></b>
1473  
1474 </td>
1475 </tr>
1476 </table>
1477
1478 <h4>
1479 <a name="S4404"></a>SEND
1480 MESSAGE part_game</h4>
1481 NUMERIC TYPE (hex): 4404<p>
1482 Leave (or kick as admin?) a certain user from a game.
1483 </p>
1484 <table border="1" width="100%">
1485 <tr>
1486 <th width="10%">NAME</th>
1487 <th width="10%">TYPE</th>
1488 <th width="15%">DEFAULT</th>
1489 <th>DESCRIPTION</th>
1490 <th width="15%">DEC-GUARD</th>
1491 </tr>
1492 <tr>
1493 <td>channel</td>
1494 <td>U16</td>
1495 <td> </td>
1496 <td>
1497
1498  
1499 </td>
1500 <td>
1501 <b></b>
1502  
1503 </td>
1504 </tr>
1505 <tr>
1506 <td>name</td>
1507 <td>username</td>
1508 <td> </td>
1509 <td>
1510
1511  
1512 </td>
1513 <td>
1514 <b></b>
1515  
1516 </td>
1517 </tr>
1518 </table>
1519
1520 <h4>
1521 <a name="S4405"></a>SEND
1522 MESSAGE set_tree</h4>
1523 NUMERIC TYPE (hex): 4405<p>
1524 Upload a partial game tree to the server. This is used
1525 to send moves and even in-game comments to the server. For the comments,
1526 the server prepends the username and rank.
1527 </p>
1528 <table border="1" width="100%">
1529 <tr>
1530 <th width="10%">NAME</th>
1531 <th width="10%">TYPE</th>
1532 <th width="15%">DEFAULT</th>
1533 <th>DESCRIPTION</th>
1534 <th width="15%">DEC-GUARD</th>
1535 </tr>
1536 <tr>
1537 <td>channel</td>
1538 <td>U16</td>
1539 <td> </td>
1540 <td>
1541
1542  
1543 </td>
1544 <td>
1545 <b></b>
1546  
1547 </td>
1548 </tr>
1549 <tr>
1550 <td>tree</td>
1551 <td>TREE</td>
1552 <td> </td>
1553 <td>
1554
1555  
1556 </td>
1557 <td>
1558 <b></b>
1559  
1560 </td>
1561 </tr>
1562 </table>
1563
1564 <h4>
1565 <a name="S4408"></a>SEND
1566 MESSAGE get_tree</h4>
1567 NUMERIC TYPE (hex): 4408<p>
1568 Request the game tree starting at a given node. This is used
1569 when the server only sends a partial tree (with end code "more").
1570 </p>
1571 <table border="1" width="100%">
1572 <tr>
1573 <th width="10%">NAME</th>
1574 <th width="10%">TYPE</th>
1575 <th width="15%">DEFAULT</th>
1576 <th>DESCRIPTION</th>
1577 <th width="15%">DEC-GUARD</th>
1578 </tr>
1579 <tr>
1580 <td>channel</td>
1581 <td>U16</td>
1582 <td> </td>
1583 <td>
1584
1585  
1586 </td>
1587 <td>
1588 <b></b>
1589  
1590 </td>
1591 </tr>
1592 <tr>
1593 <td>node</td>
1594 <td>U32</td>
1595 <td> </td>
1596 <td>
1597
1598  
1599 </td>
1600 <td>
1601 <b></b>
1602  
1603 </td>
1604 </tr>
1605 </table>
1606
1607 <h4>
1608 <a name="S440c"></a>SEND
1609 MESSAGE claim_win</h4>
1610 NUMERIC TYPE (hex): 440c<p>
1611 Unclear.
1612 </p>
1613 <table border="1" width="100%">
1614 <tr>
1615 <th width="10%">NAME</th>
1616 <th width="10%">TYPE</th>
1617 <th width="15%">DEFAULT</th>
1618 <th>DESCRIPTION</th>
1619 <th width="15%">DEC-GUARD</th>
1620 </tr>
1621 <tr>
1622 <td>channel</td>
1623 <td>U16</td>
1624 <td> </td>
1625 <td>
1626
1627  
1628 </td>
1629 <td>
1630 <b></b>
1631  
1632 </td>
1633 </tr>
1634 <tr>
1635 <td>_byte</td>
1636 <td>U8 </td>
1637 <td> </td>
1638 <td>
1639 Player colour maybe? Unclear.
1640
1641  
1642 </td>
1643 <td>
1644 <b></b>
1645  
1646 </td>
1647 </tr>
1648 </table>
1649
1650 <h4>
1651 <a name="S440d"></a>SEND
1652 MESSAGE add_time</h4>
1653 NUMERIC TYPE (hex): 440d<p>
1654 Not checked.
1655
1656 </p>
1657 <table border="1" width="100%">
1658 <tr>
1659 <th width="10%">NAME</th>
1660 <th width="10%">TYPE</th>
1661 <th width="15%">DEFAULT</th>
1662 <th>DESCRIPTION</th>
1663 <th width="15%">DEC-GUARD</th>
1664 </tr>
1665 <tr>
1666 <td>channel</td>
1667 <td>U16</td>
1668 <td> </td>
1669 <td>
1670
1671  
1672 </td>
1673 <td>
1674 <b></b>
1675  
1676 </td>
1677 </tr>
1678 <tr>
1679 <td>time</td>
1680 <td>U32</td>
1681 <td> </td>
1682 <td>
1683
1684  
1685 </td>
1686 <td>
1687 <b></b>
1688  
1689 </td>
1690 </tr>
1691 <tr>
1692 <td>player</td>
1693 <td>U8</td>
1694 <td> </td>
1695 <td>
1696
1697  
1698 </td>
1699 <td>
1700 <b></b>
1701  
1702 </td>
1703 </tr>
1704 </table>
1705
1706 <h4>
1707 <a name="S440f"></a>SEND
1708 MESSAGE grant_undo</h4>
1709 NUMERIC TYPE (hex): 440f<p>
1710 Can be send after a req_undo message was received to grant the undo.
1711 </p>
1712 <table border="1" width="100%">
1713 <tr>
1714 <th width="10%">NAME</th>
1715 <th width="10%">TYPE</th>
1716 <th width="15%">DEFAULT</th>
1717 <th>DESCRIPTION</th>
1718 <th width="15%">DEC-GUARD</th>
1719 </tr>
1720 <tr>
1721 <td>channel</td>
1722 <td>U16</td>
1723 <td> </td>
1724 <td>
1725
1726  
1727 </td>
1728 <td>
1729 <b></b>
1730  
1731 </td>
1732 </tr>
1733 </table>
1734
1735 <h4>
1736 <a name="S4410"></a>SEND
1737 MESSAGE resign_game</h4>
1738 NUMERIC TYPE (hex): 4410<p>
1739 Resign the game.
1740 </p>
1741 <table border="1" width="100%">
1742 <tr>
1743 <th width="10%">NAME</th>
1744 <th width="10%">TYPE</th>
1745 <th width="15%">DEFAULT</th>
1746 <th>DESCRIPTION</th>
1747 <th width="15%">DEC-GUARD</th>
1748 </tr>
1749 <tr>
1750 <td>channel</td>
1751 <td>U16</td>
1752 <td> </td>
1753 <td>
1754
1755  
1756 </td>
1757 <td>
1758 <b></b>
1759  
1760 </td>
1761 </tr>
1762 <tr>
1763 <td>player</td>
1764 <td>U8</td>
1765 <td> </td>
1766 <td>
1767
1768  
1769 </td>
1770 <td>
1771 <b></b>
1772  
1773 </td>
1774 </tr>
1775 </table>
1776
1777 <h4>
1778 <a name="S441a"></a>SEND
1779 MESSAGE set_teacher</h4>
1780 NUMERIC TYPE (hex): 441a<p>
1781 Change the teacher to somebody else (or possibly yourself == take it).
1782 </p>
1783 <table border="1" width="100%">
1784 <tr>
1785 <th width="10%">NAME</th>
1786 <th width="10%">TYPE</th>
1787 <th width="15%">DEFAULT</th>
1788 <th>DESCRIPTION</th>
1789 <th width="15%">DEC-GUARD</th>
1790 </tr>
1791 <tr>
1792 <td>channel</td>
1793 <td>U16</td>
1794 <td> </td>
1795 <td>
1796
1797  
1798 </td>
1799 <td>
1800 <b></b>
1801  
1802 </td>
1803 </tr>
1804 <tr>
1805 <td>name</td>
1806 <td>username</td>
1807 <td> </td>
1808 <td>
1809
1810  
1811 </td>
1812 <td>
1813 <b></b>
1814  
1815 </td>
1816 </tr>
1817 </table>
1818
1819 <h4>
1820 <a name="S4422"></a>SEND
1821 MESSAGE add_user</h4>
1822 NUMERIC TYPE (hex): 4422<p>
1823 Unclear. Maybe allow users to talk? No idea, really.
1824
1825 </p>
1826 <table border="1" width="100%">
1827 <tr>
1828 <th width="10%">NAME</th>
1829 <th width="10%">TYPE</th>
1830 <th width="15%">DEFAULT</th>
1831 <th>DESCRIPTION</th>
1832 <th width="15%">DEC-GUARD</th>
1833 </tr>
1834 <tr>
1835 <td>channel</td>
1836 <td>U16</td>
1837 <td> </td>
1838 <td>
1839
1840  
1841 </td>
1842 <td>
1843 <b></b>
1844  
1845 </td>
1846 </tr>
1847 <tr>
1848 <td>othername</td>
1849 <td>username</td>
1850 <td> </td>
1851 <td>
1852
1853  
1854 </td>
1855 <td>
1856 <b></b>
1857  
1858 </td>
1859 </tr>
1860 <tr>
1861 <td>name</td>
1862 <td>username</td>
1863 <td> </td>
1864 <td>; # gives user access to the game (to what? ;)
1865
1866  
1867 </td>
1868 <td>
1869 <b></b>
1870  
1871 </td>
1872 </tr>
1873 </table>
1874
1875 <h4>
1876 <a name="S4423"></a>SEND
1877 MESSAGE set_privacy</h4>
1878 NUMERIC TYPE (hex): 4423<p>
1879 Probably sets the "quiet" flag. Not checked.
1880 </p>
1881 <table border="1" width="100%">
1882 <tr>
1883 <th width="10%">NAME</th>
1884 <th width="10%">TYPE</th>
1885 <th width="15%">DEFAULT</th>
1886 <th>DESCRIPTION</th>
1887 <th width="15%">DEC-GUARD</th>
1888 </tr>
1889 <tr>
1890 <td>channel</td>
1891 <td>U16</td>
1892 <td> </td>
1893 <td>
1894
1895  
1896 </td>
1897 <td>
1898 <b></b>
1899  
1900 </td>
1901 </tr>
1902 <tr>
1903 <td>private</td>
1904 <td>U8</td>
1905 <td> </td>
1906 <td>
1907
1908  
1909 </td>
1910 <td>
1911 <b></b>
1912  
1913 </td>
1914 </tr>
1915 </table>
1916
1917 <h4>
1918 <a name="S4429"></a>SEND
1919 MESSAGE reject_chal</h4>
1920 NUMERIC TYPE (hex): 4429<p>
1921 Reject a challenge from a given user. Not checked.
1922
1923 </p>
1924 <table border="1" width="100%">
1925 <tr>
1926 <th width="10%">NAME</th>
1927 <th width="10%">TYPE</th>
1928 <th width="15%">DEFAULT</th>
1929 <th>DESCRIPTION</th>
1930 <th width="15%">DEC-GUARD</th>
1931 </tr>
1932 <tr>
1933 <td>channel</td>
1934 <td>U16</td>
1935 <td> </td>
1936 <td>
1937
1938  
1939 </td>
1940 <td>
1941 <b></b>
1942  
1943 </td>
1944 </tr>
1945 <tr>
1946 <td>name</td>
1947 <td>username</td>
1948 <td> </td>
1949 <td>
1950
1951  
1952 </td>
1953 <td>
1954 <b></b>
1955  
1956 </td>
1957 </tr>
1958 </table>
1959
1960 <h4>
1961 <a name="S4433"></a>SEND
1962 MESSAGE req_result</h4>
1963 NUMERIC TYPE (hex): 4433<p>
1964 I forgot.
1965
1966 </p>
1967 <table border="1" width="100%">
1968 <tr>
1969 <th width="10%">NAME</th>
1970 <th width="10%">TYPE</th>
1971 <th width="15%">DEFAULT</th>
1972 <th>DESCRIPTION</th>
1973 <th width="15%">DEC-GUARD</th>
1974 </tr>
1975 <tr>
1976 <td>channel</td>
1977 <td>U16</td>
1978 <td> </td>
1979 <td>
1980
1981  
1982 </td>
1983 <td>
1984 <b></b>
1985  
1986 </td>
1987 </tr>
1988 </table>
1989
1990 <h2>Structs mainly used in receive messages</h2>
1991
1992 <h4>STRUCTURE challenge_defaults</h4>
1993 <p>
1994 Send soon after log-in to set the defaults for game challenges.
1995 </p>
1996 <table border="1" width="100%">
1997 <tr>
1998 <th width="10%">NAME</th>
1999 <th width="10%">TYPE</th>
2000 <th width="15%">DEFAULT</th>
2001 <th>DESCRIPTION</th>
2002 <th width="15%">DEC-GUARD</th>
2003 </tr>
2004 <tr>
2005 <td>gametype</td>
2006 <td>U32</td>
2007 <td> </td>
2008 <td>
2009
2010  
2011 </td>
2012 <td>
2013 <b></b>
2014  
2015 </td>
2016 </tr>
2017 <tr>
2018 <td>size</td>
2019 <td>U32</td>
2020 <td> </td>
2021 <td>
2022
2023  
2024 </td>
2025 <td>
2026 <b></b>
2027  
2028 </td>
2029 </tr>
2030 <tr>
2031 <td>timesys</td>
2032 <td>U32</td>
2033 <td> </td>
2034 <td>
2035
2036  
2037 </td>
2038 <td>
2039 <b></b>
2040  
2041 </td>
2042 </tr>
2043 <tr>
2044 <td>time</td>
2045 <td>U32</td>
2046 <td> </td>
2047 <td>
2048
2049  
2050 </td>
2051 <td>
2052 <b></b>
2053  
2054 </td>
2055 </tr>
2056 <tr>
2057 <td>byo_time</td>
2058 <td>U32</td>
2059 <td> </td>
2060 <td>
2061
2062  
2063 </td>
2064 <td>
2065 <b></b>
2066  
2067 </td>
2068 </tr>
2069 <tr>
2070 <td>byo_periods</td>
2071 <td>U32</td>
2072 <td> </td>
2073 <td>
2074
2075  
2076 </td>
2077 <td>
2078 <b></b>
2079  
2080 </td>
2081 </tr>
2082 <tr>
2083 <td>can_time</td>
2084 <td>U32</td>
2085 <td> </td>
2086 <td>
2087
2088  
2089 </td>
2090 <td>
2091 <b></b>
2092  
2093 </td>
2094 </tr>
2095 <tr>
2096 <td>can_stones</td>
2097 <td>U32</td>
2098 <td> </td>
2099 <td>
2100
2101  
2102 </td>
2103 <td>
2104 <b></b>
2105  
2106 </td>
2107 </tr>
2108 </table>
2109
2110 <h4>STRUCTURE challenge</h4>
2111 CLASS: KGS::Challenge<br />
2112 <p>
2113 A challenge.
2114
2115 </p>
2116 <table border="1" width="100%">
2117 <tr>
2118 <th width="10%">NAME</th>
2119 <th width="10%">TYPE</th>
2120 <th width="15%">DEFAULT</th>
2121 <th>DESCRIPTION</th>
2122 <th width="15%">DEC-GUARD</th>
2123 </tr>
2124 <tr>
2125 <td>user1</td>
2126 <td>user</td>
2127 <td> </td>
2128 <td>
2129
2130  
2131 </td>
2132 <td>
2133 <b></b>
2134  
2135 </td>
2136 </tr>
2137 <tr>
2138 <td>user2</td>
2139 <td>user</td>
2140 <td> </td>
2141 <td>
2142
2143  
2144 </td>
2145 <td>
2146 <b></b>
2147  
2148 </td>
2149 </tr>
2150 <tr>
2151 <td>gametype</td>
2152 <td>U32</td>
2153 <td> </td>
2154 <td>
2155
2156  
2157 </td>
2158 <td>
2159 <b></b>
2160  
2161 </td>
2162 </tr>
2163 <tr>
2164 <td>rules</td>
2165 <td>rules</td>
2166 <td> </td>
2167 <td>
2168 Maybe the rules" are in TREE format. I forgot.
2169
2170  
2171 </td>
2172 <td>
2173 <b></b>
2174  
2175 </td>
2176 </tr>
2177 </table>
2178
2179 <h4>STRUCTURE game</h4>
2180 CLASS: KGS::Game<br />
2181 <p>
2182 Basic information about a game. Used in rooms for the gamelist and
2183 in games to detect when a game is saved, changed type (e.g. R =&gt; D)
2184 etc.
2185
2186 </p>
2187 <table border="1" width="100%">
2188 <tr>
2189 <th width="10%">NAME</th>
2190 <th width="10%">TYPE</th>
2191 <th width="15%">DEFAULT</th>
2192 <th>DESCRIPTION</th>
2193 <th width="15%">DEC-GUARD</th>
2194 </tr>
2195 <tr>
2196 <td>channel</td>
2197 <td>U16</td>
2198 <td> </td>
2199 <td>
2200
2201  
2202 </td>
2203 <td>
2204 <b></b>
2205  
2206 </td>
2207 </tr>
2208 <tr>
2209 <td>type</td>
2210 <td>U32</td>
2211 <td> </td>
2212 <td>
2213
2214  
2215 </td>
2216 <td>
2217 <b></b>
2218  
2219 </td>
2220 </tr>
2221 <tr>
2222 <td>user1</td>
2223 <td>user</td>
2224 <td> </td>
2225 <td>
2226 White
2227
2228  
2229 </td>
2230 <td>
2231 <b></b>
2232  
2233 </td>
2234 </tr>
2235 <tr>
2236 <td>user2</td>
2237 <td>user</td>
2238 <td> </td>
2239 <td>
2240 Black
2241
2242  
2243 </td>
2244 <td>
2245 <b></b>
2246  
2247 </td>
2248 </tr>
2249 <tr>
2250 <td>user3</td>
2251 <td>user</td>
2252 <td> </td>
2253 <td>
2254 Owner
2255
2256  
2257 </td>
2258 <td>
2259 <b></b>
2260  
2261 </td>
2262 </tr>
2263 <tr>
2264 <td>size</td>
2265 <td>U32</td>
2266 <td> </td>
2267 <td>
2268
2269  
2270 </td>
2271 <td>
2272 <b></b>
2273  
2274 </td>
2275 </tr>
2276 <tr>
2277 <td>handicap</td>
2278 <td>I32</td>
2279 <td> </td>
2280 <td>
2281 &lt; 0 not fully setup
2282
2283  
2284 </td>
2285 <td>
2286 <b></b>
2287  
2288 </td>
2289 </tr>
2290 <tr>
2291 <td>komi</td>
2292 <td>komi32</td>
2293 <td> </td>
2294 <td>
2295
2296  
2297 </td>
2298 <td>
2299 <b></b>
2300  
2301 </td>
2302 </tr>
2303 <tr>
2304 <td>moves</td>
2305 <td>I16</td>
2306 <td> </td>
2307 <td>
2308 This field reflects either the movenum or the score, sorry, not even guards help, as
2309 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
2310 score (NOT score16!).
2311
2312  
2313 </td>
2314 <td>
2315 <b></b>
2316  
2317 </td>
2318 </tr>
2319 <tr>
2320 <td>flags</td>
2321 <td>U16</td>
2322 <td> </td>
2323 <td>
2324
2325  
2326 </td>
2327 <td>
2328 <b></b>
2329  
2330 </td>
2331 </tr>
2332 <tr>
2333 <td>observers</td>
2334 <td>U32</td>
2335 <td> </td>
2336 <td>
2337
2338  
2339 </td>
2340 <td>
2341 <b></b>
2342  
2343 </td>
2344 </tr>
2345 <tr>
2346 <td>saved</td>
2347 <td>flag</td>
2348 <td> </td>
2349 <td>
2350
2351  
2352 </td>
2353 <td>
2354 <b></b>
2355  
2356 </td>
2357 </tr>
2358 <tr>
2359 <td>notes</td>
2360 <td>STRING</td>
2361 <td> </td>
2362 <td>
2363
2364  
2365 </td>
2366 <td>
2367 <b>handicap</b> &lt; 0
2368  
2369 </td>
2370 </tr>
2371 </table>
2372
2373 <h4>STRUCTURE room_obs</h4>
2374 <p>
2375 Obsolete.
2376
2377 </p>
2378 <table border="1" width="100%">
2379 <tr>
2380 <th width="10%">NAME</th>
2381 <th width="10%">TYPE</th>
2382 <th width="15%">DEFAULT</th>
2383 <th>DESCRIPTION</th>
2384 <th width="15%">DEC-GUARD</th>
2385 </tr>
2386 <tr>
2387 <td>name</td>
2388 <td>roomname</td>
2389 <td> </td>
2390 <td>
2391
2392  
2393 </td>
2394 <td>
2395 <b></b>
2396  
2397 </td>
2398 </tr>
2399 <tr>
2400 <td>channel</td>
2401 <td>U16</td>
2402 <td> </td>
2403 <td>
2404
2405  
2406 </td>
2407 <td>
2408 <b></b>
2409  
2410 </td>
2411 </tr>
2412 <tr>
2413 <td>flags</td>
2414 <td>U32</td>
2415 <td> </td>
2416 <td>
2417
2418  
2419 </td>
2420 <td>
2421 <b></b>
2422  
2423 </td>
2424 </tr>
2425 <tr>
2426 <td>users</td>
2427 <td>U32</td>
2428 <td> </td>
2429 <td>
2430
2431  
2432 </td>
2433 <td>
2434 <b></b>
2435  
2436 </td>
2437 </tr>
2438 </table>
2439
2440 <h4>STRUCTURE room</h4>
2441 CLASS: KGS::Room<br />
2442 <p>
2443 </p>
2444 <table border="1" width="100%">
2445 <tr>
2446 <th width="10%">NAME</th>
2447 <th width="10%">TYPE</th>
2448 <th width="15%">DEFAULT</th>
2449 <th>DESCRIPTION</th>
2450 <th width="15%">DEC-GUARD</th>
2451 </tr>
2452 <tr>
2453 <td>channel</td>
2454 <td>U16</td>
2455 <td> </td>
2456 <td>
2457
2458  
2459 </td>
2460 <td>
2461 <b></b>
2462  
2463 </td>
2464 </tr>
2465 <tr>
2466 <td>flags</td>
2467 <td>U8</td>
2468 <td> </td>
2469 <td>
2470
2471  
2472 </td>
2473 <td>
2474 <b></b>
2475  
2476 </td>
2477 </tr>
2478 <tr>
2479 <td>group</td>
2480 <td>U8</td>
2481 <td> </td>
2482 <td>
2483
2484  
2485 </td>
2486 <td>
2487 <b></b>
2488  
2489 </td>
2490 </tr>
2491 <tr>
2492 <td>users</td>
2493 <td>U16</td>
2494 <td> </td>
2495 <td>
2496
2497  
2498 </td>
2499 <td>
2500 <b></b>
2501  
2502 </td>
2503 </tr>
2504 <tr>
2505 <td>games</td>
2506 <td>U16</td>
2507 <td> </td>
2508 <td>
2509
2510  
2511 </td>
2512 <td>
2513 <b></b>
2514  
2515 </td>
2516 </tr>
2517 <tr>
2518 <td>name</td>
2519 <td>STRING</td>
2520 <td> </td>
2521 <td>
2522
2523  
2524 </td>
2525 <td>
2526 <b></b>
2527  
2528 </td>
2529 </tr>
2530 </table>
2531
2532 <h4>STRUCTURE scorevalues</h4>
2533 CLASS: KGS::Score<br />
2534 <p>
2535 </p>
2536 <table border="1" width="100%">
2537 <tr>
2538 <th width="10%">NAME</th>
2539 <th width="10%">TYPE</th>
2540 <th width="15%">DEFAULT</th>
2541 <th>DESCRIPTION</th>
2542 <th width="15%">DEC-GUARD</th>
2543 </tr>
2544 <tr>
2545 <td>score</td>
2546 <td>score32</td>
2547 <td> </td>
2548 <td>
2549
2550  
2551 </td>
2552 <td>
2553 <b></b>
2554  
2555 </td>
2556 </tr>
2557 <tr>
2558 <td>territory</td>
2559 <td>U32</td>
2560 <td> </td>
2561 <td>
2562
2563  
2564 </td>
2565 <td>
2566 <b></b>
2567  
2568 </td>
2569 </tr>
2570 <tr>
2571 <td>captures</td>
2572 <td>U32</td>
2573 <td> </td>
2574 <td>
2575
2576  
2577 </td>
2578 <td>
2579 <b></b>
2580  
2581 </td>
2582 </tr>
2583 <tr>
2584 <td>i3</td>
2585 <td>U32</td>
2586 <td> </td>
2587 <td>
2588
2589  
2590 </td>
2591 <td>
2592 <b></b>
2593  
2594 </td>
2595 </tr>
2596 <tr>
2597 <td>f2</td>
2598 <td>U32</td>
2599 <td> </td>
2600 <td>
2601
2602  
2603 </td>
2604 <td>
2605 <b></b>
2606  
2607 </td>
2608 </tr>
2609 <tr>
2610 <td>komi</td>
2611 <td>komi324</td>
2612 <td> </td>
2613 <td>
2614
2615  
2616 </td>
2617 <td>
2618 <b></b>
2619  
2620 </td>
2621 </tr>
2622 <tr>
2623 <td>i4</td>
2624 <td>U32</td>
2625 <td> </td>
2626 <td>
2627 Apparently the i3, f2, i4 are zero.
2628
2629  
2630 </td>
2631 <td>
2632 <b></b>
2633  
2634 </td>
2635 </tr>
2636 </table>
2637
2638 <h4>STRUCTURE game_record</h4>
2639 CLASS: KGS::GameRecord<br />
2640 <p>
2641 <p>A single game record entry, as seen in <a href="#R0008">userinfo(0008)</a>.</p>
2642 </p>
2643 <table border="1" width="100%">
2644 <tr>
2645 <th width="10%">NAME</th>
2646 <th width="10%">TYPE</th>
2647 <th width="15%">DEFAULT</th>
2648 <th>DESCRIPTION</th>
2649 <th width="15%">DEC-GUARD</th>
2650 </tr>
2651 <tr>
2652 <td>timestamp</td>
2653 <td>timestamp</td>
2654 <td> </td>
2655 <td>
2656 Time this game was played.
2657
2658  
2659 </td>
2660 <td>
2661 <b></b>
2662  
2663 </td>
2664 </tr>
2665 <tr>
2666 <td>flags</td>
2667 <td>U8</td>
2668 <td> </td>
2669 <td>
2670 High four bits are handicap, low four bits are gametype (encoded strangely? unclear).
2671
2672  
2673 </td>
2674 <td>
2675 <b></b>
2676  
2677 </td>
2678 </tr>
2679 <tr>
2680 <td>user1</td>
2681 <td>user</td>
2682 <td> </td>
2683 <td>
2684 White, flags contain low 8 bits of revision (bits 16-23).
2685
2686  
2687 </td>
2688 <td>
2689 <b></b>
2690  
2691 </td>
2692 </tr>
2693 <tr>
2694 <td>user2</td>
2695 <td>user</td>
2696 <td> </td>
2697 <td>
2698 Black, flags contain high 8 bits of revision (bits 16-23).
2699
2700  
2701 </td>
2702 <td>
2703 <b></b>
2704  
2705 </td>
2706 </tr>
2707 <tr>
2708 <td>user3</td>
2709 <td>user</td>
2710 <td> </td>
2711 <td>
2712 Owner (or empty)
2713
2714  
2715 </td>
2716 <td>
2717 <b></b>
2718  
2719 </td>
2720 </tr>
2721 <tr>
2722 <td>komi</td>
2723 <td>komi16</td>
2724 <td> </td>
2725 <td>
2726
2727  
2728 </td>
2729 <td>
2730 <b></b>
2731  
2732 </td>
2733 </tr>
2734 <tr>
2735 <td>score</td>
2736 <td>score16</td>
2737 <td> </td>
2738 <td>
2739
2740  
2741 </td>
2742 <td>
2743 <b></b>
2744  
2745 </td>
2746 </tr>
2747 <tr>
2748 <td>status</td>
2749 <td>U8</td>
2750 <td> </td>
2751 <td>
2752 0x80 inprogress
2753
2754  
2755 </td>
2756 <td>
2757 <b></b>
2758  
2759 </td>
2760 </tr>
2761 </table>
2762
2763 <h2>Receive messages</h2>
2764
2765 <h4>
2766 <a name="R0001"></a>RECV
2767 MESSAGE login</h4>
2768 NUMERIC TYPE (hex): 0001
2769 (possibly in response to
2770 <a href="#S0000">login(0000)</a>
2771 )
2772 <p>
2773 </p>
2774 <table border="1" width="100%">
2775 <tr>
2776 <th width="10%">NAME</th>
2777 <th width="10%">TYPE</th>
2778 <th width="15%">DEFAULT</th>
2779 <th>DESCRIPTION</th>
2780 <th width="15%">DEC-GUARD</th>
2781 </tr>
2782 <tr>
2783 <td>result</td>
2784 <td>CONSTANT</td>
2785 <td>"login ok" </td>
2786 <td>
2787
2788  
2789 </td>
2790 <td>
2791 <b></b>
2792  
2793 </td>
2794 </tr>
2795 <tr>
2796 <td>success</td>
2797 <td>CONSTANT</td>
2798 <td>1 </td>
2799 <td>
2800
2801  
2802 </td>
2803 <td>
2804 <b></b>
2805  
2806 </td>
2807 </tr>
2808 </table>
2809
2810 <h4>
2811 <a name="R0002"></a>RECV
2812 MESSAGE login</h4>
2813 NUMERIC TYPE (hex): 0002
2814 (possibly in response to
2815 <a href="#S0000">login(0000)</a>
2816 )
2817 <p>
2818 </p>
2819 <table border="1" width="100%">
2820 <tr>
2821 <th width="10%">NAME</th>
2822 <th width="10%">TYPE</th>
2823 <th width="15%">DEFAULT</th>
2824 <th>DESCRIPTION</th>
2825 <th width="15%">DEC-GUARD</th>
2826 </tr>
2827 <tr>
2828 <td>result</td>
2829 <td>CONSTANT</td>
2830 <td>"guest login ok" </td>
2831 <td>
2832
2833  
2834 </td>
2835 <td>
2836 <b></b>
2837  
2838 </td>
2839 </tr>
2840 <tr>
2841 <td>success</td>
2842 <td>CONSTANT</td>
2843 <td>1 </td>
2844 <td>
2845
2846  
2847 </td>
2848 <td>
2849 <b></b>
2850  
2851 </td>
2852 </tr>
2853 </table>
2854
2855 <h4>
2856 <a name="R0003"></a>RECV
2857 MESSAGE login</h4>
2858 NUMERIC TYPE (hex): 0003
2859 (possibly in response to
2860 <a href="#S0000">login(0000)</a>
2861 )
2862 <p>
2863 </p>
2864 <table border="1" width="100%">
2865 <tr>
2866 <th width="10%">NAME</th>
2867 <th width="10%">TYPE</th>
2868 <th width="15%">DEFAULT</th>
2869 <th>DESCRIPTION</th>
2870 <th width="15%">DEC-GUARD</th>
2871 </tr>
2872 <tr>
2873 <td>result</td>
2874 <td>CONSTANT</td>
2875 <td>"login error 3" </td>
2876 <td>
2877 ** maybe more following? **
2878
2879  
2880 </td>
2881 <td>
2882 <b></b>
2883  
2884 </td>
2885 </tr>
2886 </table>
2887
2888 <h4>
2889 <a name="R0004"></a>RECV
2890 MESSAGE login</h4>
2891 NUMERIC TYPE (hex): 0004
2892 (possibly in response to
2893 <a href="#S0000">login(0000)</a>
2894 )
2895 <p>
2896 </p>
2897 <table border="1" width="100%">
2898 <tr>
2899 <th width="10%">NAME</th>
2900 <th width="10%">TYPE</th>
2901 <th width="15%">DEFAULT</th>
2902 <th>DESCRIPTION</th>
2903 <th width="15%">DEC-GUARD</th>
2904 </tr>
2905 <tr>
2906 <td>result</td>
2907 <td>CONSTANT</td>
2908 <td>"wrong password" </td>
2909 <td>
2910 ** maybe more following? **
2911
2912  
2913 </td>
2914 <td>
2915 <b></b>
2916  
2917 </td>
2918 </tr>
2919 </table>
2920
2921 <h4>
2922 <a name="R0005"></a>RECV
2923 MESSAGE login</h4>
2924 NUMERIC TYPE (hex): 0005
2925 (possibly in response to
2926 <a href="#S0000">login(0000)</a>
2927 )
2928 <p>
2929 </p>
2930 <table border="1" width="100%">
2931 <tr>
2932 <th width="10%">NAME</th>
2933 <th width="10%">TYPE</th>
2934 <th width="15%">DEFAULT</th>
2935 <th>DESCRIPTION</th>
2936 <th width="15%">DEC-GUARD</th>
2937 </tr>
2938 <tr>
2939 <td>result</td>
2940 <td>CONSTANT</td>
2941 <td>"user unknown" </td>
2942 <td>
2943 ** maybe more following? **
2944
2945  
2946 </td>
2947 <td>
2948 <b></b>
2949  
2950 </td>
2951 </tr>
2952 </table>
2953
2954 <h4>
2955 <a name="R0006"></a>RECV
2956 MESSAGE login</h4>
2957 NUMERIC TYPE (hex): 0006
2958 (possibly in response to
2959 <a href="#S0000">login(0000)</a>
2960 )
2961 <p>
2962 </p>
2963 <table border="1" width="100%">
2964 <tr>
2965 <th width="10%">NAME</th>
2966 <th width="10%">TYPE</th>
2967 <th width="15%">DEFAULT</th>
2968 <th>DESCRIPTION</th>
2969 <th width="15%">DEC-GUARD</th>
2970 </tr>
2971 <tr>
2972 <td>result</td>
2973 <td>CONSTANT</td>
2974 <td>"user exists" </td>
2975 <td>
2976 ** maybe more following? **
2977
2978  
2979 </td>
2980 <td>
2981 <b></b>
2982  
2983 </td>
2984 </tr>
2985 </table>
2986
2987 <h4>
2988 <a name="R0008"></a>RECV
2989 MESSAGE userinfo</h4>
2990 NUMERIC TYPE (hex): 0008
2991 (possibly in response to
2992 <a href="#S0007">req_userinfo(0007)</a>
2993 )
2994 <p>
2995 User info.
2996 </p>
2997 <table border="1" width="100%">
2998 <tr>
2999 <th width="10%">NAME</th>
3000 <th width="10%">TYPE</th>
3001 <th width="15%">DEFAULT</th>
3002 <th>DESCRIPTION</th>
3003 <th width="15%">DEC-GUARD</th>
3004 </tr>
3005 <tr>
3006 <td>user</td>
3007 <td>user</td>
3008 <td> </td>
3009 <td>
3010
3011  
3012 </td>
3013 <td>
3014 <b></b>
3015  
3016 </td>
3017 </tr>
3018 <tr>
3019 <td>_unused</td>
3020 <td>U64</td>
3021 <td> </td>
3022 <td>
3023
3024  
3025 </td>
3026 <td>
3027 <b></b>
3028  
3029 </td>
3030 </tr>
3031 <tr>
3032 <td>realname</td>
3033 <td>realname</td>
3034 <td> </td>
3035 <td>
3036
3037  
3038 </td>
3039 <td>
3040 <b></b>
3041  
3042 </td>
3043 </tr>
3044 <tr>
3045 <td>email</td>
3046 <td>email</td>
3047 <td> </td>
3048 <td>
3049
3050  
3051 </td>
3052 <td>
3053 <b></b>
3054  
3055 </td>
3056 </tr>
3057 <tr>
3058 <td>info</td>
3059 <td>userinfo</td>
3060 <td> </td>
3061 <td>
3062
3063  
3064 </td>
3065 <td>
3066 <b></b>
3067  
3068 </td>
3069 </tr>
3070 <tr>
3071 <td>homepage</td>
3072 <td>url</td>
3073 <td> </td>
3074 <td>
3075
3076  
3077 </td>
3078 <td>
3079 <b></b>
3080  
3081 </td>
3082 </tr>
3083 <tr>
3084 <td>regdate</td>
3085 <td>timestamp</td>
3086 <td> </td>
3087 <td>
3088 When the user registered (0 == never registered).
3089
3090  
3091 </td>
3092 <td>
3093 <b></b>
3094  
3095 </td>
3096 </tr>
3097 <tr>
3098 <td>lastlogin</td>
3099 <td>timestamp</td>
3100 <td> </td>
3101 <td>
3102 When the user logged in for the last time.
3103
3104  
3105 </td>
3106 <td>
3107 <b></b>
3108  
3109 </td>
3110 </tr>
3111 </table>
3112
3113 <h4>
3114 <a name="R0018"></a>RECV
3115 MESSAGE login</h4>
3116 NUMERIC TYPE (hex): 0018
3117 (possibly in response to
3118 <a href="#S0000">login(0000)</a>
3119 )
3120 <p>
3121 </p>
3122 <table border="1" width="100%">
3123 <tr>
3124 <th width="10%">NAME</th>
3125 <th width="10%">TYPE</th>
3126 <th width="15%">DEFAULT</th>
3127 <th>DESCRIPTION</th>
3128 <th width="15%">DEC-GUARD</th>
3129 </tr>
3130 <tr>
3131 <td>result</td>
3132 <td>CONSTANT</td>
3133 <td>"login error 18" </td>
3134 <td>
3135 ** maybe more following? **
3136
3137  
3138 </td>
3139 <td>
3140 <b></b>
3141  
3142 </td>
3143 </tr>
3144 </table>
3145
3146 <h4>
3147 <a name="R0022"></a>RECV
3148 MESSAGE login</h4>
3149 NUMERIC TYPE (hex): 0022
3150 (possibly in response to
3151 <a href="#S0000">login(0000)</a>
3152 )
3153 <p>
3154 </p>
3155 <table border="1" width="100%">
3156 <tr>
3157 <th width="10%">NAME</th>
3158 <th width="10%">TYPE</th>
3159 <th width="15%">DEFAULT</th>
3160 <th>DESCRIPTION</th>
3161 <th width="15%">DEC-GUARD</th>
3162 </tr>
3163 <tr>
3164 <td>result</td>
3165 <td>CONSTANT</td>
3166 <td>"user or ip blocked" </td>
3167 <td>
3168
3169  
3170 </td>
3171 <td>
3172 <b></b>
3173  
3174 </td>
3175 </tr>
3176 <tr>
3177 <td>reason</td>
3178 <td>STRING</td>
3179 <td> </td>
3180 <td>
3181
3182  
3183 </td>
3184 <td>
3185 <b></b>
3186  
3187 </td>
3188 </tr>
3189 </table>
3190
3191 <h4>
3192 <a name="R0013"></a>RECV
3193 MESSAGE msg_chat</h4>
3194 NUMERIC TYPE (hex): 0013<p>
3195 </p>
3196 <table border="1" width="100%">
3197 <tr>
3198 <th width="10%">NAME</th>
3199 <th width="10%">TYPE</th>
3200 <th width="15%">DEFAULT</th>
3201 <th>DESCRIPTION</th>
3202 <th width="15%">DEC-GUARD</th>
3203 </tr>
3204 <tr>
3205 <td>user1</td>
3206 <td>username</td>
3207 <td> </td>
3208 <td>
3209
3210  
3211 </td>
3212 <td>
3213 <b></b>
3214  
3215 </td>
3216 </tr>
3217 <tr>
3218 <td>user2</td>
3219 <td>username</td>
3220 <td> </td>
3221 <td>
3222
3223  
3224 </td>
3225 <td>
3226 <b></b>
3227  
3228 </td>
3229 </tr>
3230 <tr>
3231 <td>message</td>
3232 <td>STRING</td>
3233 <td> </td>
3234 <td>
3235
3236  
3237 </td>
3238 <td>
3239 <b></b>
3240  
3241 </td>
3242 </tr>
3243 </table>
3244
3245 <h4>
3246 <a name="R0015"></a>RECV
3247 MESSAGE stats</h4>
3248 NUMERIC TYPE (hex): 0015
3249 (possibly in response to
3250 <a href="#S0014">req_stats(0014)</a>
3251 )
3252 <p>
3253 </p>
3254 <table border="1" width="100%">
3255 <tr>
3256 <th width="10%">NAME</th>
3257 <th width="10%">TYPE</th>
3258 <th width="15%">DEFAULT</th>
3259 <th>DESCRIPTION</th>
3260 <th width="15%">DEC-GUARD</th>
3261 </tr>
3262 <tr>
3263 <td>ver_major</td>
3264 <td>U16</td>
3265 <td> </td>
3266 <td>
3267
3268  
3269 </td>
3270 <td>
3271 <b></b>
3272  
3273 </td>
3274 </tr>
3275 <tr>
3276 <td>ver_minor</td>
3277 <td>U16</td>
3278 <td> </td>
3279 <td>
3280
3281  
3282 </td>
3283 <td>
3284 <b></b>
3285  
3286 </td>
3287 </tr>
3288 <tr>
3289 <td>ver_micro</td>
3290 <td>U16</td>
3291 <td> </td>
3292 <td>
3293
3294  
3295 </td>
3296 <td>
3297 <b></b>
3298  
3299 </td>
3300 </tr>
3301 <tr>
3302 <td>boot_time</td>
3303 <td>timestamp</td>
3304 <td> </td>
3305 <td>
3306
3307  
3308 </td>
3309 <td>
3310 <b></b>
3311  
3312 </td>
3313 </tr>
3314 <tr>
3315 <td>users_cur</td>
3316 <td>U32</td>
3317 <td> </td>
3318 <td>
3319
3320  
3321 </td>
3322 <td>
3323 <b></b>
3324  
3325 </td>
3326 </tr>
3327 <tr>
3328 <td>users_max</td>
3329 <td>U32</td>
3330 <td> </td>
3331 <td>
3332
3333  
3334 </td>
3335 <td>
3336 <b></b>
3337  
3338 </td>
3339 </tr>
3340 <tr>
3341 <td>users_lim</td>
3342 <td>U32</td>
3343 <td> </td>
3344 <td>
3345
3346  
3347 </td>
3348 <td>
3349 <b></b>
3350  
3351 </td>
3352 </tr>
3353 <tr>
3354 <td>accts_cur</td>
3355 <td>U32</td>
3356 <td> </td>
3357 <td>
3358
3359  
3360 </td>
3361 <td>
3362 <b></b>
3363  
3364 </td>
3365 </tr>
3366 <tr>
3367 <td>accts_max</td>
3368 <td>U32</td>
3369 <td> </td>
3370 <td>
3371
3372  
3373 </td>
3374 <td>
3375 <b></b>
3376  
3377 </td>
3378 </tr>
3379 <tr>
3380 <td>unknown1</td>
3381 <td>U32</td>
3382 <td> </td>
3383 <td>
3384
3385  
3386 </td>
3387 <td>
3388 <b></b>
3389  
3390 </td>
3391 </tr>
3392 <tr>
3393 <td>work_max</td>
3394 <td>U32</td>
3395 <td> </td>
3396 <td>
3397
3398  
3399 </td>
3400 <td>
3401 <b></b>
3402  
3403 </td>
3404 </tr>
3405 <tr>
3406 <td>rooms_cur</td>
3407 <td>U32</td>
3408 <td> </td>
3409 <td>
3410
3411  
3412 </td>
3413 <td>
3414 <b></b>
3415  
3416 </td>
3417 </tr>
3418 <tr>
3419 <td>rooms_max</td>
3420 <td>U32</td>
3421 <td> </td>
3422 <td>
3423
3424  
3425 </td>
3426 <td>
3427 <b></b>
3428  
3429 </td>
3430 </tr>
3431 <tr>
3432 <td>rooms_lim</td>
3433 <td>U32</td>
3434 <td> </td>
3435 <td>
3436
3437  
3438 </td>
3439 <td>
3440 <b></b>
3441  
3442 </td>
3443 </tr>
3444 <tr>
3445 <td>games_cur</td>
3446 <td>U32</td>
3447 <td> </td>
3448 <td>
3449
3450  
3451 </td>
3452 <td>
3453 <b></b>
3454  
3455 </td>
3456 </tr>
3457 <tr>
3458 <td>games_max</td>
3459 <td>U32</td>
3460 <td> </td>
3461 <td>
3462
3463  
3464 </td>
3465 <td>
3466 <b></b>
3467  
3468 </td>
3469 </tr>
3470 <tr>
3471 <td>games_lim</td>
3472 <td>U32</td>
3473 <td> </td>
3474 <td>
3475
3476  
3477 </td>
3478 <td>
3479 <b></b>
3480  
3481 </td>
3482 </tr>
3483 <tr>
3484 <td>results_cur</td>
3485 <td>U32</td>
3486 <td> </td>
3487 <td>
3488
3489  
3490 </td>
3491 <td>
3492 <b></b>
3493  
3494 </td>
3495 </tr>
3496 <tr>
3497 <td>results_max</td>
3498 <td>U32</td>
3499 <td> </td>
3500 <td>
3501
3502  
3503 </td>
3504 <td>
3505 <b></b>
3506  
3507 </td>
3508 </tr>
3509 <tr>
3510 <td>unknown2</td>
3511 <td>U32</td>
3512 <td> </td>
3513 <td>
3514
3515  
3516 </td>
3517 <td>
3518 <b></b>
3519  
3520 </td>
3521 </tr>
3522 <tr>
3523 <td>params_cur</td>
3524 <td>U32</td>
3525 <td> </td>
3526 <td>
3527
3528  
3529 </td>
3530 <td>
3531 <b></b>
3532  
3533 </td>
3534 </tr>
3535 <tr>
3536 <td>params_max</td>
3537 <td>U32</td>
3538 <td> </td>
3539 <td>
3540
3541  
3542 </td>
3543 <td>
3544 <b></b>
3545  
3546 </td>
3547 </tr>
3548 <tr>
3549 <td>bytes_in</td>
3550 <td>U64</td>
3551 <td> </td>
3552 <td>
3553
3554  
3555 </td>
3556 <td>
3557 <b></b>
3558  
3559 </td>
3560 </tr>
3561 <tr>
3562 <td>packets_in</td>
3563 <td>U64</td>
3564 <td> </td>
3565 <td>
3566
3567  
3568 </td>
3569 <td>
3570 <b></b>
3571  
3572 </td>
3573 </tr>
3574 <tr>
3575 <td>bytes_out</td>
3576 <td>U64</td>
3577 <td> </td>
3578 <td>
3579
3580  
3581 </td>
3582 <td>
3583 <b></b>
3584  
3585 </td>
3586 </tr>
3587 <tr>
3588 <td>packets_out</td>
3589 <td>U64</td>
3590 <td> </td>
3591 <td>
3592
3593  
3594 </td>
3595 <td>
3596 <b></b>
3597  
3598 </td>
3599 </tr>
3600 </table>
3601
3602 <h4>
3603 <a name="R0016"></a>RECV
3604 MESSAGE idle_warn</h4>
3605 NUMERIC TYPE (hex): 0016<p>
3606 idle warning, autologout soon (10 minutes...)
3607 </p>
3608 <table border="1" width="100%">
3609 <tr>
3610 <th width="10%">NAME</th>
3611 <th width="10%">TYPE</th>
3612 <th width="15%">DEFAULT</th>
3613 <th>DESCRIPTION</th>
3614 <th width="15%">DEC-GUARD</th>
3615 </tr>
3616 </table>
3617
3618 <h4>
3619 <a name="R001b"></a>RECV
3620 MESSAGE timewarning_default</h4>
3621 NUMERIC TYPE (hex): 001b
3622 (possibly in response to
3623 <a href="#S0000">login(0000)</a>
3624 )
3625 <p>
3626 WILD guess
3627 </p>
3628 <table border="1" width="100%">
3629 <tr>
3630 <th width="10%">NAME</th>
3631 <th width="10%">TYPE</th>
3632 <th width="15%">DEFAULT</th>
3633 <th>DESCRIPTION</th>
3634 <th width="15%">DEC-GUARD</th>
3635 </tr>
3636 <tr>
3637 <td>channel</td>
3638 <td>U16</td>
3639 <td> </td>
3640 <td>
3641
3642  
3643 </td>
3644 <td>
3645 <b></b>
3646  
3647 </td>
3648 </tr>
3649 <tr>
3650 <td>time</td>
3651 <td>U16</td>
3652 <td> </td>
3653 <td>
3654
3655  
3656 </td>
3657 <td>
3658 <b></b>
3659  
3660 </td>
3661 </tr>
3662 </table>
3663
3664 <h4>
3665 <a name="R001c"></a>RECV
3666 MESSAGE idle_err</h4>
3667 NUMERIC TYPE (hex): 001c<p>
3668 autologout
3669 </p>
3670 <table border="1" width="100%">
3671 <tr>
3672 <th width="10%">NAME</th>
3673 <th width="10%">TYPE</th>
3674 <th width="15%">DEFAULT</th>
3675 <th>DESCRIPTION</th>
3676 <th width="15%">DEC-GUARD</th>
3677 </tr>
3678 </table>
3679
3680 <h4>
3681 <a name="R001d"></a>RECV
3682 MESSAGE ping</h4>
3683 NUMERIC TYPE (hex): 001d<p>
3684 Sent by the server regularly, but not answering them
3685 isn't valid. Strange form of keepalive?
3686 </p>
3687 <table border="1" width="100%">
3688 <tr>
3689 <th width="10%">NAME</th>
3690 <th width="10%">TYPE</th>
3691 <th width="15%">DEFAULT</th>
3692 <th>DESCRIPTION</th>
3693 <th width="15%">DEC-GUARD</th>
3694 </tr>
3695 </table>
3696
3697 <h4>
3698 <a name="R001e"></a>RECV
3699 MESSAGE usergraph</h4>
3700 NUMERIC TYPE (hex): 001e
3701 (possibly in response to
3702 <a href="#S001e">req_usergraph(001e)</a>
3703 )
3704 <p>
3705 User graph data.
3706 </p>
3707 <table border="1" width="100%">
3708 <tr>
3709 <th width="10%">NAME</th>
3710 <th width="10%">TYPE</th>
3711 <th width="15%">DEFAULT</th>
3712 <th>DESCRIPTION</th>
3713 <th width="15%">DEC-GUARD</th>
3714 </tr>
3715 <tr>
3716 <td>data</td>
3717 <td>I16</td>
3718 <td> </td>
3719 <td>
3720 If empty, no graph is available. The unit seems to
3721 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
3722 There is probably one entry per day, the newest one last.
3723
3724  
3725 </td>
3726 <td>
3727 <b></b>
3728  
3729 </td>
3730 </tr>
3731 </table>
3732
3733 <h4>
3734 <a name="R001f"></a>RECV
3735 MESSAGE memo</h4>
3736 NUMERIC TYPE (hex): 001f
3737 (possibly in response to
3738 <a href="#S001f">fetch_memos(001f)</a>
3739 )
3740 <p>
3741 Unclear. "Leave Message"?
3742 6 strings following.
3743 </p>
3744 <table border="1" width="100%">
3745 <tr>
3746 <th width="10%">NAME</th>
3747 <th width="10%">TYPE</th>
3748 <th width="15%">DEFAULT</th>
3749 <th>DESCRIPTION</th>
3750 <th width="15%">DEC-GUARD</th>
3751 </tr>
3752 <tr>
3753 <td>s1</td>
3754 <td>STRING</td>
3755 <td> </td>
3756 <td>
3757
3758  
3759 </td>
3760 <td>
3761 <b></b>
3762  
3763 </td>
3764 </tr>
3765 <tr>
3766 <td>s2</td>
3767 <td>STRING</td>
3768 <td> </td>
3769 <td>
3770
3771  
3772 </td>
3773 <td>
3774 <b></b>
3775  
3776 </td>
3777 </tr>
3778 <tr>
3779 <td>s3</td>
3780 <td>STRING</td>
3781 <td> </td>
3782 <td>
3783
3784  
3785 </td>
3786 <td>
3787 <b></b>
3788  
3789 </td>
3790 </tr>
3791 <tr>
3792 <td>s4</td>
3793 <td>STRING</td>
3794 <td> </td>
3795 <td>
3796
3797  
3798 </td>
3799 <td>
3800 <b></b>
3801  
3802 </td>
3803 </tr>
3804 <tr>
3805 <td>s5</td>
3806 <td>STRING</td>
3807 <td> </td>
3808 <td>
3809
3810  
3811 </td>
3812 <td>
3813 <b></b>
3814  
3815 </td>
3816 </tr>
3817 <tr>
3818 <td>s6</td>
3819 <td>STRING</td>
3820 <td> </td>
3821 <td>
3822
3823  
3824 </td>
3825 <td>
3826 <b></b>
3827  
3828 </td>
3829 </tr>
3830 </table>
3831
3832 <h4>
3833 <a name="R0021"></a>RECV
3834 MESSAGE userpic</h4>
3835 NUMERIC TYPE (hex): 0021
3836 (possibly in response to
3837 <a href="#S0021">req_pic(0021)</a>
3838 )
3839 <p>
3840 </p>
3841 <table border="1" width="100%">
3842 <tr>
3843 <th width="10%">NAME</th>
3844 <th width="10%">TYPE</th>
3845 <th width="15%">DEFAULT</th>
3846 <th>DESCRIPTION</th>
3847 <th width="15%">DEC-GUARD</th>
3848 </tr>
3849 <tr>
3850 <td>name</td>
3851 <td>username</td>
3852 <td> </td>
3853 <td>
3854 Reply to pic_req, contains an image in jpeg format.
3855
3856  
3857 </td>
3858 <td>
3859 <b></b>
3860  
3861 </td>
3862 </tr>
3863 <tr>
3864 <td>data</td>
3865 <td>DATA</td>
3866 <td> </td>
3867 <td>
3868
3869  
3870 </td>
3871 <td>
3872 <b></b>
3873  
3874 </td>
3875 </tr>
3876 </table>
3877
3878 <h4>
3879 <a name="R0100"></a>RECV
3880 MESSAGE gnotice</h4>
3881 NUMERIC TYPE (hex): 0100
3882 (possibly in response to
3883 <a href="#S0100">gnotice(0100)</a>
3884 )
3885 <p>
3886 global notice, sent to everybody
3887 </p>
3888 <table border="1" width="100%">
3889 <tr>
3890 <th width="10%">NAME</th>
3891 <th width="10%">TYPE</th>
3892 <th width="15%">DEFAULT</th>
3893 <th>DESCRIPTION</th>
3894 <th width="15%">DEC-GUARD</th>
3895 </tr>
3896 <tr>
3897 <td>notice</td>
3898 <td>STRING</td>
3899 <td> </td>
3900 <td>
3901
3902  
3903 </td>
3904 <td>
3905 <b></b>
3906  
3907 </td>
3908 </tr>
3909 </table>
3910
3911 <h4>
3912 <a name="R0202"></a>RECV
3913 MESSAGE upd_user</h4>
3914 NUMERIC TYPE (hex): 0202<p>
3915 # maybe soe notify? Totally unclear.
3916 # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
3917 </p>
3918 <table border="1" width="100%">
3919 <tr>
3920 <th width="10%">NAME</th>
3921 <th width="10%">TYPE</th>
3922 <th width="15%">DEFAULT</th>
3923 <th>DESCRIPTION</th>
3924 <th width="15%">DEC-GUARD</th>
3925 </tr>
3926 <tr>
3927 <td>location</td>
3928 <td>U32</td>
3929 <td> </td>
3930 <td>
3931
3932  
3933 </td>
3934 <td>
3935 <b></b>
3936  
3937 </td>
3938 </tr>
3939 <tr>
3940 <td>user</td>
3941 <td>user</td>
3942 <td> </td>
3943 <td>
3944
3945  
3946 </td>
3947 <td>
3948 <b></b>
3949  
3950 </td>
3951 </tr>
3952 <tr>
3953 <td>lotsofinfo</td>
3954 <td>DATA</td>
3955 <td> </td>
3956 <td>
3957
3958  
3959 </td>
3960 <td>
3961 <b>location</b> == 2
3962  
3963 </td>
3964 </tr>
3965 </table>
3966
3967 <h4>
3968 <a name="R0310"></a>RECV
3969 MESSAGE priv_room</h4>
3970 NUMERIC TYPE (hex): 0310<p>
3971 "permission denied" when joining a room
3972 </p>
3973 <table border="1" width="100%">
3974 <tr>
3975 <th width="10%">NAME</th>
3976 <th width="10%">TYPE</th>
3977 <th width="15%">DEFAULT</th>
3978 <th>DESCRIPTION</th>
3979 <th width="15%">DEC-GUARD</th>
3980 </tr>
3981 <tr>
3982 <td>name</td>
3983 <td>STRING</td>
3984 <td> </td>
3985 <td>
3986
3987  
3988 </td>
3989 <td>
3990 <b></b>
3991  
3992 </td>
3993 </tr>
3994 </table>
3995
3996 <h4>
3997 <a name="R0318"></a>RECV
3998 MESSAGE upd_rooms</h4>
3999 NUMERIC TYPE (hex): 0318
4000 (possibly in response to
4001 <a href="#S0318">list_rooms(0318)</a>
4002 )
4003 <p>
4004 </p>
4005 <table border="1" width="100%">
4006 <tr>
4007 <th width="10%">NAME</th>
4008 <th width="10%">TYPE</th>
4009 <th width="15%">DEFAULT</th>
4010 <th>DESCRIPTION</th>
4011 <th width="15%">DEC-GUARD</th>
4012 </tr>
4013 <tr>
4014 <td>rooms</td>
4015 <td>room</td>
4016 <td> </td>
4017 <td>
4018
4019  
4020 </td>
4021 <td>
4022 <b></b>
4023  
4024 </td>
4025 </tr>
4026 </table>
4027
4028 <h4>
4029 <a name="R0411"></a>RECV
4030 MESSAGE chal_defaults</h4>
4031 NUMERIC TYPE (hex): 0411
4032 (possibly in response to
4033 <a href="#S0000">login(0000)</a>
4034 )
4035 <p>
4036 </p>
4037 <table border="1" width="100%">
4038 <tr>
4039 <th width="10%">NAME</th>
4040 <th width="10%">TYPE</th>
4041 <th width="15%">DEFAULT</th>
4042 <th>DESCRIPTION</th>
4043 <th width="15%">DEC-GUARD</th>
4044 </tr>
4045 <tr>
4046 <td>channel</td>
4047 <td>U16</td>
4048 <td> </td>
4049 <td>
4050
4051  
4052 </td>
4053 <td>
4054 <b></b>
4055  
4056 </td>
4057 </tr>
4058 <tr>
4059 <td>defaults</td>
4060 <td>challenge_defaults</td>
4061 <td> </td>
4062 <td>
4063
4064  
4065 </td>
4066 <td>
4067 <b></b>
4068  
4069 </td>
4070 </tr>
4071 </table>
4072
4073 <h4>
4074 <a name="S0412"></a>SEND
4075 MESSAGE rej_game</h4>
4076 NUMERIC TYPE (hex): 0412<p>
4077 Unable to create challenge. The channel might be optional.
4078 </p>
4079 <table border="1" width="100%">
4080 <tr>
4081 <th width="10%">NAME</th>
4082 <th width="10%">TYPE</th>
4083 <th width="15%">DEFAULT</th>
4084 <th>DESCRIPTION</th>
4085 <th width="15%">DEC-GUARD</th>
4086 </tr>
4087 <tr>
4088 <td>channel</td>
4089 <td>U16</td>
4090 <td> </td>
4091 <td>
4092
4093  
4094 </td>
4095 <td>
4096 <b></b>
4097  
4098 </td>
4099 </tr>
4100 </table>
4101
4102 <h4>
4103 <a name="R0414"></a>RECV
4104 MESSAGE game_record</h4>
4105 NUMERIC TYPE (hex): 0414
4106 (possibly in response to
4107 <a href="#S0413">req_game_record(0413)</a>
4108 )
4109 <p>
4110 The users game record.
4111 </p>
4112 <table border="1" width="100%">
4113 <tr>
4114 <th width="10%">NAME</th>
4115 <th width="10%">TYPE</th>
4116 <th width="15%">DEFAULT</th>
4117 <th>DESCRIPTION</th>
4118 <th width="15%">DEC-GUARD</th>
4119 </tr>
4120 <tr>
4121 <td>name</td>
4122 <td>username</td>
4123 <td> </td>
4124 <td>
4125
4126  
4127 </td>
4128 <td>
4129 <b></b>
4130  
4131 </td>
4132 </tr>
4133 <tr>
4134 <td>more</td>
4135 <td>flag</td>
4136 <td> </td>
4137 <td>
4138 Wether more games are available (must be requested manually)
4139
4140  
4141 </td>
4142 <td>
4143 <b></b>
4144  
4145 </td>
4146 </tr>
4147 <tr>
4148 <td>games</td>
4149 <td>game_record</td>
4150 <td> </td>
4151 <td>
4152
4153  
4154 </td>
4155 <td>
4156 <b></b>
4157  
4158 </td>
4159 </tr>
4160 </table>
4161
4162 <h4>
4163 <a name="R041c"></a>RECV
4164 MESSAGE upd_game2</h4>
4165 NUMERIC TYPE (hex): 041c<p>
4166 Unclear.
4167 </p>
4168 <table border="1" width="100%">
4169 <tr>
4170 <th width="10%">NAME</th>
4171 <th width="10%">TYPE</th>
4172 <th width="15%">DEFAULT</th>
4173 <th>DESCRIPTION</th>
4174 <th width="15%">DEC-GUARD</th>
4175 </tr>
4176 <tr>
4177 <td>channel_junk</td>
4178 <td>U16</td>
4179 <td> </td>
4180 <td>
4181
4182  
4183 </td>
4184 <td>
4185 <b></b>
4186  
4187 </td>
4188 </tr>
4189 <tr>
4190 <td>game</td>
4191 <td>game</td>
4192 <td> </td>
4193 <td>
4194
4195  
4196 </td>
4197 <td>
4198 <b></b>
4199  
4200 </td>
4201 </tr>
4202 </table>
4203
4204 <h3>Room messages</h3>
4205
4206 <p>Not all room messages are for rooms only, and rooms need to parse
4207 not only these messages. Orthogonality, what for?</p>
4208
4209 <h4>
4210 <a name="R4300"></a>RECV
4211 MESSAGE join_room</h4>
4212 NUMERIC TYPE (hex): 4300
4213 (possibly in response to
4214 <a href="#S4300">join_room(4300)</a>
4215 )
4216 <p>
4217 </p>
4218 <table border="1" width="100%">
4219 <tr>
4220 <th width="10%">NAME</th>
4221 <th width="10%">TYPE</th>
4222 <th width="15%">DEFAULT</th>
4223 <th>DESCRIPTION</th>
4224 <th width="15%">DEC-GUARD</th>
4225 </tr>
4226 <tr>
4227 <td>channel</td>
4228 <td>U16</td>
4229 <td> </td>
4230 <td>
4231
4232  
4233 </td>
4234 <td>
4235 <b></b>
4236  
4237 </td>
4238 </tr>
4239 <tr>
4240 <td>users</td>
4241 <td>user</td>
4242 <td> </td>
4243 <td>
4244
4245  
4246 </td>
4247 <td>
4248 <b></b>
4249  
4250 </td>
4251 </tr>
4252 </table>
4253
4254 <h4>
4255 <a name="R4301"></a>RECV
4256 MESSAGE msg_room</h4>
4257 NUMERIC TYPE (hex): 4301<p>
4258 </p>
4259 <table border="1" width="100%">
4260 <tr>
4261 <th width="10%">NAME</th>
4262 <th width="10%">TYPE</th>
4263 <th width="15%">DEFAULT</th>
4264 <th>DESCRIPTION</th>
4265 <th width="15%">DEC-GUARD</th>
4266 </tr>
4267 <tr>
4268 <td>channel</td>
4269 <td>U16</td>
4270 <td> </td>
4271 <td>
4272
4273  
4274 </td>
4275 <td>
4276 <b></b>
4277  
4278 </td>
4279 </tr>
4280 <tr>
4281 <td>name</td>
4282 <td>username</td>
4283 <td> </td>
4284 <td>
4285
4286  
4287 </td>
4288 <td>
4289 <b></b>
4290  
4291 </td>
4292 </tr>
4293 <tr>
4294 <td>message</td>
4295 <td>STRING</td>
4296 <td> </td>
4297 <td>
4298
4299  
4300 </td>
4301 <td>
4302 <b></b>
4303  
4304 </td>
4305 </tr>
4306 </table>
4307
4308 <h4>
4309 <a name="R4302"></a>RECV
4310 MESSAGE part_room</h4>
4311 NUMERIC TYPE (hex): 4302<p>
4312 </p>
4313 <table border="1" width="100%">
4314 <tr>
4315 <th width="10%">NAME</th>
4316 <th width="10%">TYPE</th>
4317 <th width="15%">DEFAULT</th>
4318 <th>DESCRIPTION</th>
4319 <th width="15%">DEC-GUARD</th>
4320 </tr>
4321 <tr>
4322 <td>channel</td>
4323 <td>U16</td>
4324 <td> </td>
4325 <td>
4326
4327  
4328 </td>
4329 <td>
4330 <b></b>
4331  
4332 </td>
4333 </tr>
4334 <tr>
4335 <td>user</td>
4336 <td>user</td>
4337 <td> </td>
4338 <td>
4339
4340  
4341 </td>
4342 <td>
4343 <b></b>
4344  
4345 </td>
4346 </tr>
4347 </table>
4348
4349 <h4>
4350 <a name="R4303"></a>RECV
4351 MESSAGE del_room</h4>
4352 NUMERIC TYPE (hex): 4303<p>
4353 </p>
4354 <table border="1" width="100%">
4355 <tr>
4356 <th width="10%">NAME</th>
4357 <th width="10%">TYPE</th>
4358 <th width="15%">DEFAULT</th>
4359 <th>DESCRIPTION</th>
4360 <th width="15%">DEC-GUARD</th>
4361 </tr>
4362 <tr>
4363 <td>channel</td>
4364 <td>U16</td>
4365 <td> </td>
4366 <td>
4367
4368  
4369 </td>
4370 <td>
4371 <b></b>
4372  
4373 </td>
4374 </tr>
4375 </table>
4376
4377 <h4>
4378 <a name="R4304"></a>RECV
4379 MESSAGE upd_games</h4>
4380 NUMERIC TYPE (hex): 4304<p>
4381 </p>
4382 <table border="1" width="100%">
4383 <tr>
4384 <th width="10%">NAME</th>
4385 <th width="10%">TYPE</th>
4386 <th width="15%">DEFAULT</th>
4387 <th>DESCRIPTION</th>
4388 <th width="15%">DEC-GUARD</th>
4389 </tr>
4390 <tr>
4391 <td>channel</td>
4392 <td>U16</td>
4393 <td> </td>
4394 <td>
4395
4396  
4397 </td>
4398 <td>
4399 <b></b>
4400  
4401 </td>
4402 </tr>
4403 <tr>
4404 <td>games</td>
4405 <td>game</td>
4406 <td> </td>
4407 <td>
4408
4409  
4410 </td>
4411 <td>
4412 <b></b>
4413  
4414 </td>
4415 </tr>
4416 </table>
4417
4418 <h4>
4419 <a name="R4319"></a>RECV
4420 MESSAGE desc_room</h4>
4421 NUMERIC TYPE (hex): 4319<p>
4422 </p>
4423 <table border="1" width="100%">
4424 <tr>
4425 <th width="10%">NAME</th>
4426 <th width="10%">TYPE</th>
4427 <th width="15%">DEFAULT</th>
4428 <th>DESCRIPTION</th>
4429 <th width="15%">DEC-GUARD</th>
4430 </tr>
4431 <tr>
4432 <td>channel</td>
4433 <td>U16</td>
4434 <td> </td>
4435 <td>
4436
4437  
4438 </td>
4439 <td>
4440 <b></b>
4441  
4442 </td>
4443 </tr>
4444 <tr>
4445 <td>owner</td>
4446 <td>username</td>
4447 <td> </td>
4448 <td>
4449
4450  
4451 </td>
4452 <td>
4453 <b></b>
4454  
4455 </td>
4456 </tr>
4457 <tr>
4458 <td>description</td>
4459 <td>STRING</td>
4460 <td> </td>
4461 <td>
4462
4463  
4464 </td>
4465 <td>
4466 <b></b>
4467  
4468 </td>
4469 </tr>
4470 </table>
4471
4472 <h3>Game messages</h3>
4473
4474 <h4>
4475 <a name="R4400"></a>RECV
4476 MESSAGE upd_chal</h4>
4477 NUMERIC TYPE (hex): 4400<p>
4478 Unclear.
4479 </p>
4480 <table border="1" width="100%">
4481 <tr>
4482 <th width="10%">NAME</th>
4483 <th width="10%">TYPE</th>
4484 <th width="15%">DEFAULT</th>
4485 <th>DESCRIPTION</th>
4486 <th width="15%">DEC-GUARD</th>
4487 </tr>
4488 <tr>
4489 <td>channel</td>
4490 <td>U16</td>
4491 <td> </td>
4492 <td>
4493
4494  
4495 </td>
4496 <td>
4497 <b></b>
4498  
4499 </td>
4500 </tr>
4501 <tr>
4502 <td>challenge</td>
4503 <td>challenge</td>
4504 <td> </td>
4505 <td>
4506
4507  
4508 </td>
4509 <td>
4510 <b></b>
4511  
4512 </td>
4513 </tr>
4514 </table>
4515
4516 <h4>
4517 <a name="R4401"></a>RECV
4518 MESSAGE upd_game</h4>
4519 NUMERIC TYPE (hex): 4401<p>
4520 </p>
4521 <table border="1" width="100%">
4522 <tr>
4523 <th width="10%">NAME</th>
4524 <th width="10%">TYPE</th>
4525 <th width="15%">DEFAULT</th>
4526 <th>DESCRIPTION</th>
4527 <th width="15%">DEC-GUARD</th>
4528 </tr>
4529 <tr>
4530 <td>channel</td>
4531 <td>U16</td>
4532 <td> </td>
4533 <td>
4534
4535  
4536 </td>
4537 <td>
4538 <b></b>
4539  
4540 </td>
4541 </tr>
4542 <tr>
4543 <td>game</td>
4544 <td>game</td>
4545 <td> </td>
4546 <td>
4547
4548  
4549 </td>
4550 <td>
4551 <b></b>
4552  
4553 </td>
4554 </tr>
4555 </table>
4556
4557 <h4>
4558 <a name="R4402"></a>RECV
4559 MESSAGE del_game</h4>
4560 NUMERIC TYPE (hex): 4402<p>
4561 </p>
4562 <table border="1" width="100%">
4563 <tr>
4564 <th width="10%">NAME</th>
4565 <th width="10%">TYPE</th>
4566 <th width="15%">DEFAULT</th>
4567 <th>DESCRIPTION</th>
4568 <th width="15%">DEC-GUARD</th>
4569 </tr>
4570 <tr>
4571 <td>channel</td>
4572 <td>U16</td>
4573 <td> </td>
4574 <td>
4575
4576  
4577 </td>
4578 <td>
4579 <b></b>
4580  
4581 </td>
4582 </tr>
4583 </table>
4584
4585 <h4>
4586 <a name="R4403"></a>RECV
4587 MESSAGE upd_observers</h4>
4588 NUMERIC TYPE (hex): 4403<p>
4589 </p>
4590 <table border="1" width="100%">
4591 <tr>
4592 <th width="10%">NAME</th>
4593 <th width="10%">TYPE</th>
4594 <th width="15%">DEFAULT</th>
4595 <th>DESCRIPTION</th>
4596 <th width="15%">DEC-GUARD</th>
4597 </tr>
4598 <tr>
4599 <td>channel</td>
4600 <td>U16</td>
4601 <td> </td>
4602 <td>
4603
4604  
4605 </td>
4606 <td>
4607 <b></b>
4608  
4609 </td>
4610 </tr>
4611 <tr>
4612 <td>users</td>
4613 <td>user</td>
4614 <td> </td>
4615 <td>
4616
4617  
4618 </td>
4619 <td>
4620 <b></b>
4621  
4622 </td>
4623 </tr>
4624 </table>
4625
4626 <h4>
4627 <a name="R4404"></a>RECV
4628 MESSAGE del_observer</h4>
4629 NUMERIC TYPE (hex): 4404<p>
4630 </p>
4631 <table border="1" width="100%">
4632 <tr>
4633 <th width="10%">NAME</th>
4634 <th width="10%">TYPE</th>
4635 <th width="15%">DEFAULT</th>
4636 <th>DESCRIPTION</th>
4637 <th width="15%">DEC-GUARD</th>
4638 </tr>
4639 <tr>
4640 <td>channel</td>
4641 <td>U16</td>
4642 <td> </td>
4643 <td>
4644
4645  
4646 </td>
4647 <td>
4648 <b></b>
4649  
4650 </td>
4651 </tr>
4652 <tr>
4653 <td>name</td>
4654 <td>username</td>
4655 <td> </td>
4656 <td>
4657
4658  
4659 </td>
4660 <td>
4661 <b></b>
4662  
4663 </td>
4664 </tr>
4665 </table>
4666
4667 <h4>
4668 <a name="R4405"></a>RECV
4669 MESSAGE set_tree</h4>
4670 NUMERIC TYPE (hex): 4405<p>
4671 </p>
4672 <table border="1" width="100%">
4673 <tr>
4674 <th width="10%">NAME</th>
4675 <th width="10%">TYPE</th>
4676 <th width="15%">DEFAULT</th>
4677 <th>DESCRIPTION</th>
4678 <th width="15%">DEC-GUARD</th>
4679 </tr>
4680 <tr>
4681 <td>channel</td>
4682 <td>U16</td>
4683 <td> </td>
4684 <td>
4685
4686  
4687 </td>
4688 <td>
4689 <b></b>
4690  
4691 </td>
4692 </tr>
4693 <tr>
4694 <td>tree</td>
4695 <td>TREE</td>
4696 <td> </td>
4697 <td>
4698
4699  
4700 </td>
4701 <td>
4702 <b></b>
4703  
4704 </td>
4705 </tr>
4706 </table>
4707
4708 <h4>
4709 <a name="R4406"></a>RECV
4710 MESSAGE upd_tree</h4>
4711 NUMERIC TYPE (hex): 4406<p>
4712 </p>
4713 <table border="1" width="100%">
4714 <tr>
4715 <th width="10%">NAME</th>
4716 <th width="10%">TYPE</th>
4717 <th width="15%">DEFAULT</th>
4718 <th>DESCRIPTION</th>
4719 <th width="15%">DEC-GUARD</th>
4720 </tr>
4721 <tr>
4722 <td>channel</td>
4723 <td>U16</td>
4724 <td> </td>
4725 <td>
4726
4727  
4728 </td>
4729 <td>
4730 <b></b>
4731  
4732 </td>
4733 </tr>
4734 <tr>
4735 <td>tree</td>
4736 <td>TREE</td>
4737 <td> </td>
4738 <td>
4739
4740  
4741 </td>
4742 <td>
4743 <b></b>
4744  
4745 </td>
4746 </tr>
4747 </table>
4748
4749 <h4>
4750 <a name="R4407"></a>RECV
4751 MESSAGE set_node</h4>
4752 NUMERIC TYPE (hex): 4407<p>
4753 </p>
4754 <table border="1" width="100%">
4755 <tr>
4756 <th width="10%">NAME</th>
4757 <th width="10%">TYPE</th>
4758 <th width="15%">DEFAULT</th>
4759 <th>DESCRIPTION</th>
4760 <th width="15%">DEC-GUARD</th>
4761 </tr>
4762 <tr>
4763 <td>channel</td>
4764 <td>U16</td>
4765 <td> </td>
4766 <td>
4767
4768  
4769 </td>
4770 <td>
4771 <b></b>
4772  
4773 </td>
4774 </tr>
4775 <tr>
4776 <td>node</td>
4777 <td>U32</td>
4778 <td> </td>
4779 <td>
4780
4781  
4782 </td>
4783 <td>
4784 <b></b>
4785  
4786 </td>
4787 </tr>
4788 </table>
4789
4790 <h4>
4791 <a name="R4409"></a>RECV
4792 MESSAGE superko</h4>
4793 NUMERIC TYPE (hex): 4409<p>
4794 Superko-warning.
4795 </p>
4796 <table border="1" width="100%">
4797 <tr>
4798 <th width="10%">NAME</th>
4799 <th width="10%">TYPE</th>
4800 <th width="15%">DEFAULT</th>
4801 <th>DESCRIPTION</th>
4802 <th width="15%">DEC-GUARD</th>
4803 </tr>
4804 <tr>
4805 <td>channel</td>
4806 <td>U16</td>
4807 <td> </td>
4808 <td>
4809
4810  
4811 </td>
4812 <td>
4813 <b></b>
4814  
4815 </td>
4816 </tr>
4817 </table>
4818
4819 <h4>
4820 <a name="R440b"></a>RECV
4821 MESSAGE final_result</h4>
4822 NUMERIC TYPE (hex): 440b<p>
4823 </p>
4824 <table border="1" width="100%">
4825 <tr>
4826 <th width="10%">NAME</th>
4827 <th width="10%">TYPE</th>
4828 <th width="15%">DEFAULT</th>
4829 <th>DESCRIPTION</th>
4830 <th width="15%">DEC-GUARD</th>
4831 </tr>
4832 <tr>
4833 <td>channel</td>
4834 <td>U16</td>
4835 <td> </td>
4836 <td>
4837
4838  
4839 </td>
4840 <td>
4841 <b></b>
4842  
4843 </td>
4844 </tr>
4845 <tr>
4846 <td>blackscore</td>
4847 <td>scorevalues</td>
4848 <td> </td>
4849 <td>
4850
4851  
4852 </td>
4853 <td>
4854 <b></b>
4855  
4856 </td>
4857 </tr>
4858 <tr>
4859 <td>whitescore</td>
4860 <td>scorevalues</td>
4861 <td> </td>
4862 <td>
4863
4864  
4865 </td>
4866 <td>
4867 <b></b>
4868  
4869 </td>
4870 </tr>
4871 </table>
4872
4873 <h4>
4874 <a name="R440e"></a>RECV
4875 MESSAGE req_undo</h4>
4876 NUMERIC TYPE (hex): 440e<p>
4877 </p>
4878 <table border="1" width="100%">
4879 <tr>
4880 <th width="10%">NAME</th>
4881 <th width="10%">TYPE</th>
4882 <th width="15%">DEFAULT</th>
4883 <th>DESCRIPTION</th>
4884 <th width="15%">DEC-GUARD</th>
4885 </tr>
4886 <tr>
4887 <td>channel</td>
4888 <td>U16</td>
4889 <td> </td>
4890 <td>
4891
4892
4893  
4894 </td>
4895 <td>
4896 <b></b>
4897  
4898 </td>
4899 </tr>
4900 </table>
4901
4902 <h4>
4903 <a name="R4410"></a>RECV
4904 MESSAGE resign_game</h4>
4905 NUMERIC TYPE (hex): 4410<p>
4906 </p>
4907 <table border="1" width="100%">
4908 <tr>
4909 <th width="10%">NAME</th>
4910 <th width="10%">TYPE</th>
4911 <th width="15%">DEFAULT</th>
4912 <th>DESCRIPTION</th>
4913 <th width="15%">DEC-GUARD</th>
4914 </tr>
4915 <tr>
4916 <td>channel</td>
4917 <td>U16</td>
4918 <td> </td>
4919 <td>
4920
4921  
4922 </td>
4923 <td>
4924 <b></b>
4925  
4926 </td>
4927 </tr>
4928 <tr>
4929 <td>player</td>
4930 <td>U8</td>
4931 <td> </td>
4932 <td>
4933
4934  
4935 </td>
4936 <td>
4937 <b></b>
4938  
4939 </td>
4940 </tr>
4941 </table>
4942
4943 <h4>
4944 <a name="R441a"></a>RECV
4945 MESSAGE set_teacher</h4>
4946 NUMERIC TYPE (hex): 441a<p>
4947 </p>
4948 <table border="1" width="100%">
4949 <tr>
4950 <th width="10%">NAME</th>
4951 <th width="10%">TYPE</th>
4952 <th width="15%">DEFAULT</th>
4953 <th>DESCRIPTION</th>
4954 <th width="15%">DEC-GUARD</th>
4955 </tr>
4956 <tr>
4957 <td>channel</td>
4958 <td>U16</td>
4959 <td> </td>
4960 <td>
4961
4962  
4963 </td>
4964 <td>
4965 <b></b>
4966  
4967 </td>
4968 </tr>
4969 <tr>
4970 <td>name</td>
4971 <td>username</td>
4972 <td> </td>
4973 <td>
4974
4975  
4976 </td>
4977 <td>
4978 <b></b>
4979  
4980 </td>
4981 </tr>
4982 </table>
4983
4984 <h4>
4985 <a name="R441d"></a>RECV
4986 MESSAGE owner_left</h4>
4987 NUMERIC TYPE (hex): 441d<p>
4988 Unclear.
4989 </p>
4990 <table border="1" width="100%">
4991 <tr>
4992 <th width="10%">NAME</th>
4993 <th width="10%">TYPE</th>
4994 <th width="15%">DEFAULT</th>
4995 <th>DESCRIPTION</th>
4996 <th width="15%">DEC-GUARD</th>
4997 </tr>
4998 <tr>
4999 <td>channel</td>
5000 <td>U16</td>
5001 <td> </td>
5002 <td>
5003
5004  
5005 </td>
5006 <td>
5007 <b></b>
5008  
5009 </td>
5010 </tr>
5011 </table>
5012
5013 <h4>
5014 <a name="R441e"></a>RECV
5015 MESSAGE teacher_left</h4>
5016 NUMERIC TYPE (hex): 441e<p>
5017 Unclear.
5018 </p>
5019 <table border="1" width="100%">
5020 <tr>
5021 <th width="10%">NAME</th>
5022 <th width="10%">TYPE</th>
5023 <th width="15%">DEFAULT</th>
5024 <th>DESCRIPTION</th>
5025 <th width="15%">DEC-GUARD</th>
5026 </tr>
5027 <tr>
5028 <td>channel</td>
5029 <td>U16</td>
5030 <td> </td>
5031 <td>
5032
5033  
5034 </td>
5035 <td>
5036 <b></b>
5037  
5038 </td>
5039 </tr>
5040 </table>
5041
5042 <h4>
5043 <a name="R4422"></a>RECV
5044 MESSAGE unknown4422</h4>
5045 NUMERIC TYPE (hex): 4422<p>
5046 change teacher? something to do with editing?
5047 </p>
5048 <table border="1" width="100%">
5049 <tr>
5050 <th width="10%">NAME</th>
5051 <th width="10%">TYPE</th>
5052 <th width="15%">DEFAULT</th>
5053 <th>DESCRIPTION</th>
5054 <th width="15%">DEC-GUARD</th>
5055 </tr>
5056 <tr>
5057 <td>channel</td>
5058 <td>U16</td>
5059 <td> </td>
5060 <td>
5061
5062  
5063 </td>
5064 <td>
5065 <b></b>
5066  
5067 </td>
5068 </tr>
5069 <tr>
5070 <td>name1</td>
5071 <td>username</td>
5072 <td> </td>
5073 <td>
5074
5075  
5076 </td>
5077 <td>
5078 <b></b>
5079  
5080 </td>
5081 </tr>
5082 <tr>
5083 <td>name2</td>
5084 <td>username</td>
5085 <td> </td>
5086 <td>
5087
5088  
5089 </td>
5090 <td>
5091 <b></b>
5092  
5093 </td>
5094 </tr>
5095 </table>
5096
5097 <h4>
5098 <a name="R4433"></a>RECV
5099 MESSAGE req_result</h4>
5100 NUMERIC TYPE (hex): 4433<p>
5101 Unclear.
5102 </p>
5103 <table border="1" width="100%">
5104 <tr>
5105 <th width="10%">NAME</th>
5106 <th width="10%">TYPE</th>
5107 <th width="15%">DEFAULT</th>
5108 <th>DESCRIPTION</th>
5109 <th width="15%">DEC-GUARD</th>
5110 </tr>
5111 <tr>
5112 <td>channel</td>
5113 <td>U16</td>
5114 <td> </td>
5115 <td>
5116 # # recv_result(?)
5117
5118  
5119 </td>
5120 <td>
5121 <b></b>
5122  
5123 </td>
5124 </tr>
5125 </table>
5126
5127 <h4>
5128 <a name="R4434"></a>RECV
5129 MESSAGE unknown4434</h4>
5130 NUMERIC TYPE (hex): 4434<p>
5131 </p>
5132 <table border="1" width="100%">
5133 <tr>
5134 <th width="10%">NAME</th>
5135 <th width="10%">TYPE</th>
5136 <th width="15%">DEFAULT</th>
5137 <th>DESCRIPTION</th>
5138 <th width="15%">DEC-GUARD</th>
5139 </tr>
5140 <tr>
5141 <td>channel</td>
5142 <td>U16</td>
5143 <td> </td>
5144 <td>
5145
5146  
5147 </td>
5148 <td>
5149 <b></b>
5150  
5151 </td>
5152 </tr>
5153 <tr>
5154 <td>b1</td>
5155 <td>U8</td>
5156 <td> </td>
5157 <td>
5158 ?? !demonstration game??
5159
5160  
5161 </td>
5162 <td>
5163 <b></b>
5164  
5165 </td>
5166 </tr>
5167 </table>
5168
5169 </body>
5170 </html>