Начнем обзор тайн, загадок и глюков Dizzy 2.
Голосовые фразы в 128Кб режиме:
В игре три голосовые фразы.
- Welcome to the Treasure Island Dizzy!
- Okay, it's loaded!
- Oi, come back!
Все фразы произносит Андрю Оливер.
Интересно, что не смотря на то, что фразы для 128Кб режима с AY, воспроизводятся они через бипер.
Первый раз после загрузки игры фразы выбираются случайным образом в зависимости от переменной в бейсике, но фактически звучит только первая.
Вторые две фразы предназначены для того, чтобы позвать человека, который загружает с магнитофона длинную игру, а сам пошел заниматься своими делами.
Перед началом каждой следующей игры звучит только первая фраза, да и то в укороченном виде: 'Treasure Island Dizzy!'
Ошибка диалога с торговцем:
В алгоритме диалога с торговцем есть жуткий глюк.
У торговца 4 фразы в ответ на полезную вещь, 4 фразы намекающие, чего он вам даст в следующий раз, одна фраза благодарность за ведро, и одна фраза - отвали, мне эта вещь не нужна.
В алгоритме диалога есть две ошибки:
1. Если вы дадите торговцу две полезные вещи подряд, то он перестанет выдавать вам подсказки про следующую вещь, потому что собьется внутренний счетчик.
2. Если вы честно выслушаете все 4 подсказки, то после того, как торговец даст вам все 4 полезные вещи, и вы опять с ним заговорите, он снова захочет вам дать следующую подсказку. Но проблема в том, что подсказки всего 4, а за ними в таблице обьектов следует медуза на экране с кораблем. И при попытке вывести ее в качестве диалога происходит краш игры.
Ошибка в скроллинге инвентаря:
Если нажать выстрел, чтобы скроллинг инвентаря пошел вверх, и сразу нажать 'Q' -выход из игры. То когда игра начнется заново, скроллинг инвентаря будет временно испорчен, потому что доскроллируется недоскроллированное в предыдущий раз, когда нажали 'Q'.
Число жизней:
Изначально авторами планировалось несколько жизней. Но в итоге возникли сложности с восстановлением в разных местах, где можно запороться, и братья оставили одну жизнь.
Однако в начальном эскизе шапки игры, эти жизни присутствуют (черновик авторов):
Скрытый текст
[свернуть]
Технические особенности:
Вся игра работает на прерываниях IM0, что не совсем айс. И только во время биперной музыки переключается на IM2. Впрочем, так же было и у Dizzy-1.
Для вывода текстов братья придумали макроязык (выбор координаты, цвета, шрифта, рекурсивный вывод текста и т.д.), половина команд которого попросту не используется.
На месте буфера спрайта Диззи остался вот такой текст:
По сравнению с Dizzy-1, у Dizzy-2 появились дополнительные возможности вывода спрайтов - со смещением на 4 пикселя по горизонтали (пипец какой тормозной), и возможность отражать спрайт по горизонтали.Код:at the end of file 7, but it will stop earlier if you inlcude an end statement. This can be used t
Причем, вывод самого Диззи со смещением написан быстро, а вывод всех остальных спрайтов медленно.
Каждый кадр делается задержка на 15000 тактов. Видимо, ее сделали для того, чтобы что-то попадало под луч. Однако, в игре и так все активные обьекты безбожно мигают. Посмотрите рыбок в море - все мигают при перемещениях.
В отличие от Dizzy-1, в Dizzy-2 на экране можно выкладывать не более 8 предметов. Причем, монеты тоже считаются за предметы, т.к. их можно брать.
Кусок заднего фона, закрытый каждым предметом, сохраняется в специальном буфере, размером на 8 слотов. Поэтому больше 8 предметов выложить и не получится.
Краб в правом краю моря у стены воды, нарисован не только активным обьектом, но еще и спрайтом, чтобы на 1 пиксель удлинить ему ножки. Для красоты.
Новшества относительно Диззи-1 в том, что теперь предмет может действовать на три обьекта сразу (запускать их активность).
В некоторых случаях используются фиктивные предметы, через которых обьект действует на несколько других обьектов.
Например, наступил на камушек в лесу, он действует на фиктивный предмет, а уже фиктивный предмет действует и на камушек (чтобы тот покатился) и на мостки в лесу (чтобы они опустились).
В принципе, это удобно, не надо писать специальный код для действия разнообразных предметов.
Однако, для некоторых предметов код все же написан - для молнии на могиле пирата Крюка, и для давания 30 монет в финале.
И еще для лесных ловушек. Но это по мелочи.
Особо интересно реализована логика динамита и детонатора.
1. При применении динамита, проявляется статический спрайт динамита, а также выезжает снизу экрана на место детонатора невидимый триггер 1.
2. Если детонатор соприкасается с триггером 1, проявляется статический спрайт детонатора, а также выезжает снизу экрана на место детонатора невидимый триггер 2.
3. Если Диззи пересекается с триггером 2, то активируется невидимый обьект, находящийся вообще на другом экране, который, в свою очередь действует сразу на три обьекта,
а именно - убирает каменную кучу, печатает поверх статического динамита еще один такой же динамит по XOR, чтобы динамит исчез, и убирает триггер 2.
Таким образом, без малейшего кода, но использованием избыточных обьектов, реализован алгоритм взрыва динамита.
Надо заметить, что обычно все сперва ставят динамит, потом детонатор, и сразу все взрывается, и всем хорошо.
Но можно сделать и наоборот - поставить детонатор, потом динамит, а потом подойти к детонатору и все взорвется.
Массив комнат занимает больше места, чем в Диззи-1 - почти 11 килобайт.
А все потому, что лесные и некоторые другие комнаты состоят из большого числа элементов, иногда зашкаливающего за сотню.
Особенно массивен экран с подводным кораблем.
В Dizzy-2 сохранилась та же самая процедура генерации звуков, как и в Dizzy-1.
И даже внутри есть звук взрывания обьекта (например, птички в Dizzy-1 и прочих), только он не используется.
На пузырике, который плывет под водой вверх, можно выложит предмет, и тогда предмет окажется в воздухе.
Это никак не исправишь, потому что Диззи можно выкладывать предметы, когда он стоит на твердых поверхностях. А пузырик твердый.
Во время окончания игры финальная AY-музыка проигрывается быстро и очень скомкано. Это происходит из-за того, что ее проигрывают не отключив прерывания, на которых все еще играет основная фоновая музыка.
Запароны:
Существует место, где можно намертво застрять:
Надо пойти на экран с маской, потом спуститься на экран ниже, и опять начать подниматься по ступенькам на экран с маской. Но подниматься по шажочку. Как только вы сделаете шажок, и появится экран с маской, то вы застрянете колеблясь между двумя этими экранами.
Кроме того, можно запрыгнуть на левый завал камней, выше экрана с динамитом. После чего можно улететь в несуществующие экраны и запороть игру.
Артефакты лодки:
1. Если войти на экран с лодкой, в то время, как находится не на своем стартовом месте, а плавает по морю, то будет видна часть спрайта стоячей лодки, которая затрется плавающей лодкой.
Это происходит потому, что когда вы снаряжаете лодку, то на пирсе в итоге стоят 4 обьекта лодки разных цветов, напечатанных друг поверх друга. И чтобы их убрать, надо все 4 обьекта дезактивировать. Для этого надо писать дополнительный код, и братья, видимо, решили, что и так норм)
2. Из-за того, что плавающая лодка печатается напрямую, а не через XOR, как все другие подвижные обьекты, при коллизии с Диззи, остаются графические артефакты. А печатать по XOR ее нельзя, т.к. тогда стоящие на причале 4 неснаряженных лодки будут постоянно видны.
3. Из-за того, что триггеры лодки сделаны не символами пробел (пустой квадрат 8x8), а почему-то символом '0', при применении предметов для остнастки лодки, можно видеть, как эти триггеры в виде '0' вылетают из правой ножки пристани в сторону Диззи (неужели не замечали?).
Фирменный cheat-mode:
Надо при выборе управления удерживать 'PA' (Andrew & Phillip), и тогда в игре можно нажать 'C', и потом клавишами вправо,влево,K,M переключать экраны. А клавиша 'вверх' - это обратно выход в игру.
Действие некоторых предметов:
Зубная паста действительно нигде не применяется.
Ведро нужно дать торговцу, чтобы получить 500 очков. Но можно и не давать.
Журнал 'Sinclair Abuser' можно применить в любом месте под водой, чтобы получить 1000 очков.
p.s.: По мере нахождения чего-то нового, буду добавлять в первый пост.