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

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

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

Kurtan

Тема в разделе "Установка и запуск игр", создана пользователем AndyFox, 5 апр 2014.

  1. AndyFox

    AndyFox

    Регистрация:
    22 июл 2009
    Сообщения:
    4.238
    Похоже на то что игра Kurtan с сайта непроходима...

    79eccd92371fc1090d23b913cac53710.jpeg 3ba09128106aa59be5847933ba5d52de.jpeg

    Уровень (D2) выше синей точки (положения игрового персонажа) постоянно выдаёт ошибку и бестактно выбрасывает в DOS.

    P. S. Кстати версия игры на сайте 2.01, а прилагаю для истории версию 1.1.

    a86e49f7b5b3f38cd1546cc8b851d47c.jpeg be36731d4b88eb42a38d2d646ef8628e.jpeg
     

    Вложения:

    • KURTAN.zip
      Размер файла:
      87,9 КБ
      Просмотров:
      105
    kreol, Neresar, Val07og и 3 другим нравится это.
  2.  
  3. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.202
    Прикольно - не знал, что версия 2.1 есть.
    На самом деле эту тему в УиЗ надо.
    Проблема в том, что в версии 2.1 автор добавил проверку целостности уровней - в частности, чтобы точек (мест под сундуки) было столько же, сколько сундуков. Но игру он при этом, похоже, не проходил и не тестировал. Потому что на этом экране есть привидение (знак "?"), которое эти точки уничтожает. После чего при загрузке этого уровня (уйти-вернуться) игра всегда будет находить "ошибку". Если его не подбирать, то и игра валиться не будет.
    Проверку на корректность можно отломать:
    KURTAN.EXE
    Смещение Было Стало
    1 0000830C 74 EB
    2 0000834B 74 EB

    Но, скорее всего, это ничем хорошим для дальнейшей игры не кончится.
     
    Vizit0r, adamusan, AxXxB и 7 другим нравится это.
  4. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.148
    Перенес в УиЗ.
     
    iunnamed, Val07og и AndyFox нравится это.
  5. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.202
    Долгожданное исправление, позволяющее более или менее нормально играть в игру даже на Windows XP.
    После внесения соответствующих изменений носильщик будет делать столько шагов в нужную сторону, сколько раз была нажата клавиша того или иного направления, а не бежать без становки как это было раньше.
    Исправление особо не тестировалось, так что просьба сообщать, если что-то обнаружится.

    Смещение: Было Стало ; Комментарий

    KURTAN v1.1 1989 (KURTAN.EXE:84640)
    0000A855: 02 00 ; left-right code
    0000B3B5: 02 00 ; up-down code

    KURTAN v2.01 1990 (KURTAN.EXE:167830)
    00011824: 05 00 ; up-left-right-down code

    По ходу дела выяснилось, что во второй версии есть новая клавиша:
    DELETE - возврат хода и сундука, но только на 1 клетку назад - внимание, это штука стоит $50!
    Работает только при движении вместе с сундуком.
    Не сработает, если сундук уже упёрся в стенку и был сделан ещё хоть один ход (в оригинале, без исправления выше, даже движение на месте без остановки считается ходом).

    Из прочих интересных вещей - обе версии игры написаны на Borland Turbo C, но вместо связки kbhit() и getch() для обработки клавиш управления используется bioskey() с соответствующими вызовами _KEYBRD_READY (1) и _KEYBRD_READ (0).

    В целом, код второй версии значительно лучше - например, автор догадался не разделять функции для обработки движения по горизонтали и вертикали на отдельные подпрограммы (отсюда и два байта для изменения в первой версии), а делать это в одной, передавая туда как аргументы приращение шага для x и y соответственно (0, -1 - вверх; 0, 1 - вниз; -1, 0 - влево; 1, 0 - вправо).

    Так что теперь все, кто не мог раньше справиться с капризным управлением этой игры, могут попытаться поиграть (даже в DOSBox с низким количеством циклов приходилось ловить момент, чтобы остановить носильщика до того как тот делов наделает).
     
    Последнее редактирование: 24 дек 2014
    Vizit0r, kreol, AndyFox и 9 другим нравится это.
  6. lordi

    lordi

    Регистрация:
    4 дек 2008
    Сообщения:
    247
    iunnamed, выложи пожалуйста ссылки на обе исправленыне версии
     
    AndyFox нравится это.
  7. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.202
    Добавьте на сайт в дополнения.
    Первый запуск программы устанавливает исправление, а повторный - откатывает назад.
    Исходные коды в комплекте.
    В названии темы можно оставить только название игры, т.к. теперь тема общая по игре.
     

    Вложения:

    • kurtanfx.zip
      Размер файла:
      5,3 КБ
      Просмотров:
      96
    MAN-biker, Vizit0r, kreol и 6 другим нравится это.
  8. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.148
    iunnamed, тему переименовал. Для выкладывания на сайт нужно краткое и емкое описание файла.
     
    AndyFox нравится это.
  9. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.202
    Как-нибудь так сойдёт?
     
    MAN-biker, kreol, AndyFox и ещё 1-му нравится это.
  10. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.148
    Выложил!
     
    MAN-biker, kreol, AndyFox и 4 другим нравится это.
  11. MAN-biker

    MAN-biker

    Регистрация:
    17 авг 2008
    Сообщения:
    4.171
    НАКОНЕЦ-ТО!!! Думал, что никогда такого не сделает никто, игра отличная, но из-за ИДИОТСКОГО управления так в нее и не смог поиграть в удовольствие, терпения хватало на пару экранов. Чем "думал" автор - загадка.
    Снимаю шляпу перед автором фикса! :worthy:
     
    AndyFox нравится это.
  12. ACorvinus

    ACorvinus

    Регистрация:
    12 фев 2016
    Сообщения:
    2
    Ну, с данным патчем невозможно перемещаться путем зажатия клавиши курсора - срабатывает слишком много нажатий, и герой потом долго таранит стенку. Если по образцу современных игр, то движение бы прекращалось после отпускания клавиши. То есть то длительное перемещение, которое старое управление делало легким, здесь получается наоборот труднее, приходится в уме считать клетки перемещения.

    Не знаю, конечно, можно ли это исправить в таком патче, но все равно отметить как недостаток такого режима можно. В целом-то, конечно, новое управление несравнимо лучше того, что было.
     
    MAN-biker нравится это.
  13. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.202
    Не угодишь, нет чтобы спасибо сказать.
    Во вложении программа с исходными кодами.
    Запускать Kurtan или любую другую игру, работающую через int 16h, вот так:
    singlkey.exe kurtan.exe
    Можно с параметрами для игры (если они есть):
    singlkey.exe game.exe param1 param2
    Программа перехватывает int 9h и не даёт нажать более одной кнопки, т.е. пока текущую кнопку не достали через int 16h из клавиатурного буфера, то новая туда помещаться не будет (все новые нажатые клавиши будут пропадать).
    Что это меняет: можно жать в нужном направлении кнопку сколько угодно - пищать компьютер не будет и накапливаться нажатые кнопки тоже не будут (программа не даёт помещать в буфер более одной), так что при отпускании кнопки движение сразу будет прекращаться.
    Несколько замечаний:
    1) Отпускать клавишу нужно за 2 (прописью: две) клетки до нужной, иначе грузчик остановится слишком поздно. Это связано с тем, что перемещение в Kurtan дискретное - по клеткам, и анимацию перемещения из одной в другую нельзя прервать, но клавиша считывается до начала анимации, поэтому даже если отпустить когда анимация уже идёт, то новая клавиша будет в буфере, а, значит, ещё одна клетка будет пройдена после завершений текущей анимации.
    2) В DOSBox на 3000 циклах - отлично. Если ставить больше, то становится заметна небольшая задержка после первого шага - это особенность клавиатурного буфера.
    В качестве домашней работы всем по прежнему недовольным предлагаю придумать как и исправить упомянутые выше вещи самостоятельно.

    Чуть не забыл: использовать эту штуку нужно обязательно вместе с патчем отключающим бег.
     

    Вложения:

    • singlkey.zip
      Размер файла:
      3,4 КБ
      Просмотров:
      65
    MAN-biker, Vizit0r, Sharp_ey и ещё 1-му нравится это.
  14. Взрывастер

    Взрывастер

    Регистрация:
    12 апр 2019
    Сообщения:
    13
    Играл в эту игрушку ещё в 2004, у меня тогда был 486DX2-66, грузчик носился как угорелый. В общем, решил я её хакнуть, из инструментов было только ArtMany, уже не помню всех подробностей но мне удалось заставить грузчика передвигаться пошагово. Но это уже история.
    Не давно так же решил её поковырять, на этот раз знаний и инструмента гораздо больше. С начало я игру запустил на эмуляторе, SPC AT, понял что игра идёт только на 386, а на 486-м, как и на реальном 486DX2-66, нормально не идёт. Тут ещё была проблема с самим эмулятором, искажал картинку. Ну да ладно.
    Тут я понял, что проблема в функции delay, это стандартная библиотека Си, я создал небольшую программку на TurboC++3.0 и таймер в ней заработал совершено адекватно, тут я понял, что надо заменить код delay, на новый. Создал код на основе ТС3.0 gelay на ассемблере UASM(он позволяет создавать бинарники(shell код называется)), так же создал патчер, и батником заменил старый код. Игра на атлоне 3 ГГц пошла как на 286. :)
    В общем, вот архивчик. Состав:
    KURTAN.EXE пропатченый файл игры, версия 1.1
    patch_delay.asm исходник врезки, для компиляции использовать UASM 2.46 х86
    PatchKurtan.bat батник для запуска сборки бинкода и патчера. Надо самостоятельно установить пути UASM ассемблера
    patcher_bin.exe патчер, написан на ассемблере.
    В принципе можно совмещать с правками авторов выше. Правда пока не испытывал.
    Вроде всё.
     

    Вложения:

    Последнее редактирование: 12 апр 2019
    iunnamed, MAN-biker, TheMadLynx и ещё 1-му нравится это.
  15. Взрывастер

    Взрывастер

    Регистрация:
    12 апр 2019
    Сообщения:
    13
    Я ошибся, это библиотека dos.h, понятно, используется для MS-DOS.
    Так же я ошибочно в архив вложил дебаговую версию патчера. В общем, позже постараюсь выложить версию для 2.01, и ещё правку пошагового движения без переполнения буфера. Но это потом, сейчас не получится.:(
     
    iunnamed, lordi, MAN-biker и ещё 1-му нравится это.
  16. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.202
    У версии 2.1 остались отладочные символы - немного помогает разобраться в коде игры.
    Вот они переделанные в idc-скрипт для IDA.
    Применять так:
    1) Открыть KURTAN.EXE версии 2.1 в IDA, но снять галку "Enabled" у "Analysis".
    2) Выбрать в меню "File" - "Script File..." и указать KURTAN21.IDC файл.
    3) После этого вручную щёлкнуть по кнопке "Analysis".
    Анализ нужно запускать после, иначе там коллизия имён будет.
     

    Вложения:

    • kurtan21.zip
      Размер файла:
      3,4 КБ
      Просмотров:
      23
    Robbo и MAN-biker нравится это.
  17. Взрывастер

    Взрывастер

    Регистрация:
    12 апр 2019
    Сообщения:
    13
    Понял почему в игре такое управление. В MS-DOS нет нужных функций для обработки нажатий клавиш, в.т. нельзя отловить нажатия сразу нескольких клавиш, а так же нельзя отловить отпускания. Для этого надо самому написать драйвер клавиатуры, и указать на него указатель. Так что надо этот драйвер написать, и встроить в код игры, так же внести другие изменения, тогда ГГ будет останавливаться при отпускания клавиш.
    Да, у автора было мало опыта по созданию игр, использовал тормозную графическую библиотеку TurboC 1/2, а надо было самому написать, желательно на асме, но те временна это мало кто умел делать, литературы было мало.
     
    MAN-biker нравится это.
  18. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    В MS-DOS есть функции для прямой работы с любым железом (собственно, функциями это даже назвать нельзя, прост прямой доступ), и уж для перехвата keydown/keyup обработчик пишется в десять строк.
     
    AndyFox, lordi и MAN-biker нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление