1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Патч игры «Аладдин» для Windows 95

Тема в разделе "Мастерская", создана пользователем Val07og, 19 апр 2014.

  1. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897

    УТОЧНЕНИЕ!



    Патч ещё дорабатывается.
    Последний вариант лежит в конце темы.


    Фикс для Windows версии, позволяющий запустить игрушку на Windows XP и более поздних системах: Посмотреть вложение Aladdin_XP_fix.rar .

    Если у кого-то игра идёт слишком быстро, и стражники убивают почти моментально, вариант в папке "Ещё более замедленная" должен работать.

    В свойствах файла на вкладке "совместимость" поставить режим "256 цветов".
     
    Последнее редактирование: 30 апр 2014
    kreol, Utas, Steel Rat и 7 другим нравится это.
  2.  
  3. EBGEHN4

    EBGEHN4

    Регистрация:
    31 окт 2013
    Сообщения:
    19
    Отписываюсь по поводу фикса - пашет! Причем даже на 7й! Дополняя совет Val07og'а по поводу бешеной скорости - ее удалось усмирить до нормальной путем запуска игры при помощи DXWnd (OG) с данного сайта. Добавляете экзешник из папки с установленной игрой (Add (A - горячая клавиша)), затем на игре жмете Modify правой клавишей мыши (M - горячая клавиша), затем в графе FPS ставите галочку на Limit и выставляете значение 60.
     
    AxXxB и Val07og нравится это.
  4. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    EBGEHN4, а из "замедленной" папки всё-таки не работает нормально? Там явно зависит от скорости машины, но может, чего-то я ещё не доглядел или алгоритм неправильно понял...
     
    Последнее редактирование: 19 апр 2014
  5. EBGEHN4

    EBGEHN4

    Регистрация:
    31 окт 2013
    Сообщения:
    19
    Насчет замедленной - у меня лично разницы нет если честно. Идет резко как понос. Правда я не знаю как "замедленный вариант" идет на ХР в силу отсутсвия сей системы на данный момент. В принципе - оба наши совета могут быть полезными (индивидуально для каждого).
     
    Последнее редактирование: 20 апр 2014
    beha_r и Val07og нравится это.
  6. beha_r

    beha_r

    Хелпер

    Регистрация:
    29 янв 2009
    Сообщения:
    1.203
    Полностью с вами согласен, у меня тоже самое. Но вариант предложенный EBGEHN4 работает. Правда на моей системе есть другая проблема - отсутствуют почти все звуки в игре.
     
    Val07og нравится это.
  7. EBGEHN4

    EBGEHN4

    Регистрация:
    31 окт 2013
    Сообщения:
    19
    Увы, насчет всех звуков не знаю. Но удары, айканья, ножи и яблоки присутствуют. По крайней мере у меня.
     
  8. beha_r

    beha_r

    Хелпер

    Регистрация:
    29 янв 2009
    Сообщения:
    1.203
    И у меня как раз присутствуют только эти звуки.
     
    Последнее редактирование: 20 апр 2014
  9. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.235
    Немного переделал и попробовал через Sleep - при размере экрана "normal" работает нормально (может чуть подтормаживает), а вот на больших - начинает серьёзно тормозить.
    Меньше 16 тиков в Sleep ставить смысла нет - оно всё равно 16 ждать будет.
    Наверное, надо как-то переписать код задержки, но смотрел бегло, так что пока идей нет.
    А, совсем забыл - ещё заменил имя файла конфигурации "ALADDIN.INI" на ".\SETUP.INI", чтобы функции <Get/Write>PrivateProfile<Int/String> читали/писали не в C:\Windows, а в текущую папку.
     
    Последнее редактирование: 25 апр 2014
    Fabricator, Val07og, AxXxB и 2 другим нравится это.
  10. beha_r

    beha_r

    Хелпер

    Регистрация:
    29 янв 2009
    Сообщения:
    1.203
    Вот, уже лучше, правда у меня игра все равно немного спешит, даже если растянуть ее на весь экран. Ну да это мы поправим.

    Разобрался со звуками - игра, похоже, не знает длинных путей. Кидаем игру в %Ваш Диск%:\Aladdin Никаких пробелов и длинных путей, только формат 8.3.
     
    Val07og и iunnamed нравится это.
  11. AxXxB неадекват

    AxXxB

    Хелпер Переводчик

    Регистрация:
    13 ноя 2006
    Сообщения:
    1.663
    Можно использовать функции timeBeginPeriod/timeEndPeriod, чтобы задавать минимальное время работы Sleep (меньше 16).
     
    Val07og и iunnamed нравится это.
  12. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.235
    В этой версии байт по смещению 0001C276 в ALADDINW.EXE отвечает за задержку для Sleep, сейчас там стоит 10h (16). Если его увеличить, то задержка будет больше. Больше 7Fh (127) ставить нельзя - он станет отрицательным, а FFh (-1) вообще никогда из функции не вернётся (-1 = INFINITE - ждать вечно).

    Можно, но тут проблема в том, что игру калибровать нужно - у кого-то она быстро работает, у кого-то наоборот. Очень сильно от железа зависит - хорошо бы аппаратно независимый код...
     
    Val07og, AxXxB и beha_r нравится это.
  13. beha_r

    beha_r

    Хелпер

    Регистрация:
    29 янв 2009
    Сообщения:
    1.203
    Уже сделал 18h мне подошло.
     
    iunnamed и Val07og нравится это.
  14. AxXxB неадекват

    AxXxB

    Хелпер Переводчик

    Регистрация:
    13 ноя 2006
    Сообщения:
    1.663
    Можно попробовать сделать так, как мы делали в Corsairs - вместо GetTickCount вызывать свою функцию, которая будет ждать, пока натикает нужное количество миллисекунд.

    Код процедуры sub_4056F2, насколько я понимаю, на С выглядит примерно так:
    Код:
    void sub_4056F2();
    {
    	tick = GetTickCount() - oldtick;
    	oldtick = GetTickCount();
    	tick = tick + offset;
    
    	eax = tick / 30;
    	if (eax != 0) { 
    		..........
    	}
    	offset = tick % 30;
    }
    Можно написать функцию (назовем ее Wait) такого вида:
    Код:
    int Wait()
    {
    	timeBeginPeriod(1);
    	while((GetTickCount() - oldtick) < 30) Sleep(1);
    	timeEndPeriod(1);
    	return GetTickCount();
    }
    Тогда вместо первого вызова GetTickCount вставляем Wait, и ожидание становится аппаратно независимым) Значение 30 в Wait, возможно, стоит немного уменьшить - поставить 28, например.
     
    Val07og и iunnamed нравится это.
  15. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.235
    Точно! Вертелось в голове, что в какой-то игре похожая проблема была и её как-то так хитро исправили, но за давностью времени ни название игры, ни как она была поправлена уже не помню.
     
    Val07og и AxXxB нравится это.
  16. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    30 - это уже я пытался "поправить", в оригинале 14.
     
    iunnamed и AxXxB нравится это.
  17. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    На всякий случай, неизменённый экзешник: Посмотреть вложение ALADDINW.EXE.orig.rar .
    Что поменял.
     
    iunnamed и AxXxB нравится это.
  18. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    iunnamed нравится это.
  19. AxXxB неадекват

    AxXxB

    Хелпер Переводчик

    Регистрация:
    13 ноя 2006
    Сообщения:
    1.663
    Сделал фикс на основе соображений из своего прошлого поста (подробности). Также присутствуют изменения от Val07og (кроме 1Eh в sub_4056F2) и запись настроек в ".\SETUP.INI", как сделал iunnamed.
     

    Вложения:

    • ALADDINW.zip
      Размер файла:
      114,3 КБ
      Просмотров:
      93
    Sharp_ey, iunnamed и Val07og нравится это.
  20. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    Offtop
    AxXxB, а это работает? Там relocation как раз посреди call получился.
     
  21. AxXxB неадекват

    AxXxB

    Хелпер Переводчик

    Регистрация:
    13 ноя 2006
    Сообщения:
    1.663
    Offtop
    Val07og, функция лежит сразу после таблицы релоков. У iunnamed его Sleep там же была :). На моем компе все работает.
     
    Val07og нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление