Omnibus's picture
Upload 131 files
4ee4376
export default (data, map) => {
// uncomment the console.log statement to work on this section
// still very much a WIP
// will optimize once all data structions are properties are identified properly
function log(...a) {
//console.log(...a);
}
let misc = {};
let offset = 0;
misc.firstEntry = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'firstEntry', misc.firstEntry);
misc.gameMode = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'gameMode', misc.gameMode);
misc.rotation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rotation', misc.rotation);
misc.baseYear = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'baseYear', misc.baseYear);
misc.simCycle = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'simCycle', misc.simCycle);
misc.totalFunds = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'totalFunds', misc.totalFunds);
misc.totalBonds = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'totalBonds', misc.totalBonds);
misc.gameLevel = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'gameLevel', misc.gameLevel);
misc.cityStatus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'cityStatus', misc.cityStatus);
misc.cityValue = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'cityValue', misc.cityValue);
misc.landValue = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'landValue', misc.landValue);
misc.crimeCount = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'crimeCount', misc.crimeCount);
misc.trafficCount = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'trafficCount', misc.trafficCount);
misc.pollution = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'pollution', misc.pollution);
misc.cityFame = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'cityFame', misc.cityFame);
misc.advertising = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'advertising', misc.advertising);
misc.garbage = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'garbage', misc.garbage);
misc.workerPercent = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'workerPercent', misc.workerPercent);
misc.workerHealth = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'workerHealth', misc.workerHealth);
misc.workerEQ = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'workerEQ', misc.workerEQ);
misc.nationalPopulation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'nationalPopulation', misc.nationalPopulation);
misc.nationalValue = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'nationalValue', misc.nationalValue);
misc.nationalTax = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'nationalTax', misc.nationalTax);
misc.nationalTrend = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'nationalTrend', misc.nationalTrend);
misc.heat = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'heat', misc.heat);
misc.wind = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'wind', misc.wind);
misc.humid = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'humid', misc.humid);
misc.weatherTrend = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'weatherTrend', misc.weatherTrend);
misc.newDisaster = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'newDisaster', misc.newDisaster);
misc.oldResidentialPopulation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'oldResidentialPopulation', misc.oldResidentialPopulation);
misc.rewards = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rewards', misc.rewards);
// graph data
misc.graphs = {};
misc.graphs.population = [];
misc.graphs.health = [];
misc.graphs.education = [];
misc.graphs.industry = [];
for (let i = 0; i < 20; i++) {
misc.graphs.population[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'graphs.population['+i+']', misc.graphs.population[i] );
misc.graphs.health[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'graphs.health['+i+']', misc.graphs.health[i] );
misc.graphs.education[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'graphs.education['+i+']', misc.graphs.education[i] );
}
for (let i = 0; i < 33; i++) {
misc.graphs.industry[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'graphs.industry['+i+']', misc.graphs.industry[i] );
}
// counts of each tile ID
misc.tileCounts = [];
for (let i = 0; i < 256; i++) {
misc.tileCounts[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'tileCounts['+i+']', misc.tileCounts[i] );
}
// population for each zone type
misc.zonePop = [];
for (let i = 0; i < 8; i++) {
misc.zonePop[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'zonePop['+i+']', misc.zonePop[i] );
}
// bond rates
misc.bondRate = [];
for (let i = 0; i < 50; i++) {
misc.bondRate[i] = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'bondRate['+i+']', misc.bondRate[i] );
}
// 4x4 of neighbors
// lower left, upper left, upper right, bottom right
misc.neighbors = [];
for (let i = 0; i < 4; i++) {
misc.neighbors[i] = {};
misc.neighbors[i].name = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'neighbors['+i+'].name', misc.neighbors[i].name);
misc.neighbors[i].population = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'neighbors['+i+'].population', misc.neighbors[i].population);
misc.neighbors[i].value = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'neighbors['+i+'].value', misc.neighbors[i].value);
misc.neighbors[i].fame = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'neighbors['+i+'].fame', misc.neighbors[i].fame);
}
misc.rci = {};
misc.rci.residential = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rci.residential', misc.rci.residential);
misc.rci.commercial = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rci.commercial', misc.rci.commercial);
misc.rci.industrial = new DataView(data.slice(offset, offset+=4).buffer).getInt32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'rci.industrial', misc.rci.industrial);
misc.unknown0 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown0', misc.unknown0);
misc.unknown1 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown1', misc.unknown1);
misc.unknown2 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown2', misc.unknown2);
misc.unknown3 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown3', misc.unknown3);
misc.unknown4 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown4', misc.unknown4);
misc.inventions = {};
misc.inventions.gasPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.gasPower', misc.inventions.gasPower);
misc.inventions.nuclearPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.nuclearPower', misc.inventions.nuclearPower);
misc.inventions.solarPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.solarPower', misc.inventions.solarPower);
misc.inventions.windPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.windPower', misc.inventions.windPower);
misc.inventions.microwavePower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.microwavePower', misc.inventions.microwavePower);
misc.inventions.fusionPower = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.fusionPower', misc.inventions.fusionPower);
misc.inventions.airport = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.airport', misc.inventions.airport);
misc.inventions.highways = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.highways', misc.inventions.highways);
misc.inventions.buses = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.buses', misc.inventions.buses);
misc.inventions.subways = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.subways', misc.inventions.subways);
misc.inventions.waterTreatment = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.waterTreatment', misc.inventions.waterTreatment);
misc.inventions.desalinisation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.desalinisation', misc.inventions.desalinisation);
misc.inventions.plymouth = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.plymouth', misc.inventions.plymouth);
misc.inventions.forest = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.forest', misc.inventions.forest);
misc.inventions.darco = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.darco', misc.inventions.darco);
misc.inventions.launch = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.launch', misc.inventions.launch);
misc.inventions.highways2 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'inventions.highways2', misc.inventions.highways2);
log('current offset: 0x'+offset.toString(16).padStart(4, '0'));
log('budget start');
log('===');
misc.budget = {};
misc.budget.propertyTax = [];
for (let i = 0; i < 27; i++) {
misc.budget.propertyTax[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.propertyTax['+i+']', misc.budget.propertyTax[i] );
}
offset = 0x077c;
misc.budget.residentialTaxRate = [];
for (let i = 0; i < 27; i++) {
misc.budget.residentialTaxRate[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.residentialTaxRate['+i+']', misc.budget.residentialTaxRate[i] );
}
offset = 0x07e8;
misc.budget.commercialTaxRate = [];
for (let i = 0; i < 27; i++) {
misc.budget.commercialTaxRate[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.commercialTaxRate['+i+']', misc.budget.commercialTaxRate[i] );
}
offset = 0x0854;
misc.budget.industrialTaxRate = [];
for (let i = 0; i < 27; i++) {
misc.budget.industrialTaxRate[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.industrialTaxRate['+i+']', misc.budget.industrialTaxRate[i] );
}
offset = 0x08c0;
misc.budget.ordinances = [];
for (let i = 0; i < 27; i++) {
misc.budget.ordinances[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.ordinances['+i+']', misc.budget.ordinances[i] );
}
offset = 0x0930;
misc.budget.bonds = [];
for (let i = 0; i < 27; i++) {
misc.budget.bonds[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.bonds['+i+']', misc.budget.bonds[i] );
}
// city services info
misc.cityServicesBudget = [];
for (let i = 0; i < 27; i++) {
misc.cityServicesBudget[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'cityServicesBudget['+i+']', misc.cityServicesBudget[i] );
}
offset = 0x0998;
misc.budget.police = [];
for (let i = 0; i < 27; i++) {
misc.budget.police[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.police['+i+']', misc.budget.police[i] );
}
offset = 0x0a04;
misc.budget.fire = [];
for (let i = 0; i < 27; i++) {
misc.budget.fire[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.fire['+i+']', misc.budget.fire[i] );
}
offset = 0x0a70;
misc.budget.health = [];
for (let i = 0; i < 27; i++) {
misc.budget.health[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.health['+i+']', misc.budget.health[i] );
}
offset = 0x0adc;
misc.budget.schools = [];
for (let i = 0; i < 27; i++) {
misc.budget.schools[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.schools['+i+']', misc.budget.schools[i] );
}
offset = 0x0b48;
misc.budget.colleges = [];
for (let i = 0; i < 27; i++) {
misc.budget.colleges[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.colleges['+i+']', misc.budget.colleges[i] );
}
offset = 0x0bb4;
misc.budget.roads = [];
for (let i = 0; i < 27; i++) {
misc.budget.roads[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.roads['+i+']', misc.budget.roads[i] );
}
offset = 0x0c20;
misc.budget.highways = [];
for (let i = 0; i < 27; i++) {
misc.budget.highways[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.highways['+i+']', misc.budget.highways[i] );
}
offset = 0x0c8c;
misc.budget.bridges = [];
for (let i = 0; i < 27; i++) {
misc.budget.bridges[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.bridges['+i+']', misc.budget.bridges[i] );
}
offset = 0x0cf8;
misc.budget.rail = [];
for (let i = 0; i < 27; i++) {
misc.budget.rail[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.rail['+i+']', misc.budget.rail[i] );
}
offset = 0x0d64;
misc.budget.subway = [];
for (let i = 0; i < 27; i++) {
misc.budget.subway[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.subway['+i+']', misc.budget.subway[i] );
}
offset = 0x0dd0;
misc.budget.tunnel = [];
for (let i = 0; i < 27; i++) {
misc.budget.tunnel[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'budget.tunnel['+i+']', misc.budget.tunnel[i] );
}
log('budget end');
log('current offset: 0x'+offset.toString(16).padStart(4, '0'));
log('===');
offset = 0x0e3c;
misc.yearEnd = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'yearEnd', misc.yearEnd);
misc.globalSeaLevel = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'globalSeaLevel', misc.globalSeaLevel);
misc.terrainCoast = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'terrainCoast', misc.terrainCoast);
misc.terrainRiver = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'terrainRiver', misc.terrainRiver);
misc.military = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'military', misc.military);
misc.newspaperList = [];
for (let i = 0; i < 21; i++) {
misc.newspaperList[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'newspaperList['+i+']', misc.newspaperList[i]);
}
offset = 0x0fa0;
log('===');
misc.ordinances = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'ordinances', misc.ordinances);
misc.unemployed = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unemployed', misc.unemployed);
misc.militaryCount = [];
for (let i = 0; i < 8; i++) {
misc.militaryCount[i] = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'militaryCount['+i+']', misc.militaryCount[i]);
}
offset = 0x0fe8;
log('===');
misc.subwayCount = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'subwayCount', misc.subwayCount);
misc.gameSpeed = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'gameSpeed', misc.gameSpeed);
misc.options = {};
misc.options.autoBudget = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.autoBudget', misc.options.autoBudget);
misc.options.autoGoto = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.autoGoto', misc.options.autoGoto);
misc.options.userSoundOn = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.userSoundOn', misc.options.userSoundOn);
misc.options.userMusicOn = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.userMusicOn', misc.options.userMusicOn);
misc.options.noDisasters = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.noDisasters', misc.options.noDisasters);
misc.options.paperDeliver = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.paperDeliver', misc.options.paperDeliver);
misc.options.paperExtra = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.paperExtra', misc.options.paperExtra);
misc.options.paperChoice = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'options.paperChoice', misc.options.paperChoice);
misc.unknown1 = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'unknown1', misc.unknown1 );
misc.camera = {};
misc.camera.zoom = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'camera.zoom', misc.camera.zoom);
misc.camera.cityCenterX = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'camera.cityCenterX', misc.camera.cityCenterX);
misc.camera.cityCenterY = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'camera.cityCenterY', misc.camera.cityCenterY);
misc.globalArcoPopulation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'globalArcoPopulation', misc.globalArcoPopulation);
misc.connectTiles = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'connectTiles', misc.connectTiles);
misc.teamsActive = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'teamsActive', misc.teamsActive);
misc.totalPopulation = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'totalPopulation', misc.totalPopulation);
misc.industryBonus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'industryBonus', misc.industryBonus);
misc.polluteBonus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'polluteBonus', misc.polluteBonus);
misc.oldArrest = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'oldArrest', misc.oldArrest);
misc.policeBonus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'policeBonus', misc.policeBonus);
misc.disasterObject = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'disasterObject', misc.disasterObject);
misc.currentDisaster = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'currentDisaster', misc.currentDisaster);
misc.disasterActive = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'disasterActive', misc.disasterActive);
misc.gotoDisaster = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'gotoDisaster', misc.gotoDisaster);
misc.sewerBonus = new DataView(data.slice(offset, offset+=4).buffer).getUint32(0); log('offset: 0x'+(offset-4).toString(16).padStart(4, '0'), 'sewerBonus', misc.sewerBonus);
misc.raw = data;
map._segmentData.MISC = misc;
};
let gameMode = {
0x00: 'terrainEdit',
0x01: 'city',
0x02: 'disaster',
};
let offeredMilitary = {
0x00: false,
0x01: true,
};
let militaryType = {
0x02: 'army',
0x03: 'air',
0x04: 'naval',
0x05: 'missile',
};
let gameSpeed = {
0x01: 'Paused',
0x02: 'Turtle',
0x03: 'Llama',
0x04: 'Cheetah',
0x05: 'African Swallow',
};
let weatherTrends = {
0x00: 'Cold',
0x01: 'Clear',
0x02: 'Hot',
0x03: 'Foggy',
0x04: 'Chilly',
0x05: 'Overcast',
0x06: 'Snow',
0x07: 'Rain',
0x08: 'Windy',
0x09: 'Blizzard',
0x0A: 'Hurricane',
0x0B: 'Tornado',
};
let disasters = {
0x00: 'None',
0x01: 'Fire',
0x02: 'Flood',
0x03: 'Riot',
0x04: 'Toxic Spill',
0x05: 'Air Crash',
0x06: 'Quake',
0x07: 'Tornado',
0x08: 'Monster',
0x09: 'Meltdown',
0x0A: 'Microwave',
0x0B: 'Volcano',
0x0C: 'Firestorm',
0x0D: 'Mass Riots',
0x0E: 'Mass Floods',
0x0F: 'Pollution Accident',
0x10: 'Hurricane',
0x11: 'Helicopter Crash',
0x12: 'Plane Crash',
};