|
|
1.1 ! root 1: /* s_alloc.c ! 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: #include "sim.h" ! 63: ! 64: ! 65: /* Allocate Stuff */ ! 66: ! 67: ! 68: short SMapX, SMapY; ! 69: short CChr, CChr9; ! 70: ! 71: short RoadTotal, RailTotal, FirePop; ! 72: ! 73: short ResPop, ComPop, IndPop, TotalPop, LastTotalPop; ! 74: short ResZPop, ComZPop, IndZPop, TotalZPop; ! 75: short HospPop, ChurchPop, StadiumPop; ! 76: short PolicePop, FireStPop; ! 77: short CoalPop, NuclearPop, PortPop, APortPop; ! 78: ! 79: short NeedHosp, NeedChurch; ! 80: short CrimeAverage, PolluteAverage, LVAverage; ! 81: ! 82: QUAD CityTime; ! 83: short StartingYear; ! 84: ! 85: short *Map[WORLD_X]; ! 86: ! 87: short ResHisMax, Res2HisMax; ! 88: short ComHisMax, Com2HisMax; ! 89: short IndHisMax, Ind2HisMax; ! 90: short CensusChanged; ! 91: ! 92: short MessagePort; ! 93: short MesX, MesY; ! 94: ! 95: QUAD RoadSpend, PoliceSpend, FireSpend; ! 96: QUAD RoadFund, PoliceFund, FireFund; ! 97: short RoadEffect, PoliceEffect, FireEffect; ! 98: QUAD TaxFund; ! 99: short CityTax, TaxFlag; ! 100: unsigned char tileSynch = 0x01; ! 101: ! 102: Byte *PopDensity[HWLDX]; ! 103: Byte *TrfDensity[HWLDX]; ! 104: Byte *PollutionMem[HWLDX]; ! 105: Byte *LandValueMem[HWLDX]; ! 106: Byte *CrimeMem[HWLDX]; ! 107: Byte *tem[HWLDX]; ! 108: Byte *tem2[HWLDX]; ! 109: Byte *TerrainMem[QWX]; ! 110: Byte *Qtem[QWX]; ! 111: ! 112: short RateOGMem[SmX][SmY]; ! 113: short FireStMap[SmX][SmY]; ! 114: short PoliceMap[SmX][SmY]; ! 115: short PoliceMapEffect[SmX][SmY]; ! 116: ! 117: short FireRate[SmX][SmY]; ! 118: short ComRate[SmX][SmY]; ! 119: short STem[SmX][SmY]; ! 120: ! 121: Ptr terrainBase; ! 122: Ptr qTemBase; ! 123: Ptr tem1Base; ! 124: Ptr tem2Base; ! 125: ! 126: Ptr popPtr; ! 127: Ptr trfPtr; ! 128: Ptr polPtr; ! 129: Ptr landPtr; ! 130: Ptr crimePtr; ! 131: ! 132: Ptr auxPopPtr; ! 133: Ptr auxTrfPtr; ! 134: Ptr auxPolPtr; ! 135: Ptr auxLandPtr; ! 136: Ptr auxCrimePtr; ! 137: Ptr brettPtr; ! 138: ! 139: unsigned short *mapPtr; ! 140: short *ResHis; ! 141: short *ComHis; ! 142: short *IndHis; ! 143: short *MoneyHis; ! 144: short *PollutionHis; ! 145: short *CrimeHis; ! 146: short *MiscHis; ! 147: short *PowerMap; ! 148: ! 149: ! 150: int initMapArrays(void) ! 151: { ! 152: short i; ! 153: unsigned short *auxPtr, *temp1; ! 154: ! 155: if (!mapPtr) ! 156: mapPtr = (unsigned short *)NewPtr(sizeof(unsigned short) * ! 157: WORLD_X * WORLD_Y); ! 158: auxPtr = mapPtr; ! 159: ! 160: for (i = 0; i < WORLD_X; i++) { ! 161: temp1 = auxPtr + i * WORLD_Y; ! 162: Map[i] = (short *)temp1; ! 163: } ! 164: ! 165: popPtr = NewPtr(HWLDX * HWLDY); ! 166: trfPtr = NewPtr(HWLDX * HWLDY); ! 167: polPtr = NewPtr(HWLDX * HWLDY); ! 168: landPtr = NewPtr(HWLDX * HWLDY); ! 169: crimePtr = NewPtr(HWLDX * HWLDY); ! 170: ! 171: tem1Base = NewPtr(HWLDX * HWLDY); ! 172: tem2Base = NewPtr(HWLDX * HWLDY); ! 173: ! 174: auxPopPtr = popPtr; ! 175: auxTrfPtr = trfPtr; ! 176: auxPolPtr = polPtr; ! 177: auxLandPtr = landPtr; ! 178: auxCrimePtr = crimePtr; ! 179: ! 180: for (i = 0; i < HWLDX; i++) { ! 181: PopDensity[i] = (Byte *) auxPopPtr + (i * HWLDY); ! 182: TrfDensity[i] = (Byte *) auxTrfPtr + (i * HWLDY); ! 183: PollutionMem[i] = (Byte *) auxPolPtr + (i * HWLDY); ! 184: LandValueMem[i] = (Byte *) auxLandPtr + (i * HWLDY); ! 185: CrimeMem[i] = (Byte *) auxCrimePtr + (i * HWLDY); ! 186: ! 187: tem[i] = (Byte *)tem1Base + (i * HWLDY); ! 188: tem2[i] = (Byte *) tem2Base + (i * HWLDY); ! 189: } ! 190: ! 191: brettPtr = (Ptr) &PopDensity[0][0]; ! 192: ! 193: terrainBase = NewPtr(QWX * QWY); ! 194: qTemBase = NewPtr(QWX * QWY); ! 195: ! 196: for (i = 0; i < QWX; i++) { ! 197: TerrainMem[i] = (Byte *)terrainBase + (i * QWY); ! 198: Qtem[i] = (Byte *)qTemBase + (i * QWY); ! 199: } ! 200: ! 201: ResHis = (short *)NewPtr(HISTLEN); ! 202: ComHis = (short *)NewPtr(HISTLEN); ! 203: IndHis = (short *)NewPtr(HISTLEN); ! 204: MoneyHis = (short *)NewPtr(HISTLEN); ! 205: PollutionHis = (short *)NewPtr(HISTLEN); ! 206: CrimeHis = (short *)NewPtr(HISTLEN); ! 207: MiscHis = (short *)NewPtr(MISCHISTLEN); ! 208: PowerMap = (short *)NewPtr(POWERMAPLEN); /* power alloc */ ! 209: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.