Все загадки Dizzy 3 (Fantasy World Dizzy)
Начнем обзор тайн, загадок и глюков Dizzy 3.
https://pic.maxiol.com/images2/16795...y3poster80.jpg
Общие замечания:
* Игра занимает практически всю память под завязку, из-за чего авторам пришлось даже фрагментировать таблицу названий предметов и разносить в разные места памяти.
При этом нерационально используется память для закадрового буфера атрибутов (ее можно сократить), плюс из-за присутствия IM 0 при инициализации игры, не используется область памяти $5B00..$5C25.
* AY-музыка и голосовая фраза размещены в 3-й странице памяти, из-за чего на классических машинах голосовая фраза тормозит (в Диззи-2 было все наоборот, фраза тормозила на +2A/3).
* Движок персонажа Диззи остался почти без изменений.
* Монеты перенесены из категории обьектов в отдельную категорию, что позволило сэкономить 390 байт памяти (одна запись в таблице обьектов занимает 16 байт, а в новой таблице монет 3 байта).
* Экраны наконец-то частично упакованы за счет упаковки повторяющихся атрибутов. Упакованные экраны имеют размер 8371 байт, а неупакованные - 11334 байт. Таким образом, выигрыш почти 3 Кб.
* Из-за появления диалогов в игре значительно больше текстов, чем в предыдущих частях. Также унаследован текстовый процессор, появившийся в Диззи-2. И по славной традиции половина команд процессора не используется, а еще несколько команд используются всего 1-2 раза.
* В игре нашлось название от отсутствующего предмета 'A BOTTLE OF WINE'. Не путать с 'A BOTTLE OF WHISKEY'. То ли сперва авторы хотели назвать виски вином, после чего заменили на виски, а старое название забыли убрать из памяти. То ли должно было присутствовать и вино, и виски. Что менее вероятно.
* AY-музыка в игре слабоватая, использует всего 2 канала. 3-й канал оставлен для спецэффектов.
* Для персонажей семейства Диззи в игре зарезервировано 8 позиций. При этом используется всего 5 персонажей. Или 8 было зарезервировано с запасом, или же персонажей планировалось больше, но потом сюжет сократился.
* Для анимации воды теперь сделана отдельная функция и собственный буфер. Раньше вода размещалась в первых 8 слотах блока обьектов и анимировалась как активный обьект. Также выделена отдельная функция и буфер для анимации пламени.
* На анимированную воду выделено 8 слотов, на огонь - 4 слота. При этом на некоторых экранах больше 4 огней, что вызывает переполнение буфера, но не приводит к краху, т.к. в памяти сразу за буфером огней находится пустующий для данных экранов буфер воды.
Экран:
В отличие от предыдущих двух игр, начиная с Диззи-3 появился закадровый буфер атрибутов. Если раньше твердым считался обьект с пониженной яркостью, а прозрачным - с повышенной яркостью, то теперь эта информация скрыта от игрока, и на экране все рисуется с повышенной яркостью. Плюсы такого решения - возможность прятать скрытые твердые элементы пейзажа и скрытые прозрачные элементы. Минусы - сокращение палитры цветов из-за отсутствия цветов пониженной яркости.
Обьекты:
Обьекты в Диззи-3 устроены значительно сложнее и разнообразнее, чем в предыдущих играх.
Если раньше основная активность обьектов закладывалась достаточно унифицировано в самом их описании, с указанием траектории движения и прочих свойств, то в Диззи-3, помимо того, что значительно увеличилось число типов обьектов, так еще у всех активных предметов появилась ссылка на гибкое описание триггера (прямоугольник и номер экрана, на котором предмет срабатывает), и код, который выполняется именно для этого предмета. Гибкое описание триггера позволило уйти от стандартных для предыдущих игр триггеров размером 8x8, снизив пиксельхантинг применения предметов.
И сразу находим ошибку для 'A BOTTLE OF WHISKEY'. Вместо ссылки на триггер, почему-то в описании находится ссылка на новое название предмета 'AN EMPTY BOTTLE'. При этом, движок воспринимает ссылку на названием, как описание триггера. Первая буква 'A' воспринимается как номер экрана $41. Но этот экран пустой, на нем Диззи не бывает, поэтому краха игры не происходит. Вполне возможно, что в переводах на русский язык на месте первой буквы окажется символ с другим кодом, указывающим на реальный экран. Если на нем применить бутылку виски, вполне возможно, что программа улетит в никуда.
Иными словами, только по случайности данная ошибка не приводит к непредвиденным последствиям.
Особенности прохождения:
Носорог имеет 5 стадий:
1. Если не в стадии 5, то при входе на экран всегда стоит в одном и том же месте. Далее ждет пока Диззи не спустится на его уровень, тогда он встает в рабочую стойку.
2. Пробегает несколько шагов безусловно.
3. Бежит дальше при условии, что на пути есть Диззи или в логове лежит кость.
4. Добегая до логова носорог разворачивается и деактивируется. Если при этом Диззи умер, значит носорог переходит на пункт 1. Иначе забирает кость и переходит на пункт 5.
5. Носорог стоит без действия, но все равно убивает Диззи, если тот до него дотронется.
Иными словами, носорог определяет наличие кости не по самой кости, а по тому, что он (носорог) успешно забежал в логово и при этом не убил Диззи. Если бы Диззи был бессмертным, то носорог бы без всякой кости сказал бы 'какая вкусная кость!'.
Кроме того, если носорог забежал в логово, а Диззи не успел взять камень, то это запорон, и игру дальше пройти нельзя.
Если положить кость на пути носорога, но не в логово, то носорог ее не заметит.
Оба дракона сделаны не только на одном и том же движке, но и находятся в одинаковых координатах на экране. Единственное, чем они отличаются, это тем, что наземный дракон стреляет огнем в случайный момент времени с вероятностью около 2%, а подземный дракон стреляет постоянно, когда его драконье подземное яйцо находится в инвентаре Диззи. С этой точки зрения подземный дракон вообще не особо логичен. Ему все равно, где лежит его яйцо, лишь бы не в инвентаре Диззи. Кроме того, если дракону принести другое яйцо, то он тут же притихает и больше не подает признаков активности, хоть забери все яйца у него. При этом, каждый раз выкладывая перед ним одно и то же яйцо, взятое на облаках, будет повторно показан диалог, что дракон притих.
Еще одно отличие наземного и подземного дракона в том, что пламя у них летит до разных конечных точек. Но это связано с ландшафтом экрана.
Ошибки:
Предмет 'боб' действительно ни на что не действует, и можно просто полить кучку навоза водой, и вырастет стебель. Это не выглядит случайной ошибкой в коде. Проверки на наличие боба нет вообще. Т.е. эта ошибка скорее из разряда, что типа просто забыли что надо связать боб и кучу навоза.
В фирменном режиме cheat-mode после выхода из режима может случиться непредвиденный глюк, т.к. движок Диззи на прерываниях разрешается раньше, чем был напечатан Диззи после восстановления экрана. В результате может возникнуть коллизия с использованием одной и той же функции и из основного кода, и из прерывания.
Вовсе не обязательно давать крысе хлеб. Можно просто положить его на пути крысы, и тут же забрать обратно. Будьте уверенны, что она подойдет к месту, где вы клали хлеб, скушает ничто, и уйдет восвояси.
Кто-то может подумать, а почему все предметы исчезают после применения, а кирка после разбивания камня не исчезает? Наверное в этом есть смысл? Да, есть. Программисты забыли написать кусок кода в обработке разбивания булыжника. Там не только потерялось убирание кирки, но и не инициализируется экран, на который отправляется камень после разбивания. Вообще-то все деактивированные предметы отправляются на экран $FF, которого не существует. Тогда как здесь номер экрана, на который отправляется камень забыли установить, и этот номер берется мусорным. И лишь по случайности его номер ($0B) тоже является неиспользуемым экраном. Иначе бы камень после разбивания появлялся бы на каком-нибудь другом видимом экране.
p.s.: Никаких скрытых тайн и особенностей прохождения не найдено:v2_unsur:
p.p.s.: Расширенную версию пока делать не собираюсь :v2_dizzy_bye:
Вложений: 2
Все тайны AY-музыки Диззи-3
Все тайны AY-музыки Диззи-3
В игре используется все тот же плеер от Дэвида Уиттакера из Диззи-2 с некоторыми модификациями.
Во-первых, полностью вырезаны орнаменты, причем даже из кода. Странное решение, т.к. орнаменты весьма украшают звук, кроме того, используются в качестве аккордов.
Во-вторых в плейер добавлено несколько новых команд:
Код:
DEFB CMD_VolumeOff - . ; $80 - Volume Off (Pause)
DEFB CMD_VolumeOn - . ; $8F - Volume On (Envelope)
DEFB CMD_GotoPattern - . ; $93 - Goto Pattern
Команда CMD_GotoPattern нужна для того, чтобы в игровой мелодии голос A мог повторять паттерны голоса C, но немножко с другим вибрато и транспонированным на 1 тон.
Из-за того, что в игре теперь активно используются звуковые эффекты (они играются на голосе А), голос А не несет полезную музыкальную нагрузку, а лишь украшает то, что играет голос C.
Таким образом, во время самой игры мелодия фактически двухголосная плюс звуковые эффекты.
И третье изменение - это расширение диапазона нот в басовом диапазоне.
Мелодий в игре целых 7 штук. Причем, одна из них не используется вообще (в Диззи-2 было 5 мелодий).
Звуковых эффектов аж 26 штук! Но используется всего 7 эффектов. Из них адекватно слышимых еще меньше (например, шаги Диззи на фоне мелодии не слышны). А адекватно используемых эффектов еще меньше (звук огня дракона хоть и можно услышать, но он тут же заглушается шагами Диззи, если Диззи идет).
Надо сказать, что в Диззи-2 было всего 17 эффектов, из которых не использовался ни один.
В проигрывателе голосовой фразы (как уже ранее упоминал Гудбой) активно используется регистр I, из-за чего на некоторых моделях идет снег, дождь, град, и выпадение компьютера в осадок.
В приложении к посту две программки:
Первая - это оригинал игры с убранной игровой музыкой, чтобы можно было послушать незаглушенные звуковые эффекты.
Во второй программе можно прослушать все мелодии игры и все звуковые эффекты.
1 - выключение музыки
2..8 - мелодия 0..6 (7 мелодий)
9..C (включая Enter) - 26 звуковых эффектов
Мелодии по клавишам:
2 - заставочная мелодия
3 - мелодия начала игры
4 - мелодия смерти
5 - музыка любви Дейзи
6 - мелодия в игре не задействована
7 - мелодия взятия монеты
8 - игровая мелодия
Эффекты по клавишам:
9 - четный шаг Диззи (громкость 10)
0 - нечетный шаг Диззи (громкость 10)
T - печать рамки диалога (громкость 15)
O - огонь дракона (громкость 14)
P - выложить предмет (громкость 12)
Enter - прыжок Диззи (громкость 15)
V - момент касания Диззи смертельного предмета (громкость 15)
p.s.: Если у кого-то есть идеи, где должны были использоваться остальные звуковые эффекты и неиспользуемая мелодия - отписывайтесь в теме.