User Tag List

Страница 17 из 19 ПерваяПервая ... 13141516171819 ПоследняяПоследняя
Показано с 161 по 170 из 183

Тема: Все загадки Dizzy 2 (Treasure Island Dizzy)

  1. #161

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,293
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,457
    Поблагодарили
    947 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Куст вместо сундука?
    да

  2. #162

    Регистрация
    14.11.2011
    Адрес
    Волковыск, Беларусь
    Сообщений
    52
    Спасибо Благодарностей отдано 
    53
    Спасибо Благодарностей получено 
    32
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

Название:	Безымянный.jpg 
Просмотров:	200 
Размер:	20.7 Кб 
ID:	78462

  3. #163

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,392
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    @Verm-V нашел шикарный глюк в игре.

    Он заметил, что если бегать по верхушкам леса, то очки прибавляются не по 1000 за каждую комнату, а повторно и повторно, причем, не совсем понятно когда и как.

    Я стал разбираться в коде, и выяснил, что битовый массив, в котором записывается, какая комната уже была посещена, а какая нет, состоит всего из 16 байт, по одному биту на комнату, и охватывает всего 128 комнат.
    Тогда как индексы комнат в игре лежат во всем диапазоне от 0..255.
    И когда человек посещает комнаты с номером >128, алгоритм вычисления бита в массиве превращается в тыкву. Мало того, что неправильно определяется, посещена комната или нет, так еще и команды BIT n,(HL), и SET n,(HL), которые являются самомодифицирующимися, из-за переполнения превращаются вообще в другие комнады)

    - - - Добавлено - - -

    Но это еще не все беды со счетом)

    1. При посещении каждого экрана счет увеличивается на 1000. Однако, чтобы на заставочном экране такого не происходило, при очистке счета специально помечаются биты, что заставочный экран уже посещен. Но биты помечаются, а процедура вызывается уже после того, как заставочный экран показан) Своевременно)
    2. Ошибка в функции начисления счета приводит к тому, что не работает перенос из 5 в 6 разряд, если перенос был каскадным.


    Ну и наконец, обратил внимание, что в качестве габаритов Диззи (для сравнения коллизий спрайтов) используется спрайт листвы деревьев 3x3 знакоместа. А что, похоже. Да и в Диззи-1 примерно так же делали)

    Эти 5 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Bedazzle(07.02.2023), Black Cat / Era CG(07.02.2023), Digitizer(08.02.2023), Oleg N. Cher(07.02.2023), Reobne(07.02.2023)

  4. #164

    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,605
    Спасибо Благодарностей отдано 
    254
    Спасибо Благодарностей получено 
    269
    Поблагодарили
    188 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #165

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,081
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я вот заметил, что если у края экрана нажать огонь для выкладывания предмета и в этот момент перейти на другой экран, то предмет появится в нужном месте, но на предыдущем экране... и вообще может застрять в текстурах.

    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    так еще и команды BIT n,(HL), и SET n,(HL), которые являются самомодифицирующимися, из-за переполнения превращаются вообще в другие комнады)
    У братьев не было такого ресурса тестеров Одна попытка для релиза, потом только кассеты изымать, а это убытки колоссальные)

    Эти 2 пользователя(ей) поблагодарили drbars за это полезное сообщение:

    Oleg N. Cher(09.02.2023), Reobne(09.02.2023)

  6. #166

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,392
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Я вот заметил, что если у края экрана нажать огонь для выкладывания предмета и в этот момент перейти на другой экран, то предмет появится в нужном месте, но на предыдущем экране... и вообще может застрять в текстурах
    Классный глюк)
    До такого я даже не догадался, попробовать так сделать)

    Это происходит потому, что движок самого диззи висит на прерываниях и работает асинхронно. Человек нажимает 'выстрел', и от движка поступает основной программе сигнал, что нажат выстрел, надо выложить предмет. Однако, если Диззи успел выйти за пределы экрана, то его координаты будут уже в начале другого экрана, вот предмет и выкладывается в тех координатах, куда Диззи вышел.

    Эти 2 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Oleg N. Cher(09.02.2023), Reobne(09.02.2023)

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

  8. #167

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,392
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию Тайны биперной музыки Дэвида Уиттекера

    Обзор музыкального плеера под биппер Дэвида Уиттакера.

    Плеер достаточно массивный, имеет много кода и возможностей. Тогда как сами мелодии достаточно компактны, и занимают мало места.

    По словам Гудбоя, Дэвид достаточно хороший кодер, и свои плееры писал сам, a музыку писал безо всякого редактора прямо ассемблере.

    На счет хорошего кодера - да, код достаточно оптимален, изощерен, пестрит самомодификациями и интересными решениями. Вместе с этим, немало ляпов и глюков влияющих на качество музыки.
    Также весьма похоже, что мелодии написаны именно в коде, а не в редакторе. Хотя, тут могут быть варианты.

    Плеер трехголосый, с каналами A, B и C.
    Каналы A и B играют в основном цикле, формируя звук посредством упрощенного ШИМ.
    Канал C предназначен для спецэффектов (барабаны), и играется из обработчика прерываний.
    Каналы A и B отличаются тем, что громкость звука (зависящая от скважности ШИМ) для канала A в два раза меньше, чем для канала B.
    По всей видимости, это сделано для того, чтобы басовые ноты, которые во всех мелодиях играются на канале A не забивали мелодию, играющуюся на канале B.
    В таблице плеера 60 нот (5 октав по 12 нот), причем чем ниже нота (басовее), тем громче она звучит. Это связано с тем, что активная фаза ШИМ вычисляется как небольшой процент от длительности периода ноты. Следовательно, чем больше период (ниже нота), тем длиннее активная фаза ШИМ, а следовательно и громкость.
    Каждая нота начинает звучать на максимальной громкости, после чего громкость спадает со скоростью, установленной специальной командой (о командах ниже).

    В основном цикле плеера постоянно крутится проигрывание нот для каналов A и B.
    50 раз в секунду отрабатывает прерывание, в обработчики которого во-первых, уменьшается длительность ноты для каждого из трех каналов (счетчики расположены в регистрах B,C,C'), после чего отрабаытвается звуковой эффект (какой-либо барабан, если есть), после этого вызывается дополнительный обработчик пользователя (например, опрос выбора клавиш для заставочного экрана), после чего обработчик прерывания устанавливает флаг C в регистре флагов (!) и возвращается в основной цикл.
    Основной цикл периодически проверяет, установлен ли флаг C, и если да, то проверяется окончание длительности нот для каналов A и B, а также вызывается обработчик пересчета громкости для плавного затухания нот в каналах.
    Во всей этой хитроумной структуре есть несколько недочетов, главный из которых состоит в том, что обработчик прерываний может вызваться в любой момент, и сам при этом достаточно тяжеловесный, даже если не играются барабаны. В результате, если он вызван, когда ШИМ находится в активной фазе, то эта фаза растягивается на ~2000 тактов, что для слушателя проявляется в хаотичных щелчках в музыке наподобие звука с царапанных грампластинок (эффект называется Click).
    Кроме того, автор плеера не учел, что некоторые команды основного цикла сбрасывают флаг C, при этом пропуская квант времени, о котором сигнализировал обработчик прерываний. Это может давать хаотичную неравномерность мелодии.

    Интересно, что эмулятор EmuZWin с настройками по умолчанию, когда установлена оптимизация 'Fast loop emulation', плохо относится к задержкам плеера, и даже может потерять флаг C. Из-за чего если включить модель Pentagon 128, музыка подтормаживает. Но это чисто глюки эмулятора, поэтому идем далее.

    Теперь о возможностях проигрывателя.

    У каждого канала (A, B, C) свой трек проигрывания, не зависимый от других.
    Для всей мелодии устанавливается скорость, где такт музыки - n * 20ms.
    Трек состоит из списка паттернов, а в каждом паттерне может быть произвольное количество нот и команд.
    Нота - это код от 0..59 (60 нот),
    Команда начинается с кода $80. Для каналов A, B имеется 6 команд, для канала C - 8 команд.
    Следует заметить, что ноты самой верхней октавы плохо перевариваются проигрывателем, и практически непригодны к использованию.

    Команды для каналов A и B:

    Код:
    $80 - конец паттерна (перейти на следующий паттерн)
    $81 - выключить ноту (звук) в канале
    $82, nn - скорость затухания ноты 1..255 (1 - самое быстрое затухание, используется чаще всего)
    $83, nn - длительность ноты (шага) в тактах
    $84, nn - транспонирования мелодии. Повышение или понижение последующих нот на заданное число полутонов.
    $85 - конец мелодии, выход из плеера (для незацикленных мелодий)
    Команды для канала C:

    Код:
    $80 - конец паттерна (перейти на следующий паттерн)
    $81 - нет команды (отсутствие звука)
    $82 - низкий барабан (не используется ни в Dizzy 1, ни в Dizzy 2)  
    $83, nn - длительность шага в тактах
    $84 - короткий барабан (не используется ни в Dizzy 1, ни в Dizzy 2)
    $85 - нет команды (не используется)
    $86 - шум из ПЗУ с адреса $005C до первого байта $00 (область токенов Бейсика) (используется в Диззи 1, в Dizzy 2 не используется)
    $87, nn - 30 периодов ударника определенного тона (не используется) (используется в Диззи 1, в Dizzy 2 не используется) (хорошо звучит только $87,$1E)
    В звуковых эффектах тоже имеются свои глюки.
    Например, барабаны $82 и $84 используют в виде паттерна шума код части плейера. Мало того, что энтропия кода далека от случайной, так еще и счетчик указателя используется однобайтный (L вместо HL), поэтому звучать барабаны будут по разному, в зависимости от расположения кода плейера после компиляции.
    Кроме того, если звук основной мелодии играется одновременно и в порт бипера, и в порт магнитофона, то звук этих барабанов будет разные для бипера и магнитофона, что, впрочем, может добавить разнообразия в спектр барабана, если порт бипера и магнитофона на конкретном клоне имеют разную громкость.

    Барабан с кодом $86 в виде своего паттерна случайных чисел использует часть содержимого ПЗУ Бейсика. Поэтому, если эта область у вас нестандартная, не только звук может звучать иначе, но также барабан может изменить свою длительность, т.к. в виде стоп-байта используется первое встретившееся в ПЗУ значение $00.

    Учитывая то, что ни одна из 5 мелодий для Диззи-2 не использует канал C (ударники), можно обрезать часть плеера, высвободив некоторое количество байт, если понадобится.

    На этом обзор плеера закончен)

    Эти 11 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Bedazzle(23.02.2023), CityAceE(21.02.2023), creator(21.02.2023), Djim(23.02.2023), goodboy(21.02.2023), Lethargeek(21.02.2023), Oleg N. Cher(21.02.2023), Reobne(21.02.2023), SoftLight(21.02.2023), Xela(21.02.2023), ^m00h^(21.02.2023)

  9. #168

    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,605
    Спасибо Благодарностей отдано 
    254
    Спасибо Благодарностей получено 
    269
    Поблагодарили
    188 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Вместе с этим, немало ляпов и глюков влияющих на качество музыки.
    О, Великий Титус, исправь же глюки, чтобы качество музыки увеличилось в разы!
    ___________

    Этот пользователь поблагодарил ZX_NOVOSIB за это полезное сообщение:

    Oleg N. Cher(22.02.2023)

  10. #169

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,966
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    314
    Поблагодарили
    237 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Spectramine Посмотреть сообщение
    У +2А/+3 нет задержек на каждый такт, обозначенных в таблице задержек "x N" : https://worldofspectrum.org/faq/refe...htm#Contention .
    Хотя шаблон задержек у них более тормозной, но зато срабатывает он реже.
    но почти все так обозначенные команды довольно редкие и сами по себе тормозные и невыгодные, кроме разве ldi и djnz (и то цепочка ldi на 48 будет самовыравниваться)
    Прихожу без разрешения, сею смерть и разрушение...

  11. #170

    Регистрация
    07.10.2006
    Сообщений
    1,730
    Спасибо Благодарностей отдано 
    257
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    167 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    но почти все так обозначенные команды довольно редкие и сами по себе тормозные и невыгодные, кроме разве ldi и djnz (и то цепочка ldi на 48 будет самовыравниваться)
    Индексная адресация, относительные переходы, блочные команды, обращения к портам на 48/128 тормознее. А вообще зависит от набора команд теста, и их наложения на паттерн тормозов.
    Тест TactMeter почему-то выдает одинаковые тормоза для всех фирменных 128х, причем меньшие, чем на 48, хотя казалось бы.

Страница 17 из 19 ПерваяПервая ... 13141516171819 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Все загадки Dizzy 1
    от Titus в разделе Игры
    Ответов: 137
    Последнее: 16.09.2024, 11:51
  2. Dizzy-AGE RUS: Treasure Island Dizzy на русском
    от Rindex в разделе Dizzy-AGE
    Ответов: 11
    Последнее: 03.03.2017, 08:20
  3. Ответов: 40
    Последнее: 16.11.2015, 01:23
  4. Dizzy-AGE: Another Treasure Island Dizzy
    от Rindex в разделе Dizzy-AGE
    Ответов: 94
    Последнее: 27.08.2012, 23:15
  5. Treasure Island Dizzy
    от dizzykei в разделе Игры
    Ответов: 16
    Последнее: 10.04.2011, 09:17

Ваши права

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