void AGOSEngine::loadTextIntoMem(uint16 stringId) { byte *p; uint16 baseMin = 0x8000, baseMax, size; _tablesHeapPtr = _tablesheapPtrNew; _tablesHeapCurPos = _tablesHeapCurPosNew; p = _strippedTxtMem; // get filename while (*p) { Common::String filename; while (*p) filename += *p++; p++; if (getPlatform() == Common::kPlatformAcorn) { filename += ".DAT"; } baseMax = (p[0] * 256) | p[1]; p += 2; if (stringId < baseMax) { _stringIdLocalMin = baseMin; _stringIdLocalMax = baseMax; _localStringtable = (byte **)_tablesHeapPtr; size = (baseMax - baseMin + 1) * sizeof(byte *); _tablesHeapPtr += size; _tablesHeapCurPos += size; size = loadTextFile(filename.c_str(), _tablesHeapPtr); setupLocalStringTable(_tablesHeapPtr, baseMax - baseMin + 1); _tablesHeapPtr += size; _tablesHeapCurPos += size; if (_tablesHeapCurPos > _tablesHeapSize) { error("loadTextIntoMem: Out of table memory"); } return; } baseMin = baseMax; } error("loadTextIntoMem: didn't find %d", stringId); }
void SimonEngine::loadTextIntoMem(uint stringId) { byte *p; char filename[30]; int i; uint base_min = 0x8000, base_max, size; _tablesHeapPtr = _tablesheapPtrNew; _tablesHeapCurPos = _tablesHeapCurPosNew; p = _strippedTxtMem; // get filename while (*p) { for (i = 0; *p; p++, i++) filename[i] = *p; filename[i] = 0; p++; base_max = (p[0] * 256) | p[1]; p += 2; if (stringId < base_max) { _stringIdLocalMin = base_min; _stringIdLocalMax = base_max; _localStringtable = (byte **)_tablesHeapPtr; size = (base_max - base_min + 1) * sizeof(byte *); _tablesHeapPtr += size; _tablesHeapCurPos += size; size = loadTextFile(filename, _tablesHeapPtr); setupLocalStringTable(_tablesHeapPtr, base_max - base_min + 1); _tablesHeapPtr += size; _tablesHeapCurPos += size; if (_tablesHeapCurPos > _tablesHeapSize) { error("loadTextIntoMem: Out of table memory"); } return; } base_min = base_max; } error("loadTextIntoMem: didn't find %d", stringId); }