Annotation of micropolis/src/sim/headers/sim.h, revision 1.1.1.1

1.1       root        1: /* sim.h:  Main include file
                      2:  *
                      3:  * Micropolis, Unix Version.  This game was released for the Unix platform
                      4:  * in or about 1990 and has been modified for inclusion in the One Laptop
                      5:  * Per Child program.  Copyright (C) 1989 - 2007 Electronic Arts Inc.  If
                      6:  * you need assistance with this program, you may contact:
                      7:  *   http://wiki.laptop.org/go/Micropolis  or email  [email protected].
                      8:  * 
                      9:  * This program is free software: you can redistribute it and/or modify
                     10:  * it under the terms of the GNU General Public License as published by
                     11:  * the Free Software Foundation, either version 3 of the License, or (at
                     12:  * your option) any later version.
                     13:  * 
                     14:  * This program is distributed in the hope that it will be useful, but
                     15:  * WITHOUT ANY WARRANTY; without even the implied warranty of
                     16:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                     17:  * General Public License for more details.  You should have received a
                     18:  * copy of the GNU General Public License along with this program.  If
                     19:  * not, see <http://www.gnu.org/licenses/>.
                     20:  * 
                     21:  *             ADDITIONAL TERMS per GNU GPL Section 7
                     22:  * 
                     23:  * No trademark or publicity rights are granted.  This license does NOT
                     24:  * give you any right, title or interest in the trademark SimCity or any
                     25:  * other Electronic Arts trademark.  You may not distribute any
                     26:  * modification of this program using the trademark SimCity or claim any
                     27:  * affliation or association with Electronic Arts Inc. or its employees.
                     28:  * 
                     29:  * Any propagation or conveyance of this program must include this
                     30:  * copyright notice and these terms.
                     31:  * 
                     32:  * If you convey this program (or any modifications of it) and assume
                     33:  * contractual liability for the program to recipients of it, you agree
                     34:  * to indemnify Electronic Arts for any liability that those contractual
                     35:  * assumptions impose on Electronic Arts.
                     36:  * 
                     37:  * You may not misrepresent the origins of this program; modified
                     38:  * versions of the program must be marked as such and not identified as
                     39:  * the original program.
                     40:  * 
                     41:  * This disclaimer supplements the one included in the General Public
                     42:  * License.  TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS
                     43:  * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY
                     44:  * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK.  THE ENTIRE RISK OF
                     45:  * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU.  ELECTRONIC ARTS
                     46:  * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES,
                     47:  * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY,
                     48:  * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY
                     49:  * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING,
                     50:  * USAGE, OR TRADE PRACTICE.  ELECTRONIC ARTS DOES NOT WARRANT AGAINST
                     51:  * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL
                     52:  * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE
                     53:  * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE
                     54:  * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE
                     55:  * CORRECTED.  NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR
                     56:  * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY.  SOME
                     57:  * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED
                     58:  * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A
                     59:  * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY
                     60:  * NOT APPLY TO YOU.
                     61:  */
                     62: 
                     63: /* workaround sun c compiler junk */
                     64: 
                     65: #ifdef sun
                     66: 
                     67: #define _TTYCHARS_
                     68: #define CTRL(c) (#c[0]&037)
                     69: 
                     70: #ifndef SOLARIS2
                     71: #define __sys_ioccom_h
                     72: #define _IOCPARM_MASK   0xff            /* parameters must be < 256 bytes */
                     73: #define _IOC_VOID       0x20000000      /* no parameters */
                     74: #define _IOC_OUT        0x40000000      /* copy out parameters */
                     75: #define _IOC_IN         0x80000000      /* copy in parameters */
                     76: #define _IOC_INOUT      (_IOC_IN|_IOC_OUT)
                     77: #define _IO(x,y)        (_IOC_VOID|(#x[0]<<8)|y)
                     78: #define _IOR(x,y,t)     (_IOC_OUT|((sizeof(t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
                     79: #define _IORN(x,y,t)    (_IOC_OUT|(((t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
                     80: #define _IOW(x,y,t)     (_IOC_IN|((sizeof(t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
                     81: #define _IOWN(x,y,t)    (_IOC_IN|(((t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
                     82: #define _IOWR(x,y,t)    (_IOC_INOUT|((sizeof(t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
                     83: #define _IOWRN(x,y,t)   (_IOC_INOUT|(((t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y)
                     84: #endif
                     85: 
                     86: #endif
                     87: 
                     88: 
                     89: #include <stdio.h>
                     90: #include <stdlib.h>
                     91: #include <assert.h>
                     92: #include <ctype.h>
                     93: #include <setjmp.h>
                     94: #include <malloc.h>
                     95: #include <errno.h>
                     96: #include <signal.h>
                     97: #include <math.h>
                     98: #include <unistd.h>
                     99: #include <sys/types.h>
                    100: #include <sys/time.h>
                    101: #include <sys/stat.h>
                    102: #include <sys/file.h>
                    103: #include <sys/ioctl.h>
                    104: #include <sys/resource.h>
                    105: #ifndef MSDOS
                    106: #ifndef HPUX
                    107: #include <alloca.h>
                    108: #endif
                    109: #include <sys/mman.h>
                    110: #include <netinet/in.h>
                    111: #include <arpa/inet.h>
                    112: #endif
                    113: 
                    114: #ifdef sun
                    115: #ifdef SOLARIS2
                    116: #include <sys/systeminfo.h>
                    117: #else
                    118: #include <sys/vadvise.h>
                    119: #endif
                    120: #endif
                    121: 
                    122: #ifdef sgi
                    123: #if 0
                    124: #include <audio.h>
                    125: #endif
                    126: #endif
                    127: 
                    128: #include <sys/ipc.h>
                    129: #include <sys/shm.h>
                    130: #include <X11/Xlib.h>
                    131: #include <X11/Xutil.h>
                    132: #include <X11/Xatom.h>
                    133: #include <X11/extensions/XShm.h>
                    134: 
                    135: //#include <xpmtk.h>
                    136: #include <X11/xpm.h>
                    137: 
                    138: /* gcc compat workaround! */
                    139: #define _STDDEF_H
                    140: 
                    141: #include "tclxtend.h"
                    142: #include "tclint.h"
                    143: #include "tclunix.h"
                    144: #include "tkconfig.h"
                    145: #include "tkint.h"
                    146: 
                    147: #include "mac.h"
                    148: #include "view.h"
                    149: #include "macros.h"
                    150: 
                    151: /* Constants */
                    152: 
                    153: #define TRUE            1
                    154: #define FALSE           0
                    155: 
                    156: #ifdef MEGA
                    157: #define SimWidth       (120 * MEGA)
                    158: #define SimHeight      (100 * MEGA)
                    159: #else
                    160: #define SimWidth       120
                    161: #define SimHeight      100
                    162: #endif
                    163: 
                    164: #define WORLD_X                SimWidth
                    165: #define WORLD_Y                SimHeight
                    166: #define HWLDX          (SimWidth >>1)
                    167: #define HWLDY          (SimHeight >>1)
                    168: #define QWX            (SimWidth >>2)
                    169: #define QWY            (SimHeight >>2)
                    170: #define SmX            (SimWidth >>3)
                    171: #define SmY            ((SimHeight + 7) >>3)
                    172: 
                    173: #define EDITOR_W (WORLD_X * 16)
                    174: #define EDITOR_H (WORLD_Y * 16)
                    175: #define MAP_W (WORLD_X * 3)
                    176: #define MAP_H (WORLD_Y * 3)
                    177: 
                    178: #define NIL            0
                    179: #define HORIZ          1
                    180: #define VERT           0
                    181: 
                    182: #define PROBNUM 10
                    183: 
                    184: #define HISTLEN                480
                    185: #define MISCHISTLEN    240
                    186: 
                    187: #define POWERMAPROW            ((WORLD_X + 15) / 16)
                    188: 
                    189: #ifdef MEGA
                    190: #define POWERMAPLEN            ((QUAD)(2 * POWERMAPROW * WORLD_Y))
                    191: #define POWERWORD(x, y)                ((((QUAD)(x)) >>4) + (((QUAD)(y)) * POWERMAPROW))
                    192: #else
                    193: #define POWERMAPLEN            1700 /* ??? PWRMAPSIZE */
                    194: #define POWERWORD(x, y)                (((x) >>4) + ((y) <<3))
                    195: #endif
                    196: 
                    197: #define SETPOWERBIT(x, y)      PowerMap[POWERWORD((x), (y))] |= 1 << ((x) & 15)
                    198: #define PWRMAPSIZE             (POWERMAPROW * WORLD_Y)
                    199: #define PWRSTKSIZE             ((WORLD_X * WORLD_Y) / 4)
                    200: 
                    201: #define ALMAP 0 /* all */
                    202: #define REMAP 1 /* residential */
                    203: #define COMAP 2 /* commercial */
                    204: #define INMAP 3 /* industrial */
                    205: 
                    206: #define PRMAP 4 /* power */
                    207: #define RDMAP 5 /* road */
                    208: 
                    209: #define PDMAP 6 /* population density */
                    210: #define RGMAP 7 /* rate of growth */
                    211: 
                    212: #define TDMAP 8 /* traffic density */
                    213: #define PLMAP 9 /* pollution */
                    214: #define CRMAP 10 /* crime */
                    215: #define LVMAP 11 /* land value */
                    216: 
                    217: #define FIMAP 12 /* fire radius */
                    218: #define POMAP 13 /* police radius */
                    219: #define DYMAP 14 /* dynamic */
                    220: 
                    221: #define NMAPS 15
                    222: 
                    223: /* These adjust frequency in Simulate() */
                    224: 
                    225: #define VALVERATE 2
                    226: #define CENSUSRATE 4
                    227: #define TAXFREQ 48
                    228: 
                    229: /* These are names of the 16 colors */
                    230: #define COLOR_WHITE            0
                    231: #define COLOR_YELLOW           1
                    232: #define COLOR_ORANGE           2
                    233: #define COLOR_RED              3
                    234: #define COLOR_DARKRED          4
                    235: #define COLOR_DARKBLUE         5
                    236: #define COLOR_LIGHTBLUE                6
                    237: #define COLOR_BROWN            7
                    238: #define COLOR_LIGHTGREEN       8
                    239: #define COLOR_DARKGREEN                9
                    240: #define COLOR_OLIVE            10
                    241: #define COLOR_LIGHTBROWN       11
                    242: #define COLOR_LIGHTGRAY                12
                    243: #define COLOR_MEDIUMGRAY       13
                    244: #define COLOR_DARKGRAY         14
                    245: #define COLOR_BLACK            15
                    246: 
                    247: /* Status Bits */
                    248: 
                    249: #define PWRBIT         32768   /*20    bit 15  */
                    250: #define CONDBIT                16384   /*10    bit 14  */
                    251: #define BURNBIT                8192    /*8     bit 13  */
                    252: #define BULLBIT                4096    /*4     bit 12  */
                    253: #define ANIMBIT                2048    /*2     bit 11  */
                    254: #define ZONEBIT                1024    /*1     bit 10  */
                    255: #define ALLBITS                64512   /*  mask for upper 6 bits       */
                    256: #define LOMASK         1023    /*      mask for low 10 bits    */
                    257: 
                    258: #define BLBNBIT                (BULLBIT+BURNBIT)
                    259: #define BLBNCNBIT      (BULLBIT+BURNBIT+CONDBIT)
                    260: #define BNCNBIT                (BURNBIT+CONDBIT)
                    261: 
                    262: /* Object & Sound Numbers */
                    263: 
                    264: #define TRA            1
                    265: #define COP            2
                    266: #define AIR            3
                    267: #define SHI            4
                    268: #define GOD            5
                    269: #define TOR            6
                    270: #define EXP            7
                    271: #define BUS            8
                    272: 
                    273: /* Max # of Objects */
                    274: 
                    275: #define OBJN           9
                    276: 
                    277: /* Graph Histories */
                    278: #define RES_HIST       0
                    279: #define COM_HIST       1
                    280: #define IND_HIST       2
                    281: #define MONEY_HIST     3
                    282: #define CRIME_HIST     4
                    283: #define POLLUTION_HIST 5
                    284: #define HISTORIES      6
                    285: #define ALL_HISTORIES  ((1 <<HISTORIES) - 1)
                    286: 
                    287: /* Character Mapping */
                    288: 
                    289: #define DIRT           0
                    290: #define RIVER          2
                    291: #define REDGE          3
                    292: #define CHANNEL                4
                    293: #define FIRSTRIVEDGE   5
                    294: #define LASTRIVEDGE    20
                    295: #define TREEBASE       21
                    296: #define LASTTREE       36
                    297: #define WOODS          37
                    298: #define UNUSED_TRASH1  38
                    299: #define UNUSED_TRASH2  39
                    300: #define WOODS2         40
                    301: #define WOODS3         41
                    302: #define WOODS4         42
                    303: #define WOODS5         43
                    304: #define RUBBLE         44
                    305: #define LASTRUBBLE     47
                    306: #define FLOOD          48
                    307: #define LASTFLOOD      51
                    308: #define RADTILE                52
                    309: #define UNUSED_TRASH3  53
                    310: #define UNUSED_TRASH4  54
                    311: #define UNUSED_TRASH5  55
                    312: #define FIRE           56
                    313: #define FIREBASE       56
                    314: #define LASTFIRE       63
                    315: #define ROADBASE       64
                    316: #define HBRIDGE                64
                    317: #define VBRIDGE                65
                    318: #define ROADS          66
                    319: #define INTERSECTION   76
                    320: #define HROADPOWER     77
                    321: #define VROADPOWER     78
                    322: #define BRWH           79
                    323: #define LTRFBASE       80
                    324: #define BRWV           95
                    325: #define BRWXXX1                111
                    326: #define BRWXXX2                127
                    327: #define BRWXXX3                143
                    328: #define HTRFBASE       144
                    329: #define BRWXXX4                159
                    330: #define BRWXXX5                175
                    331: #define BRWXXX6                191
                    332: #define LASTROAD       206
                    333: #define BRWXXX7                207
                    334: #define POWERBASE      208
                    335: #define HPOWER         208
                    336: #define VPOWER         209
                    337: #define LHPOWER                210
                    338: #define LVPOWER                211
                    339: #define RAILHPOWERV    221
                    340: #define RAILVPOWERH    222
                    341: #define LASTPOWER      222
                    342: #define UNUSED_TRASH6  223
                    343: #define RAILBASE       224
                    344: #define HRAIL          224
                    345: #define VRAIL          225
                    346: #define LHRAIL         226
                    347: #define LVRAIL         227
                    348: #define HRAILROAD      237
                    349: #define VRAILROAD      238
                    350: #define LASTRAIL       238
                    351: #define ROADVPOWERH    239 /* bogus? */
                    352: #define RESBASE                240
                    353: #define FREEZ          244
                    354: #define HOUSE          249
                    355: #define LHTHR          249
                    356: #define HHTHR          260
                    357: #define RZB            265
                    358: #define HOSPITAL       409
                    359: #define CHURCH         418
                    360: #define COMBASE                423
                    361: #define COMCLR         427
                    362: #define CZB            436
                    363: #define INDBASE                612
                    364: #define INDCLR         616
                    365: #define LASTIND                620
                    366: #define IND1           621
                    367: #define IZB            625
                    368: #define IND2           641
                    369: #define IND3           644
                    370: #define IND4           649
                    371: #define IND5           650
                    372: #define IND6           676
                    373: #define IND7           677
                    374: #define IND8           686
                    375: #define IND9           689
                    376: #define PORTBASE       693
                    377: #define PORT           698
                    378: #define LASTPORT       708
                    379: #define AIRPORTBASE    709
                    380: #define RADAR          711
                    381: #define AIRPORT                716
                    382: #define COALBASE       745
                    383: #define POWERPLANT     750
                    384: #define LASTPOWERPLANT 760
                    385: #define FIRESTBASE     761
                    386: #define FIRESTATION    765
                    387: #define POLICESTBASE   770
                    388: #define POLICESTATION  774
                    389: #define STADIUMBASE    779
                    390: #define STADIUM                784
                    391: #define FULLSTADIUM    800
                    392: #define NUCLEARBASE    811
                    393: #define NUCLEAR                816
                    394: #define LASTZONE       826
                    395: #define LIGHTNINGBOLT  827
                    396: #define HBRDG0         828
                    397: #define HBRDG1         829
                    398: #define HBRDG2         830
                    399: #define HBRDG3         831
                    400: #define RADAR0         832
                    401: #define RADAR1         833
                    402: #define RADAR2         834
                    403: #define RADAR3         835
                    404: #define RADAR4         836
                    405: #define RADAR5         837
                    406: #define RADAR6         838
                    407: #define RADAR7         839
                    408: #define FOUNTAIN       840
                    409: #define INDBASE2       844
                    410: #define TELEBASE       844
                    411: #define TELELAST       851
                    412: #define SMOKEBASE      852
                    413: #define TINYEXP                860
                    414: #define SOMETINYEXP    864
                    415: #define LASTTINYEXP    867
                    416: #define COALSMOKE1     916
                    417: #define COALSMOKE2     920
                    418: #define COALSMOKE3     924
                    419: #define COALSMOKE4     928
                    420: #define FOOTBALLGAME1  932
                    421: #define FOOTBALLGAME2  940
                    422: #define VBRDG0         948
                    423: #define VBRDG1         949
                    424: #define VBRDG2         950
                    425: #define VBRDG3         951
                    426: 
                    427: #define TILE_COUNT     960
                    428: 
                    429: /* 
                    430:  * These describe the wand values, the object dragged around on the screen.
                    431:  */
                    432: 
                    433: #define residentialState 0
                    434: #define commercialState 1
                    435: #define industrialState 2
                    436: #define fireState 3
                    437: #define queryState 4
                    438: #define policeState 5
                    439: #define wireState 6
                    440: #define dozeState 7
                    441: #define rrState 8
                    442: #define roadState 9
                    443: #define chalkState 10
                    444: #define eraserState 11
                    445: #define stadiumState 12
                    446: #define parkState 13
                    447: #define seaportState  14
                    448: #define powerState 15
                    449: #define nuclearState 16
                    450: #define airportState 17
                    451: #define networkState 18
                    452: 
                    453: 
                    454: #define firstState residentialState
                    455: #define lastState networkState
                    456: 
                    457: #if 0
                    458: #define specialState 16
                    459: #define monsterGoalState 17
                    460: #define helicopterGoalState 18
                    461: #define blackState 19
                    462: #define whiteState 20
                    463: #define redState 21
                    464: #define orangeState 23
                    465: #define blueState 24
                    466: #define greenState 25
                    467: #define brownState 26
                    468: #endif
                    469: 
                    470: 
                    471: #define STATE_CMD 0
                    472: #define STATE_TILES 1
                    473: #define STATE_OVERLAYS 2
                    474: #define STATE_GRAPHS 3
                    475: 
                    476: 
                    477: extern short *Map[WORLD_X];            /* Main Map 120 x 100  */
                    478: extern Byte *PopDensity[HWLDX];                /* 2X2 Maps  60 x 50 */
                    479: extern Byte *TrfDensity[HWLDX];
                    480: extern Byte *PollutionMem[HWLDX];
                    481: extern Byte *LandValueMem[HWLDX];
                    482: extern Byte *CrimeMem[HWLDX];
                    483: extern Byte *tem[HWLDX];
                    484: extern Byte *tem2[HWLDX];
                    485: extern Byte *TerrainMem[QWX];          /* 4X4 Maps  30 x 25 */
                    486: extern Byte *Qtem[QWX];
                    487: extern short RateOGMem[SmX][SmY];
                    488: extern short FireStMap[SmX][SmY];      /* 8X8 Maps  15 x 13 */
                    489: extern short PoliceMap[SmX][SmY];
                    490: extern short PoliceMapEffect[SmX][SmY];
                    491: extern short ComRate[SmX][SmY];
                    492: extern short FireRate[SmX][SmY];
                    493: extern short STem[SmX][SmY];
                    494: extern short SpriteXOffset[OBJN];
                    495: extern short SpriteYOffset[OBJN];
                    496: extern short SMapX, SMapY;
                    497: extern short CChr, CChr9;
                    498: extern short RoadTotal, RailTotal, FirePop;
                    499: extern short ResPop, ComPop, IndPop, TotalPop, LastTotalPop;
                    500: extern short ResZPop, ComZPop, IndZPop, TotalZPop;
                    501: extern short HospPop, ChurchPop, StadiumPop;
                    502: extern short PolicePop, FireStPop;
                    503: extern short CoalPop, NuclearPop, PortPop, APortPop;
                    504: extern short NeedHosp, NeedChurch;
                    505: extern short CrimeAverage, PolluteAverage, LVAverage;
                    506: extern char *MicropolisVersion;
                    507: extern char *CityName;
                    508: extern char *CityFileName;
                    509: extern char *StartupName;
                    510: extern short StartingYear;
                    511: extern QUAD CityTime;
                    512: extern QUAD LastCityTime;
                    513: extern QUAD LastCityMonth;
                    514: extern QUAD LastCityYear;
                    515: extern QUAD LastFunds;
                    516: extern QUAD LastR, LastC, LastI;
                    517: extern short GameLevel;
                    518: extern short Cycle;
                    519: extern short ScenarioID;
                    520: extern short ShakeNow;
                    521: extern QUAD DonDither;
                    522: extern int DoOverlay;
                    523: 
                    524: extern short *ResHis, ResHisMax;
                    525: extern short *ComHis, ComHisMax;
                    526: extern short *IndHis, IndHisMax;
                    527: extern short *MoneyHis, *CrimeHis, *PollutionHis, *MiscHis;
                    528: extern short *PowerMap;
                    529: 
                    530: extern float roadPercent, policePercent, firePercent;
                    531: extern QUAD RoadSpend, PoliceSpend, FireSpend;
                    532: extern QUAD roadMaxValue, policeMaxValue, fireMaxValue;
                    533: extern QUAD TaxFund, RoadFund, PoliceFund, FireFund;
                    534: extern short RoadEffect, PoliceEffect, FireEffect;
                    535: extern short TaxFlag, CityTax;
                    536: extern QUAD TotalFunds;
                    537: 
                    538: extern QUAD costOf[];
                    539: 
                    540: extern short flagBlink;
                    541: extern unsigned char tileSynch;
                    542: extern short aniTile[];
                    543: extern unsigned char aniSynch[];
                    544: extern int TilesAnimated;
                    545: extern int DoAnimation;
                    546: extern int DoMessages;
                    547: extern int DoNotices;
                    548: extern unsigned char ColorIntensities[];
                    549: 
                    550: extern short MesX, MesY;
                    551: extern short MesNum, MessagePort;
                    552: extern QUAD LastMesTime;
                    553: 
                    554: extern short SimSpeed;
                    555: extern short SimMetaSpeed;
                    556: extern short NoDisasters;
                    557: extern short autoBulldoze;
                    558: extern short autoBudget;
                    559: extern short autoGo;
                    560: extern short UserSoundOn;
                    561: 
                    562: extern short DisasterEvent;
                    563: extern short DisasterWait;
                    564: 
                    565: extern short ResCap, ComCap, IndCap;
                    566: extern short RValve, CValve, IValve;
                    567: extern short PwrdZCnt;
                    568: extern short unPwrdZCnt;
                    569: 
                    570: extern char *HomeDir, *ResourceDir, *HostName;
                    571: 
                    572: extern short Graph10Max, Graph120Max;
                    573: extern short Res2HisMax, Com2HisMax, Ind2HisMax;
                    574: extern unsigned char *History10[HISTORIES], *History120[HISTORIES];
                    575: extern short CityScore;
                    576: extern short deltaCityScore;
                    577: extern short ScoreType;
                    578: extern short ScoreWait;
                    579: extern short CityClass;
                    580: extern short PolMaxX, PolMaxY;
                    581: extern int PowerStackNum;
                    582: extern short TrafficAverage;
                    583: extern short PosStackN;
                    584: extern short SMapXStack[], SMapYStack[];
                    585: extern short Zsource;
                    586: extern short HaveLastMessage;
                    587: extern short PdestX, PdestY;
                    588: extern short CdestX, CdestY;
                    589: extern int absDist;
                    590: extern short CopFltCnt;
                    591: extern short GodCnt;
                    592: extern short GdestX, GdestY;
                    593: extern short GorgX, GorgY;
                    594: extern short GodControl;
                    595: extern short CopControl;
                    596: extern short CdestX, CdestY;
                    597: extern short TrafMaxX, TrafMaxY;
                    598: extern short CrimeMaxX, CrimeMaxY;
                    599: extern short FloodX, FloodY;
                    600: extern short CrashX, CrashY;
                    601: extern short CCx, CCy;
                    602: extern QUAD CityPop, deltaCityPop;
                    603: extern char *cityClassStr[6];
                    604: extern short CityYes, CityNo;
                    605: extern short ProblemTable[PROBNUM];
                    606: extern short ProblemVotes[PROBNUM];
                    607: extern short ProblemOrder[4];
                    608: extern QUAD CityAssValue;
                    609: 
                    610: extern short InitSimLoad;
                    611: extern short DoInitialEval;
                    612: extern int Startup;
                    613: extern int StartupGameLevel;
                    614: extern int PerformanceTiming;
                    615: extern double FlushTime;
                    616: 
                    617: extern char *optarg;
                    618: extern int optind;
                    619: extern struct timeval start_time, now_time, beat_time, last_now_time;
                    620: extern Sim *sim;
                    621: extern int WireMode;
                    622: extern int MultiPlayerMode;
                    623: extern int SugarMode;
                    624: extern int sim_delay;
                    625: extern int sim_skips;
                    626: extern int sim_skip;
                    627: extern int sim_paused;
                    628: extern int sim_paused_speed;
                    629: extern int sim_tty;
                    630: #ifdef CAM
                    631: extern int sim_just_cam;
                    632: #endif
                    633: extern int heat_steps;
                    634: extern int heat_flow;
                    635: extern int heat_rule;
                    636: extern int UpdateDelayed;
                    637: extern int DynamicData[32];
                    638: extern int Players;
                    639: extern int Votes;
                    640: extern int BobHeight;
                    641: extern int OverRide;
                    642: extern int Expensive;
                    643: extern int PendingTool;
                    644: extern int PendingX;
                    645: extern int PendingY;
                    646: extern int TreeLevel;
                    647: extern int LakeLevel;
                    648: extern int CurveLevel;
                    649: extern int CreateIsland;
                    650: extern short specialBase;
                    651: extern short PunishCnt;
                    652: extern short Dozing;
                    653: extern short toolSize[];
                    654: extern short toolOffset[];
                    655: extern QUAD toolColors[];
                    656: extern char *Displays;
                    657: extern char *FirstDisplay;
                    658: extern char *dateStr[12];
                    659: 
                    660: extern short NewMap;
                    661: extern short NewMapFlags[NMAPS];
                    662: extern short NewGraph;
                    663: extern short ValveFlag;
                    664: extern short MustUpdateFunds;
                    665: extern short MustUpdateOptions;
                    666: extern short CensusChanged;
                    667: extern short EvalChanged;
                    668: extern short MeltX, MeltY;
                    669: extern int NeedRest;
                    670: extern int ExitReturn;
                    671: 
                    672: extern Tcl_Interp *tk_mainInterp;
                    673: extern Tk_Window MainWindow;
                    674: extern int FlushStyle;
                    675: extern int GotXError;
                    676: 
                    677: extern short Rand(short range);
                    678: extern short RandInt(void);
                    679: 
                    680: extern Sim *MakeNewSim();
                    681: extern SimView *MakeNewView();
                    682: extern SimSprite *GetSprite();
                    683: extern SimSprite *MakeSprite();
                    684: extern SimSprite *MakeNewSprite();
                    685: 
                    686: extern int setSpeed(short speed);
                    687: extern int setSkips(int skips);
                    688: extern int SetGameLevel(short level);
                    689: extern int SetGameLevelFunds(short level);
                    690: 
                    691: extern struct XDisplay *XDisplays;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.