utils/mknews.c

Go to the documentation of this file.
00001 #include <assert.h>
00002 #include <stdio.h>
00003 #include <stdlib.h>
00004 #include <unistd.h>
00005 #include <string.h>
00006 #include <inttypes.h>
00007 #include "gamedata.h"
00008 
00009 static int vflag;
00010 
00011 /*
00012  * If doing overlay just copy the button "continue" to the video frames. When
00013  * encoded with ffmepg2theora it actually does not look too bad...
00014  */
00015 static int do_overlay = 0;
00016 
00017 /* C does not allow const to be array dimension initializers, eh */
00018 enum {
00019     ovl_x = 240 - 4,
00020     ovl_w = 316 - 240,
00021     ovl_y = 4 - 4,
00022     ovl_h = 23 - 4,
00023 };
00024 
00025 /* this was ripped from b&w angle shot of us newscaster */
00026 static uint8_t overlay[ovl_w * ovl_h][3] = {
00027   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00028   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00029   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00030   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00031   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00032   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00033   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00034   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00035   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00036   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00037   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00038   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00039   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00040   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00041   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00042   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00043   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00044   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00045   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00046   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00047   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00048   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00049   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00050   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00051   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00052   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00053   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00054   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00055   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00056   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00057   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00058   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00059   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00060   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00061   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00062   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00063   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00064   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00065   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00066   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00067   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00068   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00069   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00070   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00071   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00072   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00073   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00074   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00075   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00076   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00077   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00078   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00079   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00080   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00081   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00082   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00083   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00084   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00085   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00086   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00087   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00088   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00089   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00090   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00091   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00092   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00093   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00094   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00095   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00096   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00097   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00098   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00099   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00100   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00101   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00102   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00103   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00104   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00105   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00106   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00107   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00108   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00109   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00110   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00111   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00112   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00113   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00114   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00115   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00116   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00117   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00118   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00119   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00120   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00121   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00122   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00123   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00124   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00125   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00126   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec},
00127   {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00128   {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00129   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00130   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00131   {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00132   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00133   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00134   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00135   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00136   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00137   {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00138   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00139   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00140   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00141   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00142   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00143   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00144   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00145   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00146   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00147   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00148   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00149   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00150   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00151   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec},
00152   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00153   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00154   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00155   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00156   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00157   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00158   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00159   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00160   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00161   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00162   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00163   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00164   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00165   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00166   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00167   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00168   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00169   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00170   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec},
00171   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00172   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00173   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00174   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00175   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00176   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00177   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00178   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00179   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00180   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00181   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00182   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00183   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00184   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00185   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00186   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00187   {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00188   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00189   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec},
00190   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00191   {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00192   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00193   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00194   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00195   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00196   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00197   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00198   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00199   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00200   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00201   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00202   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec},
00203   {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00204   {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00205   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00206   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00207   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00208   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00209   {0xec,0xec,0xec}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00210   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00211   {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00212   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0xec,0xec,0xec}, {0xec,0xec,0xec},
00213   {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0xec,0xec,0xec}, {0x8c,0x8c,0x8c},
00214   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00215   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00216   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00217   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00218   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00219   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00220   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00221   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00222   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00223   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00224   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00225   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00226   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00227   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00228   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00229   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00230   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00231   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00232   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00233   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00234   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00235   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00236   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00237   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00238   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00239   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00240   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00241   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00242   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00243   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00244   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00245   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00246   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00247   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00248   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00249   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00250   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00251   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00252   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00253   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00254   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00255   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00256   {0x00,0x00,0x00}, {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00257   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00258   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00259   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00260   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00261   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00262   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00263   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00264   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00265   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00266   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00267   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00268   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00269   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00270   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00271   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00272   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00273   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00274   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00275   {0x00,0x00,0x00}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00276   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00277   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00278   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00279   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00280   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00281   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00282   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00283   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00284   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00285   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00286   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00287   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00288   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00289   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00290   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00291   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00292   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x00,0x00,0x00},
00293   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00294   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00295   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00296   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00297   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00298   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00299   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00300   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00301   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00302   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00303   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00304   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00305   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00306   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00307   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00308   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00309   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00310   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00311   {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00}, {0x00,0x00,0x00},
00312   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x4c,0x4c,0x4c},
00313   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00314   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00315   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00316   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00317   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00318   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00319   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00320   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00321   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00322   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00323   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00324   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00325   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00326   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00327   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00328   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00329   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00330   {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac}, {0xac,0xac,0xac},
00331   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00332   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00333   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00334   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00335   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00336   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00337   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00338   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00339   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00340   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00341   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00342   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00343   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00344   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00345   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00346   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00347   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00348   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00349   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00350   {0xac,0xac,0xac}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00351   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00352   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00353   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00354   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00355   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00356   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00357   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00358   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00359   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00360   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00361   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00362   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00363   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00364   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00365   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00366   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00367   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00368   {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c}, {0x8c,0x8c,0x8c},
00369   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00370   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00371   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00372   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00373   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00374   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00375   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00376   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00377   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00378   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00379   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00380   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00381   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00382   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00383   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00384   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00385   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00386   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00387   {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c}, {0x4c,0x4c,0x4c},
00388 };
00389 
00390 int
00391 RLED(void *src_raw, void *dest_raw, unsigned int src_size)
00392 {
00393     signed char *src = src_raw;
00394     signed char *dest = dest_raw;
00395     unsigned short used;
00396     short count, val;
00397     short i;
00398 
00399     used = 0;
00400     while (used < src_size)
00401     {
00402         count = src[used++];
00403 
00404         if (count < 0)
00405         {
00406             count = -(count - 1);
00407             val = src[used++];
00408 
00409             if (vflag)
00410                 printf("%6d: repeat %02x\n", count, val & 0xff);
00411 
00412             for (i = 0; i < count; i++)
00413                 *dest++ = val;
00414         }
00415         else
00416         {
00417             count++;
00418 
00419             if (vflag)
00420                 printf("%6d:", count);
00421 
00422             for (i = 0; i < count; i++)
00423             {
00424                 if (vflag)
00425                     printf(" %02x", src[used] & 0xff);
00426                 *dest++ = src[used++];
00427             }
00428 
00429             if (vflag)
00430                 printf("\n");
00431         }
00432     }
00433 
00434     return ((void *) dest - (void *) dest_raw);
00435 }
00436 
00437 void
00438 usage(int code)
00439 {
00440     fprintf(stderr,
00441         "usage: mknews [-o] [-d output_dir] [-b output_basename] totnews.cdr\n");
00442     exit(code);
00443 }
00444 
00445 void
00446 pexit(const char *str)
00447 {
00448     perror(str);
00449     exit(EXIT_FAILURE);
00450 }
00451 
00452 #pragma pack(1)
00453 typedef struct aCHART
00454 {
00455     uint8_t frames;
00456     uint8_t x_off;
00457     uint8_t y_off;
00458     uint8_t width;
00459     uint8_t height;
00460 } seqInfo;
00461 #pragma pack()
00462 
00463 struct news
00464 {
00465     FILE *fp;
00466     int anim_idx;
00467     int frame_idx;
00468     SimpleHdr *frames;
00469     seqInfo animations[12];
00470     int anim_offsets[12];
00471     unsigned char palette[256 * 3];
00472 };
00473 
00474 struct news *
00475 news_open(char *fname)
00476 {
00477     int i = 0;
00478     SimpleHdrW headers[12];
00479     struct news *n = malloc(sizeof *n);
00480 
00481     if (!n)
00482         pexit("malloc");
00483     n->fp = fopen(fname, "rb");
00484     if (!n->fp)
00485         pexit("fopen");
00486     if (fread_SimpleHdrW(headers, 12, n->fp) != 12)
00487         pexit("fread main headers");
00488     for (i = 0; i < 12; ++i)
00489     {
00490         if (0 != fseek(n->fp, headers[i].offset, SEEK_SET))
00491             pexit("fseek");
00492         if (1 != fread(&n->animations[i], sizeof(seqInfo), 1, n->fp))
00493             pexit("fread animations");
00494 
00495         n->anim_offsets[i] = headers[i].offset;
00496     }
00497     n->anim_idx = -1;
00498     n->frame_idx = -1;
00499     n->frames = NULL;
00500     return n;
00501 }
00502 
00503 int
00504 news_next_animation(struct news *n, int *x, int *y, int *w, int *h)
00505 {
00506     int idx, nframes, to_read;
00507 
00508     assert(n);
00509     idx = n->anim_idx + 1;
00510     if (idx >= 12)
00511         return 0;
00512     nframes = n->animations[idx].frames;
00513     n->frames = realloc(n->frames, nframes * sizeof(*n->frames));
00514     if (!n->frames)
00515         pexit("realloc");
00516     if (0 != fseek(n->fp, n->anim_offsets[idx] + sizeof(seqInfo), SEEK_SET))
00517         pexit("fseek anim_offset");
00518     if (nframes != fread_SimpleHdr(n->frames, nframes, n->fp))
00519         pexit("fread frame info");
00520     memset(n->palette, 0, sizeof(n->palette));
00521     to_read = (256 - 32) * 3;
00522     if (to_read != fread(&n->palette[32 * 3], 1, to_read, n->fp))
00523         pexit("fread palette");
00524     n->anim_idx = idx;
00525     n->frame_idx = -1;
00526     if (x)
00527         *x = n->animations[idx].x_off;
00528     if (y)
00529         *y = n->animations[idx].y_off;
00530     if (w)
00531         *w = n->animations[idx].width;
00532     if (h)
00533         *h = n->animations[idx].height;
00534     return nframes;
00535 }
00536 
00537 int
00538 news_next_frame(struct news *n, char *data)
00539 {
00540     int aidx, fidx, nframes, fsize, fusize;
00541     char tmp[64000];
00542 
00543     assert(n);
00544     assert(data);
00545     aidx = n->anim_idx;
00546     if (aidx >= 12)
00547         return -1;
00548     nframes = n->animations[aidx].frames;
00549     fidx = n->frame_idx + 1;
00550     if (fidx >= nframes)
00551         return 0;
00552     n->frame_idx = fidx;
00553     fsize = n->frames[fidx].size;
00554     if (fsize > 64000)
00555         pexit("something wrong with size");
00556     if (0 != fseek(n->fp,
00557             n->anim_offsets[aidx] + n->frames[fidx].offset, SEEK_SET))
00558         pexit("fseek frame");
00559     if (fsize != fread(tmp, 1, fsize, n->fp))
00560         pexit("fread frame");
00561     fusize = RLED(tmp, data, fsize);
00562     return fusize;
00563 }
00564 
00565 void
00566 news_close(struct news *n)
00567 {
00568     assert(n);
00569 }
00570 
00571 char *dirname = ".";
00572 char *basename = "";
00573 
00574 void
00575 write_image(char *data, int width, int height, unsigned char *palette,
00576     int anim_no, int frame_no)
00577 {
00578     FILE *fp;
00579     char fname[1000];
00580     unsigned char r, g, b, pix;
00581     int i;
00582     unsigned char *pp = NULL;
00583     struct type
00584     {
00585         int is_usa;
00586         int is_bw;
00587         char *shot;
00588     } sequence[] =
00589     {
00590         { 1, 1, "opening"},
00591         { 1, 0, "opening"},
00592         { 1, 1, "closing"},
00593         { 1, 0, "closing"},
00594         { 0, 0, "opening"},
00595         { 0, 1, "opening"},
00596         { 0, 0, "closing"},
00597         { 0, 1, "closing"},
00598         { 1, 1, "angle"},
00599         { 1, 0, "angle"},
00600         { 0, 0, "angle"},
00601         { 0, 1, "angle"}
00602     };
00603 
00604     /* who the hell designed these indices?? */
00605     sprintf(fname, "%s/%s%s%s_%s_%s_%02d.ppm", dirname, basename,
00606         (basename[0] ? "_" : ""),
00607         (sequence[anim_no].is_usa ? "usa" : "sov"),
00608         (sequence[anim_no].is_bw  ? "bw"  : "col"),
00609         sequence[anim_no].shot, frame_no);
00610 
00611     fp = fopen(fname, "wt");
00612 
00613     if (!fp)
00614         pexit("fopen image (w)");
00615 
00616     fprintf(fp, "P6\n%d %d\n255\n", width, height);
00617 
00618     for (i = 0; i < width * height; ++i)
00619     {
00620         if (do_overlay
00621                 && i % width >= ovl_x
00622                 && i % width < ovl_x + ovl_w 
00623                 && i / width >= ovl_y
00624                 && i / width < ovl_y + ovl_h)
00625         {
00626             int idx = 
00627                 (i / width - ovl_y) * ovl_w
00628                 + (i % width) - ovl_x;
00629             assert(idx >= 0 && idx < ovl_h * ovl_w);
00630             r = overlay[idx][0];
00631             g = overlay[idx][1];
00632             b = overlay[idx][2];
00633         }
00634         else
00635         {
00636             pix = data[i];
00637             pp = &palette[pix * 3];
00638 
00639             r = pp[0] * 4;
00640             g = pp[1] * 4;
00641             b = pp[2] * 4;
00642         }
00643 
00644         putc(r, fp);
00645         putc(g, fp);
00646         putc(b, fp);
00647     }
00648 
00649     fclose(fp);
00650 }
00651 
00652 int
00653 main(int argc, char **argv)
00654 {
00655     char *filename;
00656     struct news *news;
00657     int num_frames, frame_size;
00658     int anim_no;
00659     int c;
00660     int w, h, x, y;
00661 
00662     while ((c = getopt(argc, argv, "hod:b:")) != EOF)
00663     {
00664         switch (c)
00665         {
00666             case 'd':
00667                 dirname = optarg;
00668                 break;
00669             case 'b':
00670                 basename = optarg;
00671                 break;
00672             case 'o':
00673                 do_overlay = 1;
00674                 break;
00675             case 'h':
00676                 usage(EXIT_SUCCESS);
00677                 break;
00678             default:
00679                 usage(EXIT_FAILURE);
00680         }
00681     }
00682 
00683     if (optind >= argc)
00684         usage(EXIT_FAILURE);
00685 
00686     filename = argv[optind++];
00687 
00688     if (optind != argc)
00689         usage(EXIT_FAILURE);
00690 
00691     if ((news = news_open(filename)) == NULL)
00692     {
00693         fprintf(stderr, "can't open %s\n", filename);
00694         exit(EXIT_FAILURE);
00695     }
00696 
00697     anim_no = 0;
00698     while (0 < (num_frames = news_next_animation(news, &x, &y, &w, &h)))
00699     {
00700         /* some magic numbers from the code */
00701         char img_base[40000];
00702         char img_add[15000];
00703         int first_width = 312, first_height = 106;
00704         int x_off = 4, y_off = 4;
00705         int xx, yy;
00706         int frame_no = 0;
00707 
00708         printf("A %2d: (%3d, %2d) %3dx%3d, %2d frames\n",
00709             anim_no, x, y, w, h, num_frames);
00710 
00711         memset(img_base, 0, sizeof(img_base));
00712 
00713         /* first frame is bigger and presents whole img */
00714         frame_size = news_next_frame(news, img_base);
00715 
00716         /* further frames are just "xor diffs" */
00717         for (frame_no = 1; news_next_frame(news, img_add) > 0; ++frame_no)
00718         {
00719             for (yy = 0; yy < h; ++yy)
00720                 for (xx = 0; xx < w; ++xx)
00721                 {
00722                     int toff = (y + yy - y_off) * first_width
00723                         + x + xx - x_off;
00724                     img_base[toff] ^= img_add[yy * w + xx];
00725                 }
00726 
00727             write_image(img_base, first_width, first_height,
00728                 news->palette, anim_no, frame_no);
00729 
00730         }
00731 
00732         anim_no++;
00733     }
00734 
00735     news_close(news);
00736 
00737     return (EXIT_SUCCESS);
00738 }

Generated on Fri Sep 28 00:35:46 2007 for raceintospace by  doxygen 1.5.3