public override void OnRebuild(VoidPtr address, int length, bool force) { ItmFreqOffEntry *header = (ItmFreqOffEntry *)address; *header = new ItmFreqOffEntry(); header->_offset = HasChildren ? _offset : 0; header->_count = (uint)Children.Count; }
public override void OnRebuild(VoidPtr address, int length, bool force) { ItmFreqOffEntry *Header = (ItmFreqOffEntry *)address; *Header = new ItmFreqOffEntry(); Header->_offset = _entryOffset; Header->_count = _count; //Root._pointerList.Add(((int)address - (int)BaseAddress)); for (int i = 0; i < Children.Count; i++) { Children[i].Rebuild(BaseAddress + Header->_offset + (i * 0x14), 0x14, force); } }
public override bool OnInitialize() { base.OnInitialize(); ItmFreqHeader *Header = (ItmFreqHeader *)WorkingUncompressed.Address; _dataLength = Header->_DataLength; _fileSize = Header->_Length; _DTableCount = Header->_DataTable; _offCount = Header->_OffCount; BaseAddress = (VoidPtr)Header + 0x20; _pPointerList = BaseAddress + _dataLength; _strings.Add("genParamSet"); _t1 = TableList->_table1; _t2 = TableList->_table2; _t3 = TableList->_table3; _t4 = TableList->_table4; _t5 = TableList->_table5; for (int i = 0; i < 5; i++) { if (TableList->Entries[i]._count > 0) { _numTables++; } } // Add the offsets to the pointers list, then the offset to the table list. for (int i = 0; i < _offCount; i++) { _pointerList.Add(*(bint *)(_pPointerList + i * 4)); } // Get the location for the Data Table, then add each entry to the list. _pDataTable = _pPointerList + _offCount * 4; for (int i = 0; i < Header->_DataTable; i++) { _DataTable.Add(new ItmFreqOffPair(*(bint *)(_pDataTable + i * 8), *(bint *)(_pDataTable + i * 8 + 4))); } if (_name == null) { _name = "Item Generation"; } return(_numTables > 0); }