Сейчас на форуме: asfa, Rio (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Цикл очистки памяти в Dll библиотеке
Посл.ответ Сообщение

Ранг: 2.5 (гость)
Активность: 0.010
Статус: Участник

Создано: 03 февраля 2014 22:07 · Поправил: UkrainianBoy96
· Личное сообщение · #1

Здравствуйте! Недавно вышла GTA SA на WP8, она отлично работает на устройствах с 1 гб оперативки. Но также запускается и на 512 ОЗУ только проблема в том что после 1 мин игры происходит вылет. После недолгих опытов, попробовали сжать текстуры, и это помогло, продлило время игры на 5-7 минут. Сразу стало понятно что это происходит потому что памяти достигает максимального значения, а очистка не происходит. Начали декомпилировать библиотеки и искать причину но нечего толкового не нашли.
Вот три библиотеки GTA.zip которые есть в игре:
Zlib.Portable.dll
WP8Comp.dll
GTASA.dll


В библиотеке GTASA.dl: нашел такой код:

private Dictionary<string, wp8Image> imageCache;
private Dictionary<string, wp8Image>] imageCache1;
private const int MAX_IMAGE_FILES = 0x40; - это размер 64
private const int MAX_RESOURCE_FILES = 0x40; - это размер 64
private static ResourceFactoryImpl me;

и два цикла:

public int generateImageHandle(Size size)
{
int num = this.getNextImageGenHandle();
wp8Image image = new wp8Image(new RectangleShape(0.0, 0.0, size.get_Width(), size.get_Height()), "", new Point(0.0, 0.0), size);
string str = num.ToString();
this.imageCache1[0x3f][str] = image;
return num;
}
----------------------------------------------------------------------------------------------------------------------
me = this;

for (int i = 0; i < 0x40; i++)
{ this.imageCache1[i] = new Dictionary<string, wp8Image>();
}
}


Изменения в них значений [0x3f] и 0x40 не помогло, либо я не знаю на какое нужно, но я его и понижал и повышал.

Библиотека Zlib.Portable.dll я так понял отвечает за распаковку кэша игры, там есть такие интересные значения:

return this._bufferSize;
}
set
{
if (value < 0x400)
{
throw new ArgumentOutOfRangeException("BufferSize", "BufferSize must be greater than 1024 bytes]");
}
this._bufferSize = value;

Что это за цикл я не понял? Так как менял значения 0x400 на 0x200 и 0x70 и ничего не помогло.

На счет WP8Comp.dll она не открывается обычным компилятором, только IDA но там не понятный для меня язык, так как библиотека управляет всем процессом игры)


 eXeL@B —› Вопросы новичков —› Цикл очистки памяти в Dll библиотеке
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати