public PortraitIndexManager(IMemoryManager memoryManager, IROM rom, bool edited) { currentGame = GameEnumHelpers.GetGame(rom.GameCode); var defaultInfo = defaultInfos[currentGame]; portraitDataPointerPointer = memoryManager.Reserve(defaultInfo.tablePointerOffset, 4); int tableRawPtr = BitConverter.ToInt32(rom.ReadData(portraitDataPointerPointer), 0); int tableEntryCount; if (edited) { string data = rom.GetCustomData(portraitProperty); if (data != null) { tableEntryCount = Convert.ToInt32(data); } else { //Let's just hope for the best... tableEntryCount = defaultInfo.indexAmount; rom.AddCustomData(portraitProperty, tableEntryCount.ToString()); } } else { tableEntryCount = defaultInfo.indexAmount; rom.AddCustomData(portraitProperty, tableEntryCount.ToString()); } portraitDataPointer = memoryManager.Reserve( Pointer.GetOffset(tableRawPtr + defaultInfo.IndexSize), tableEntryCount); entries = new List<GeneralizedPointerTableEntry>(tableEntryCount); LoadDataFromROM(memoryManager, rom, defaultInfo.fe6format, tableEntryCount); }