Annotation of micropolis/src/sim/headers/sim.h, revision 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.