|
|
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.