Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: IMPACT тайна 80-го уровня

  1. #1
    Junior
    Регистрация
    31.03.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    19
    Благодарностей: 137
    Записей в дневнике
    3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию IMPACT тайна 80-го уровня

    Когда я изучал работу игры IMPACT, чтобы вставить в нее свои уровни вместо базовых, я натолкнулся на очень любопытные глюки. Поиском по форуму я не нашел похожей темы, поэтому решил оформить небольшое исследование в виде поста-статьи.

    IMPACT: Тайна 80-го уровня

    Кто хоть раз проходил игру IMPACT, тот наверняка сталкивался с уровнем №80. Эту белиберду на экране не запомнить трудно:


    Рис. 1 Уровень 80 в большинстве оригинальных версий игры IMPACT.

    А в самом верху наблюдаем даже фиолетовый кирпичик, которого без активации фонарика быть видно не должно. В нескольких книгах по описанию игр от разных издательств, проскакивают занятные советы, которые также намекают, что автор проходил уровень именно в такой расстановке:


    Рис. 2. Фрагменты описания из книг 500 и 600 игр издательств "Солон", "VA Print" и "Питер".

    По поводу "желтых кирпичей" и 75 уровня, разговор отдельный. А вот по 80-му уровню совет занятный. А может ли быть такое? Меня такой "дизайн" уровня и насторожил. Есть в этом что-то неправильное, иррациональное. Многие знают, что игра состоит из 2-х частей: базовых уровней (01-80), которые включаются по умолчанию, и пользовательских 81-90, которые включаются по паролю "USER".
    Догадки подтвердились, когда я расшифровал алгоритм кодировки базовых уровней (01-80) и написал процедуру кодирования и декодирования, чтобы извлечь их оттуда, и поставить вместо них свои. И сразу становится понятно, что в реальности по задумке автора, уровень должен выглядеть вот так:


    Рис. 3. Правильно расшифрованный уровень 80 игры IMPACT.

    Постепенно выбивая кирпичики, зелено-красно-синяя масса таяла, приобретало все явственные очертания. И теперь становилось понятно, что в конце уровня, по задумке автора, должно остаться слово END:


    Рис. 4. Правильный финал 80-го уровня IMPACT.

    Внимательно изучив код игры, стала понятна причина. По всей вероятности либо сам разработчик до конца не протестировал свое детище, или кто-то по невнимательности оставил отладочное значение в команде, когда монтировали сжатые уровни. В общем, вышло следующее:


    Рис. 5. Дизассемблер фрагмента игры с ошибкой перехода.

    При запуске последнего базового уровня после сравнения командой CP 80 (в адресе 48832), по инструкции JR NC, 48842, компьютер переходит к переброске в карту игры пользовательских несжатых уровней, захватив последний базовый зашифрованный. Следовательно шифрованный уровень перебрасывается в действующую карту игры нераспакованным. Что из этого получается, мы видели на самом первом рисунке. Для исправления ситуации достаточно вместо 80, поставить число 81, и все встанет на свои места.
    Но на этом сюрпризы не заканчиваются. По окончании уровня, компьютер просто повисает, выдав на экран пиксельный мусор:


    Рис. 6. Зависание IMPACT после окончания уровня 80 и его причина.

    При каких обстоятельствах, была допущена такая ошибка, сказать сложно. Программа просто зацикливается на инструкции JR 56210. Какова была первоначальная задумка, остается только гадать.
    Один из оптимальных вариантов решения косяка без порчи кода игры, мне видится в замене адреса 56210 на адрес 56193 (код 024, 237). В этом случае ничего не надо перемещать, и после окончания уровня, произойдет возвращение в стартовое меню.
    Но желательно это сделать и чуть раньше. В предыдущей подпрограмме, с которой идет переход в это место. И тогда на экран даже не вылезет мусор. Для этого в инструкции по адресу 56107 вместо JR Z, 56196 поставьте 56193. Тогда после успешного прохождения уровня программа выйдет в начальное меню.

    Подводя итог: чтобы немного подправить "авторские баги", сделайте следующие изменения в игре:

    48833 ---> 81
    56211 ---> 237 или 56108 ---> 84

  2. Эти 23 пользователя(ей) поблагодарили Yuri80 за это полезное сообщение:
    ace210 (01.04.2016), artice (01.04.2016), CityAceE (02.04.2016), creator (01.04.2016), Dimaz (02.04.2016), Gamer999 (08.04.2016), helcril (01.04.2016), hippiman (01.04.2016), klondike (02.04.2016), krotan (01.04.2016), LW (01.04.2016), NEO SPECTRUMAN (09.04.2016), Oleg N. Cher (11.04.2016), piroxilin (12.04.2016), Q-Master (12.04.2016), SoftLight (01.04.2016), solegstar (01.04.2016), tnt23 (01.04.2016), TomCaT (17.04.2016), wbr (01.04.2016), ZX_NOVOSIB (01.04.2016), [bETA]mEN (01.04.2016), Бука (01.04.2016)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Activist Аватар для krotan
    Регистрация
    30.08.2010
    Адрес
    Санкт-Петербург
    Сообщений
    424
    Благодарностей: 138
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо! Круууто! Пропатченную версию ещё нигде не выкладывали?

  5. #3
    Guru Аватар для goodboy
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    9,848
    Благодарностей: 3337
    Записей в дневнике
    1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Yuri80 Посмотреть сообщение
    Какова была первоначальная задумка, остается только гадать.
    я в таких случаях обычно смотрю параллельные версии (cpc/c64)

  6. #4
    Junior
    Регистрация
    31.03.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    19
    Благодарностей: 137
    Записей в дневнике
    3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krotan Посмотреть сообщение
    Спасибо! Круууто! Пропатченную версию ещё нигде не выкладывали?
    Спасибо за отзыв. Сделал по Вашей просьбе, только не проверял работоспособность (нужно поиграть и проверить последние уровни с установкой точек прерывания):

    Вложение 56683

    Будем надеяться, что работает. Если нет, то переделаю, или можете сделать сами. На самом деле это 30 секунд работы. Изменить 2-3 циферки по указанному адресу. Не думал, что для такой мелочи нужно отдельную версию делать.

    Я уже писал в своей книге (стр. 97-103), как такие вещи делаются:
    1) Открыть оригинальную игру в tapir со всеми магнитофонными блоками
    2) Открыть блок Bytes без заголовка для редактирования в режиме Dump с маркером 255 и байтом контрольной суммы позади
    3) Внести изменения в тело массива по указанным адресам со смещением +1
    4) Подкорректировать байт контрольной суммы блока кодов
    5) Сохранить файл .tzx

    Только вмешательство извне. Ни BASIC ни порядок блоков не нужно редактировать, какой бы навороченной защита там не стояла.

    UPD: Случайно залил битый файл. Уже поправил. Просьба перекачать, кто успел скачать 15 минут назад!
    Вложения Вложения
    Последний раз редактировалось Yuri80; 01.04.2016 в 19:07. Причина: перезалито вложение

  7. Эти 3 пользователя(ей) поблагодарили Yuri80 за это полезное сообщение:
    Andrey F (01.04.2016), OMu4 (01.04.2016), SoftLight (01.04.2016)

  8. #5
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,252
    Благодарностей: 878
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хм, а я знаю про этот баг. И кстати копал амстрадовскую версию, там вроде другая надпись была за кубиками (и да, бага этого не было). После прохождения последнего уровня там звуковой сигнал и рестарт с нулевого уровня (так что ты как-то неправильно исправил). Могу найти записи, если кто-то хочет посмотреть детальнее и сравнить со спектрумом.

    Последний раз редактировалось Shadow Maker; 01.04.2016 в 19:36.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Мордовия - Республика звука

  9. #6
    Guru Аватар для goodboy
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    9,848
    Благодарностей: 3337
    Записей в дневнике
    1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию AmstradCPC

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    После прохождения последнего уровня там звуковой сигнал и рестарт с нулевого уровня
    Последний раз редактировалось goodboy; 01.04.2016 в 20:17.

  10. #7
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,252
    Благодарностей: 878
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ага, именно это я и копал. Ты посмотри BBC Micro, я ее не глядел, она вроде как раз оригинал.

    Для инфы если кто играть будет в CPC - #6f94, b6 - вечные жизни.
    Последний раз редактировалось Shadow Maker; 01.04.2016 в 20:41.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Мордовия - Республика звука

  11. #8
    Veteran Аватар для creator
    Регистрация
    02.07.2006
    Адрес
    Новосибирск
    Сообщений
    1,541
    Благодарностей: 1015
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Yuri80 Посмотреть сообщение
    Случайно залил битый файл. Уже поправил.
    Увы, всё равно убитый напрочь.

    Нет, рабочий, только он оказался TZX, а не TAP как он назван.

  12. #9
    Junior
    Регистрация
    31.03.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    19
    Благодарностей: 137
    Записей в дневнике
    3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не получается сегодня с заливкой на форум. Да, туда залился .tzx, но переименовался в .tap
    Можно переименовать предыдущему расширение, или держите вот этот вот:

    IMPACT (Fix-2016).rar

    Повторно перезалил. Теперь с правильным расширением. Прошу прощения, не привык с форумом такого типа работать.

  13. #10
    Veteran Аватар для creator
    Регистрация
    02.07.2006
    Адрес
    Новосибирск
    Сообщений
    1,541
    Благодарностей: 1015
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Yuri80 Посмотреть сообщение
    Да, туда залился .tzx, но переименовался в .tap
    Да ладно, как он мог в архиве переименоваться-то?
    Спасибо.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Обсуждение: Тайна оператора EDIT
    от ivagor в разделе Корвет
    Ответов: 14
    Последнее: 19.06.2014, 15:17
  2. Тайна оператора EDIT
    от esl в разделе Корвет
    Ответов: 1
    Последнее: 20.05.2014, 13:02
  3. Ответов: 48
    Последнее: 25.06.2013, 00:24

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •