Просмотр полной версии : Все загадки Dizzy 2 (Treasure Island Dizzy)
Начнем обзор тайн, загадок и глюков 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'.
Число жизней:
Изначально авторами планировалось несколько жизней. Но в итоге возникли сложности с восстановлением в разных местах, где можно запороться, и братья оставили одну жизнь.
Однако в начальном эскизе шапки игры, эти жизни присутствуют (черновик авторов):
https://pic.maxiol.com/images2/1673267819.39615814.header.jpg
Технические особенности:
Вся игра работает на прерываниях IM0, что не совсем айс. И только во время биперной музыки переключается на IM2. Впрочем, так же было и у Dizzy-1.
Для вывода текстов братья придумали макроязык (выбор координаты, цвета, шрифта, рекурсивный вывод текста и т.д.), половина команд которого попросту не используется.
На месте буфера спрайта Диззи остался вот такой текст:
at the
end of file 7, but it will stop earlier
if you inlcude an end statement. This can
be used t
По сравнению с Dizzy-1, у Dizzy-2 появились дополнительные возможности вывода спрайтов - со смещением на 4 пикселя по горизонтали (пипец какой тормозной), и возможность отражать спрайт по горизонтали.
Причем, вывод самого Диззи со смещением написан быстро, а вывод всех остальных спрайтов медленно.
Каждый кадр делается задержка на 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.: По мере нахождения чего-то нового, буду добавлять в первый пост.
в доп.блоке для 128к находится несколько семплов, но для воспроизведения выбирается один (по значению переменной Frames).
одна из фраз выбирается очень редко и подозреваю что многие её не слышали вовсе.
в доп.блоке для 128к находится несколько семплов, но для воспроизведения выбирается один (по значению переменной Frames).
одна из фраз выбирается очень редко и подозреваю что многие её не слышали вовсе.
Да, я про это тоже написал в первом посте)
ZX_NOVOSIB
09.01.2023, 15:34
Да, я про это тоже написал в первом посте)
Надо это пофиксить! И поведение диззи под водой! Чтобы под водой без акваланга он вёл себя как в 5-ой части
Enigmatic
09.01.2023, 18:17
Чтобы под водой без акваланга он вёл себя как в 5-ой части
Это уже будет не Диззи-2
это будет Dizzy 2 Extended Edition!
Добавил много новых пунктов в первый пост.
Думаю, что это практически все загадки. Разве что по мелочам еще что-то найдется.
ZX_NOVOSIB
10.01.2023, 14:23
Titus, когда ждать исправленную и расширеную версию? :)
Titus, когда ждать исправленную и расширеную версию? :)
Ну, если ты засучишь рукава, исправишь и расширишь)
Про журнал 'Sinclair Abuser' улыбнуло) Тонкий стёб за утопление журнала давать 1000 очков)
- - - Добавлено - - -
Это уже будет не Диззи-2
Ну почему же? На амиге Диззи умеет именно плавать, при этом из под воды торчит мачта корабля, на которой есть действие.
Возможно братьям технически решить было сложно или времени не хватало.
Enigmatic
12.01.2023, 18:49
На амиге Диззи умеет именно плавать
Ну тогда уже добавлять и облака на правом острове)
Возможно братьям технически решить было сложно или времени не хватало.
Плавание они точно не задумывали.
Зато по расположению активных обьектов в таблице можно проследить, как развивалась игра, что было написано сперва, а что после)
- - - Добавлено - - -
Ну тогда уже добавлять и облака на правом острове)
А они зачем?
- - - Добавлено - - -
Я помню, что когда в подростковом возрасте впервые играл в Диззи-2, мне приятель 'врал', что медузу можно убить. Я его спрашвиаю - чем? Он говорит, что может быть зубной пастой, что он не помнит точно. И что он лично видел, как медуза плавала кверху брюхом. Ага-ага. Понять, что это не так, можно только реверсинженернув игру)
И что он лично видел, как медуза плавала кверху брюхом. Ага-ага.
зато теперь ты можешь сделать, что б она на самом деле плавала кверху брюхом, а он - нет))
Он говорит, что может быть зубной пастой
Вполне логично - медуза плавает вверх-вниз и подложив ей пасту хорошо чтоб убивалась.
Тоже пробовали...
Вполне логично - медуза плавает вверх-вниз и подложив ей пасту хорошо чтоб убивалась.
Тоже пробовали...
А смысл? Медузы не мешают проходить игру особо.
А смысл? Медузы не мешают проходить игру особо.
Ну просто как элемент приключения.
Типа того-же ведра - оно ведь тоже для прохождения как такового не требуется...
Вообще прикольно было-бы если бы не убивалась пастой, а съев начала пузыри выделять и всплыла в верхнюю часть экрана зависла там булькая - типа отравилась слегка :)
Ну тогда уже добавлять и облака на правом острове)
Не только это. Лабиринт с ловушками ещё, в версии на спек там просто факел, который убивает.
ZX_NOVOSIB
15.01.2023, 10:25
Не только это. Лабиринт с ловушками ещё, в версии на спек там просто факел, который убивает.
уговори Титуса сделать расширеную версию
Не только это. Лабиринт с ловушками ещё, в версии на спек там просто факел, который убивает.
Версия на Амиге и прочие - это уже какая-то произвольная отсебятина, на мой взгляд. Ну что такое остров на облаках? Ну с чего?
Версия на Амиге и прочие - это уже какая-то произвольная отсебятина, на мой взгляд. Ну что такое остров на облаках? Ну с чего?
Вероятно это рояль в кустах на корабле :v2_dizzy_roll: Как оно может быть отсебятиной, если игра официальная? С тем же успехом волшебная стена из воды может показаться странной.
А яйцо в боксёрских перчатках вообще бред.
Версия на Амиге и прочие - это уже какая-то произвольная отсебятина, на мой взгляд. Ну что такое остров на облаках? Ну с чего?
вспомни верхушку вулкана в Dizzy4, там ещё какая-то гарпия сидит и всё это непонятно зачем.
Black Cat / Era CG
16.01.2023, 23:55
непонятно зачемУ нее там гнездо.
вспомни верхушку вулкана в Dizzy4, там ещё какая-то гарпия сидит и всё это непонятно зачем.
Я думаю, что гарпия была нужна по сюжету, но на нее не хватило или памяти, или времени, поэтому она там просто безпонтово болтается.
- - - Добавлено - - -
Вероятно это рояль в кустах на корабле :v2_dizzy_roll: Как оно может быть отсебятиной, если игра официальная? С тем же успехом волшебная стена из воды может показаться странной.
Все же спектрумовская версия - это оригинал, а амижные и прочие - это уже производные.
Со стеной из воды все понятно, геомагнитноводная аномалия.
- - - Добавлено - - -
Кстати, макроязык, который братья написали для Диззи-2, содержит различные операторы, которые позволяют делать циклы, причем вложенные, вызовы подтекстов (типа подпрограмм) и т.д. Хотя что-то из этого вовсе не используется.
Циклами, например, сделаны всякие рамки раздвигающихся скроллов. Или же если надо очистить три строки инвентаря, задается цикл на 3 строки, в нем вложенный цикл на сколько-то там символов в строке, и печатается внутри этих циклов пробел. И все это на макроязыке текстового процессора, не на асме.
Пример:
TXT_Title: ; Стереть три строки интвентаря
DEFB CMD_WIDE,0 ; Текст широкий
DEFB CMD_ATTR,$47 ; Цвет белый
DEFB CMD_XY,12,16 ; XY
DEFB CMD_FOR,3 ; Цикл на 3 строки
DEFB CMD_FOR,20 ; Цикл на 20 символов в строке
DEFB " " ; Печатать пробел
DEFB CMD_NEXT ; Цикл
DEFB CMD_ADDX,216 ; X = X - 40
DEFB CMD_ADDY,8 ; Y = Y + 8
DEFB CMD_NEXT ; Цикл
; Название игры в инветаре
DEFB CMD_XY,11,19 ; XY
DEFB "TREASURE ISLAND DIZZY"
DEFB CMD_XY,11,29 ; XY
DEFB " CODE MASTERS "
Еще из интересного.
На сколько все помнят, в Диззи-1 предметы являются тоже активными обьектами. Т.е. если предмет кинуть в какой-то активный обьект, то соприкоснувшись, он сработает. Т.е. предметы живут своей жизнью. В отличие от Dizzy-3 и последующих частей, в которых действие предмета проверяется только в момент выкладывания.
Что самое интересное, в Диззи-2 такой же принцип, как и в Диззи-1. Предметы тоже живут сами по себе, и действуют не только в момент выкладки, а всегда. Но в отличие от Диззи-1, на них не действует сила притяжения, и они не падают вниз, поэтому нельзя бросить предмет на какой-то обьект, заставив его сработать при соприкосновении. Да и обьектов, которые перемещаясь сами наткнутся на оставленный предмет тоже в игре нет.
Говоря иными словами, если бы какая-нибудь рыбка убивалась об условную зубную пасту, то можно было бы выложить зубную пасту, и просто ждать, пока рыбка подплывет и коснется пасты.
Кроме того, система устроена так, что один активированный обьект, на который что-то подействовало, может запустить цепную реакцию активации других обьектов в неограниченном количестве, т.к. один предмет может активировать сразу три обьекта. Каждый из трех еще три, и т.д.
В игре есть неиспользуемый предмет.
Не знаю даже, что он должен был означать. Возможно, сдутую резиновую лодку? У кого какие мнения, что это такое?
https://pic.maxiol.com/images2/1674057678.630247724..png
Дизи сдавил тюбик, и тут-же бросил получившееся _это_. :)
Похоже на вылезшую зубную пасту?
Enigmatic
20.01.2023, 11:13
Без двух литров не разберёшься. Похоже на какой-то моток каната, может для лодки? А если в 3d проекции, то кусок тазика. Или действительно тюбик раздавленный, только где его применять тогда.
Только братья Оливеры смогут ответить на этот вопрос.
ZX_NOVOSIB
20.01.2023, 11:55
спросите у братков, если они конечно помнят
Только братья Оливеры смогут ответить на этот вопрос.
Мне не ответят.
Не смотря на то, что 2 года назад мы с Филиппом прекрасно общались,
в этот раз, когда я кое-что решил у него уточнить, он спросил, из России ли я. Я сказал да. Он сказал, что так мол и так, что у него в доме живет 5 украинских беженцев, а россияне в этом виноваты.
Так что или пишите ему те, кто из Украины или других стран, или же упс.
p.s.: Не будем переходить в политику, просто констатирую факт.
SoftLight
20.01.2023, 13:59
Да какая тут политика, нет никакой политики, просто в гости, наверное, приехали, на яхте покататься. Молодец мужик. Уважаю.
ZX_NOVOSIB
20.01.2023, 14:39
Он сказал, что так мол и так, что у него в доме живет 5 украинских беженцев
Чо за беженцы? Нет ли RST7 среди них случайно?
- - - Добавлено - - -
пусть Мороз99 спросит
Black Cat / Era CG
20.01.2023, 15:51
Чо за беженцы? Нет ли RST7 среди них случайно?
- - - Добавлено - - -
пусть Мороз99 спросит
Не начинай. ну
Enigmatic
20.01.2023, 16:57
На причальный канат не похоже?
https://i.ibb.co/SQNwV41/Screenshot-14.png (https://ibb.co/7gvtrdT)
Еще один лайфхак:
Как пройти любого убивающего персонажа в игре не погибнув?
Это можно сделать только один раз, и только под водой.
Берем журнал 'Насильник Синклер', идем под воду, и если хочется пройти, например, медузу или краба, выкладываем журнал, и 2-3 секунды, пока набирается счет очков за журнал, все обьекты будут приостановлены, а Диззи продолжит двигаться. Так можно пройти медузу или краба.
- - - Добавлено - - -
На причальный канат не похоже?
Нет, очень толстый)
- - - Добавлено - - -
Еще один условный глюк игры:
Если вы пытаетесь дать нужную торговцу вещь, но перед торговцем уже лежит какая-то вещь, или же вы ее сами выложили, потому что она была у вас в инвентаре перед нужной вещью, то торговец НЕ возьмет нужную вещь.
Например, у вас есть журнал на первом месте, а на втором видеокамера. Нажав огонь, вы выложите журнал перед торговцем. Нажав еще раз огонь, вы возьмете журнал, и выложите видеокамеру, но торговец ее не возьмет.
Я думаю, это было сделано в виде костыля, чтобы не было коллизии с теми вещами, которые торговец сам вам дает в обмен на что-то.
Вообще, код торговца достаточно глючный, о чем писалось в первом посте.
- - - Добавлено - - -
Мало того, нашел еще один мега-глюк с торговцем:
1. Берем по всей игре 8 любых предметов, всякие кустики, заборы и тащим на экран с торговцем. И выкладываем на этом экране.
2. Берем любой нужный предмет торговцу, и идем на экран к торговцу. Если попробовать просто выложить этот предмет (9-й на экране), то он не выложится, т.к. больше 8 предметов на одном экране выкладывать нельзя.
Но если дать предмет торговцу, то будет бинго! Он его возьмет, и даст в ответ лодку. Потом нажмите опять огонь, и он сразу даст следующий предмет. И еще один. И еще один. А потом все зависнет)
Насильник - это как-то совсем жёстко. Обидчик, все же...
Lethargeek
20.01.2023, 21:41
Насильник - это как-то совсем жёстко. Обидчик, все же...
"попользователь" или "овладелец" :D
Enigmatic
20.01.2023, 22:11
Набрался наглости, спросил у братьев что это. Они сами не сильно помня похоже. Но видимо я был прав насчёт каната/веревки
https://i.ibb.co/WKjBjfC/IMG-20230120-220812.jpg (https://ibb.co/ryN5NH9)
Набрался наглости, спросил у братьев что это. Они сами не сильно помня похоже. Но видимо я был прав насчёт каната/веревки
А полный диалог?
Enigmatic
20.01.2023, 22:51
Titus, https://i.ibb.co/cTBGMBR/Screenshot-20230120-224911.jpg (https://ibb.co/5c0Nt0C)
Хм.. нет, на веревку это не похоже точно)
Мне все же кажется, что идея была с резиновой лодкой.
Сперва сдутая, потом нужен насос накачать, и т.д.
Но потом сделали не резиновую.
Не смотря на то, что 2 года назад мы с Филиппом прекрасно общались,
в этот раз, когда я кое-что решил у него уточнить, он спросил, из России ли я. Я сказал да. Он сказал, что так мол и так, что у него в доме живет 5 украинских беженцев, а россияне в этом виноваты.
Он превратился в оголтелого русофоба, и никакие доводы ему не объяснить. Верит всему, что показывают по БиБиСи. Если бы ты пообщался ещё, то Диззи даже запускать бы не захотел больше. Негатив, оскорбления и биполярочка :)
Black Cat / Era CG
21.01.2023, 09:36
Abuser -- это кроме всего прочего читер. То есть чел, который юзает баги или читы для прохождения игры. Хотя я хз, существовало ли это значение во времена создания игры.
Он превратился в оголтелого русофоба, и никакие доводы ему не объяснить. Верит всему, что показывают по БиБиСи. Если бы ты пообщался ещё, то Диззи даже запускать бы не захотел больше. Негатив, оскорбления и биполярочка
Тебе тоже отказал в общении?
Я бы не захотел Диззи запускать? Захотел бы)
Диззи - это любовь моего детства)
- - - Добавлено - - -
Abuser -- это кроме всего прочего читер. То есть чел, который юзает баги или читы для прохождения игры. Хотя я хз, существовало ли это значение во времена создания игры.
Ну и как тогда это перевести правильно, если делать русский перевод игры?
Sinclair Abuser Magazin?
Тебе тоже отказал в общении?
Я бы не захотел Диззи запускать? Захотел бы)
Диззи - это любовь моего детства)
Таковы сегодня реалии. Всё это понятно с Диззи, я CKD доведу до ума думаю. Но Филипп настрой основательно подпортил, вроде не отказывал... Общение стало непростым, проще не общаться.
- - - Добавлено - - -
Ну и как тогда это перевести правильно, если делать русский перевод игры?
Sinclair Abuser Magazin?
Враждебник :)
Но Филипп настрой основательно подпортил, вроде не отказывал... Общение стало непростым, проще не общаться.
Нет, мне прям перестал отвечать, после того, как я подтвердил, что я сейчас в России.
Я, естественно, его больше не тыркаю. Не хочет, значит не хочет, чего спорить.
Ну и как тогда это перевести правильно, если делать русский перевод игры?
Sinclair Abuser Magazin?
Ну вообще "абьюзер" вполне употребительно уже, а вообще просто Журнал 'Sinclair Abuser' - вполне сойдёт, кому надо оценят шютку юмора, а если нет - то не особо-то там и бугагашечка...
просто Журнал 'Sinclair Abuser'
В русской версии нельзя одновременно и латинские и русские буквы использовать.
ZX_NOVOSIB
21.01.2023, 14:28
Titus, Синклер Абьюзер. И всё.
- - - Добавлено - - -
Он превратился в оголтелого русофоба, и никакие доводы ему не объяснить. Верит всему, что показывают по БиБиСи. Если бы ты пообщался ещё, то Диззи даже запускать бы не захотел больше. Негатив, оскорбления и биполярочка
А ты что, пытался ему что-то объяснить?
Он тебя оскорблял или кого?
Black Cat / Era CG
21.01.2023, 16:46
В русской версии нельзя одновременно и латинские и русские буквы использоватьНу Синклер аабьюзер, да. Английское название было б лучше, но так тоже неплохо. Ибо там отсылка явная к Синклер юзеру. Ну и в выше описанном смысле, я всегда воспринимал, что эта отсылка связана с публикацией в журнале читов и POKE адресов, а также гайдов с прохождениями. А если вспомнить, чито с одной из частей появилась платная телефонная линия с консультациями по прохождению, то можно теорию заговора развивать еще дальше :)
В русской версии нельзя одновременно и латинские и русские буквы использовать
Ну тогда да, "Синклер Абьюзер"
Даже может быть что-то вроде "Синклер Аб-Юзер" ("Синклер АбЮзер". "Синклер Абь-Юзер", "Синклер АбьЮзер" и т.д.) чтоб выделить User`а :)
Кстати, есть у нас кто, кто хорошо знает английский, и может несколько предложений проверить на правильность?
(раньше я это доверял носителям языка в виде Филиппа, но сейчас упс)
- - - Добавлено - - -
Синклер Аб-Юзер
Это уже что-то арабское)
Black Cat / Era CG
21.01.2023, 16:57
В 90х на пк перевели бы Страна Игр)))) Это шутка :)
Чтобы легче понять, что за "веревка", надо бы смотреть не в пикселях, а в тв-эмуляции и всяких сканлайнах-эмулях.
Чтобы легче понять, что за "веревка", надо бы смотреть не в пикселях, а в тв-эмуляции и всяких сканлайнах-эмулях.
Вряд ли это даст ясности)
Bedazzle
21.01.2023, 19:22
Ну тогда да, "Синклер Абьюзер"
Или если переврать смысл, то "Синклер Лузер"
- - - Добавлено - - -
кто хорошо знает английский, и может несколько предложений проверить на правильность?
Могу носителя из Англии попросить глянуть.
Мне все же кажется, что идея была с резиновой лодкой.
Сперва сдутая, потом нужен насос накачать, и т.д.
Но потом сделали не резиновую.
Поддерживаю. Похоже, что это свернутая надувная лодка. Порядок предметов тоже намекает на это.
- - - Добавлено - - -
Нет, мне прям перестал отвечать, после того, как я подтвердил, что я сейчас в России.
Я, естественно, его больше не тыркаю. Не хочет, значит не хочет, чего спорить.
Печально всё это, у меня было стойкое ощущение, что я с подростком общался, лет 15-ти. Другие англичане, кто над Диззи работал с нами, и сейчас нормально себя ведут. Ну, а с Филиппом не повезло...
- - - Добавлено - - -
Все же спектрумовская версия - это оригинал, а амижные и прочие - это уже производные.
Со стеной из воды все понятно, геомагнитноводная аномалия.
Мне тоже идея с островом в небе не особо нравится, я бы сделал трюм в затонувшем корабле, а чтобы туда попасть надо например иллюминатор отковырять чем-нибудь. Ну, а сокровища с ловушками а-ля Индиана Джонс норм идея для экстенда :)
Ну, а с Филиппом не повезло..
А с Эндрю ты не общался? Или он вообще отошел от этих ретродел?
Вряд ли это даст ясности)
Раньше работало ) Всяко понятней "что имели в виду". А без подписи и контекста даже лодочный мотор (это же он?) малочитаем. А в пикселях и вне картинки и цветы - "каша". Слышал некую байку, что глаза в Donkey Kong тоже рассчитаны именно на сглаживание апертурной решеткой (скорее как и все игры до появления LCD, собственно).
https://i.postimg.cc/474cHXSp/Clip-10-Copy.jpg (https://postimg.cc/474cHXSp)https://i.postimg.cc/G8Myk6WV/Clip-11-Copy.jpg (https://postimg.cc/G8Myk6WV)https://i.postimg.cc/Fk7JGDmR/Copy-of-rd-Gqm-JJ-Copy.jpg (https://postimg.cc/Fk7JGDmR)
Раньше работало ) Всяко понятней "что имели в виду". А без подписи и контекста даже лодочный мотор (это же он?) малочитаем.
Это как нарисуешь. Лодочный мотор явно лодочный)
Я когда что-то рисую в пиксельарте, отправляю своим разным знакомым, и говорю - что это? Если они говорят похожее на то, что я имел в виду, то признаю рисовку годной и оставляю)
И это безо всяких сглаживаний. А со сглаживаниями будет еще лучше.
Как-то не очень конечно.
https://i.postimg.cc/Hc6CT1KS/Screenshot-1170.png (https://postimg.cc/Hc6CT1KS)
Это как нарисуешь. Лодочный мотор явно лодочный)
Не зная игры малочитаемо, как и журнал, лодка вот намекает )
и говорю - что это?
Раньше было проще всё на CRT и WYSIWYG, а судя по персонажам а-ля Xanthius, врагам "непонятно что это даже когда знаешь" в AMС итп, отрывались по-полной )
Как-то не очень конечно.
Да в общем, скорее всего правильно пришли к выводу, что это сдутая лодка.
А то, что следующую за ней лодку надо бросить в воду, и она становится большой, да и называется 'высушенная лодка', то явно, что сначала по сюжету задумывалась все же резиновая.
да и называется 'высушенная лодка'
Может имеется в виду всё-таки 'сухогрузная лодка' ?
- - - Добавлено - - -
А с Эндрю ты не общался? Или он вообще отошел от этих ретродел?
Не общался, он через Филиппа общался. Насколько я понял главный по административной работе - Филипп, а Эндрю технический директор.
Это уже что-то арабское)
:)
А чего-бы и нет, ведь есть-же анекдот:
"Прикинь, я вчера в центре Лондона англичанина встретил!"
(кто не в курсе - это как-бы про то что в Англии засилье всяких арабов-нигров и прочих мигрантов)
Enigmatic
22.01.2023, 10:29
Помоему там всё проще и переводится как "Синклер маньяк", т.е увлеченный фанат компьютера.
https://i.ibb.co/T1f5zSs/Screenshot-16.png (https://ibb.co/r3jJnSV)
Синклер Переюзер
- - - Добавлено - - -
Синклер овердозер
Помоему там всё проще и переводится как "Синклер маньяк", т.е увлеченный фанат компьютера.
т.е. по сути "спектрумист"
т.е. по сути "спектрумист"
по сути - это просто Sinclair User) тут именно в смысле крайней зависимости.
Bedazzle
22.01.2023, 14:16
Переведите как ZX-ревю, и будет всем счастье. :)
переводится как "Синклер маньяк", т.е увлеченный фанат компьютера.
Получается:
"Sinclair User" - Синклерист
"Sinclair Abuser" - Синклиристище
Журнал "Синклиристище"
А может "Синклерун" или "Синклероман"
ZX_NOVOSIB
22.01.2023, 15:55
Спросите у англичан что имелось в виду, под синклер абьюзер, да не парьте моск
Спросите у англичан что имелось в виду, под синклер абьюзер, да не парьте моск
Кстати да, можно в твиттере опять спросить.
Legend has it that this prank was the Oliver Twins' revenge for Sinclair User giving the first game a bad review. They gave the game 9/10 and the reviewer said nice things - only concluding that Firelord was his choice for "the Ultimate Cartoon Adventure" - Codemasters were given to hyperbole about their own games even in the early days. Maybe Sinclair User were particularly harsh on other Codemasters games in comparison to Crash and Your Sinclair?
Если добавлять несколько жизней в игру, то это надо как-то отображать в шапке.
Однако, там принципиально нет для этого места. Если только надпись COINS не сократить до значка монетки,
тогда под ним можно значок жизни сделать. Подойдет ли так, например?
https://pic.maxiol.com/images2/1674395504.630247703.header.png
- - - Добавлено - - -
Legend has it that this prank was the Oliver Twins' revenge for Sinclair User giving the first game a bad review. They gave the game 9/10 and the reviewer said nice things - only concluding that Firelord was his choice for "the Ultimate Cartoon Adventure" - Codemasters were given to hyperbole about their own games even in the early days. Maybe Sinclair User were particularly harsh on other Codemasters games in comparison to Crash and Your Sinclair?
Это чье предположение и цитата? )
Ещё есть городская легенда, что в одном из выпусков Crash, был центральный вкладыш, пародийный, который назывался Sinclair Abuser.
- - - Добавлено - - -
Это чье предположение и цитата?
видел на нескольких форумах такую версию. конкретно эта цитата с одного из Майнкрафтовских сайтов)) они там в майнкрафте "копию" игры делают/делали.
Ну и обсуждали за предметы из игры.
- - - Добавлено - - -
Подойдет ли так, например?
да, органично смотрится, вполне.
а что думаете при нескольких жизнях и смерти в воде? игра запомнит предыдущее положение на берегу с предметами?
а что думаете при нескольких жизнях и смерти в воде? игра запомнит предыдущее положение на берегу с предметами?
Это я уже решил, как сделать)
- - - Добавлено - - -
да, органично смотрится, вполне.
Немного не рассчитал размер монетки, сделал ее 8 пикселей в высоту, но там она не помещается.
Поэтому перерисовал на 7 пикселей.
https://pic.maxiol.com/images2/1674405215.630247703.header.png
ZX_NOVOSIB
22.01.2023, 19:52
Если только надпись COINS не сократить до значка монетки,
тогда под ним можно значок жизни сделать. Подойдет ли так, например?
Пойдёт
- - - Добавлено - - -
"Лишним" предметам неплохо применение найти ) Отравить медузу зубной пастой, накормить грибами кого-нибудь )) Оконная рама тоже на что-нибудь сгодится
CityAceE
22.01.2023, 20:12
Подойдет ли так, например?
Может количество жизней не цифрой отображать, а рисовать соответствующее количество значков яйца? И двоеточия, на мой личный вкус, смотрится лишними.
Может количество жизней не цифрой отображать, а рисовать соответствующее количество значков яйца? И двоеточия, на мой личный вкус, смотрится лишними.
Прикидывал и такое, но как-то не сочетается с форматом строки с очками. А так определенный стиль и единообразие. Пиктограмма, что обозначает, и число.
Однако в начальном эскизе шапки игры, эти жизни присутствуют (черновик авторов):
А на черновике :v2_dizzy_egg::v2_dizzy_egg::v2_dizzy_egg::v2_dizz y_egg:, а не :v2_dizzy_egg: : 4
А на черновике :v2_dizzy_egg::v2_dizzy_egg::v2_dizzy_egg::v2_dizz y_egg:, а не :v2_dizzy_egg: : 4
Ну так, в принципе, неплохо. Только печатать надо со смещением на пол-знакоместа.
https://pic.maxiol.com/images2/1674405215.630247703.header.png
https://pic.maxiol.com/images2/1674415523.630247703.header2.png
Кто за какой вариант?
циферки гармоничнее смотрятся
циферки гармоничнее смотрятся
Ну вот, мнения разделились)
yashcher
22.01.2023, 22:47
Помоему там всё проще и переводится как "Синклер маньяк", т.е увлеченный фанат компьютера.
https://i.ibb.co/T1f5zSs/Screenshot-16.png (https://ibb.co/r3jJnSV)
Вот такие вот варианты о Sinclair Abuser приходят на ум:
Синклерофил
Синклероман
Синклеронист
Синклероньяк
Синклероголик
Но больше всего нравится Синклерюга
А как же игра слов?)
User - Abuser.
ZX Ревю - ZX Реву
ZX_NOVOSIB
23.01.2023, 02:04
Прикидывал и такое, но как-то не сочетается с форматом строки с очками. А так определенный стиль и единообразие. Пиктограмма, что обозначает, и число.
делай как хочешь. Двоеточие только убери, пусть просто черный пробел вместо него
Набросал большие русские буквы.
Кто хочет, может проголосовать, какие самые удачные, из тех букв, что в нескольких экземплярах.
https://pic.maxiol.com/images2/1674430914.630247703.bigletters.png
- - - Добавлено - - -
Ну так, в принципе, неплохо. Только печатать надо со смещением на пол-знакоместа.
https://pic.maxiol.com/images2/1674405215.630247703.header.png
https://pic.maxiol.com/images2/1674415523.630247703.header2.png
Кто за какой вариант?
Привет. Я за отображение именно яйцами. И смотрится хорошо и хронология соблюдается, в первой и третьей отображение именно яйцами, логично будет и тут так сделать. Теперь очень жду релиза)))
Enigmatic
23.01.2023, 06:13
yashcher,
Zx-ревун
Zx-маньяк
Абзец
Спектрофил
со смещением на пол-знакоместа.
Мне кажется, хорошо.
Кто хочет, может проголосовать
Мне нравятся:
1A, 1Q, 2J или 2I
Остальные все нравятся, пусть выберут другие люди.
Кроме Н, обязательно крестик в середине?
И кроме К, немного смахивает на Х, может ей ножку развернуть?
"Синклерун" или "Синклероман"
Синклерюк, Синклераст, Синклердец :)
Кроме Н, обязательно крестик в середине?
Это не 'Н', это 'Ж' )))
yashcher
23.01.2023, 22:17
Пересмотрел предисторию. Действительно, всё связано с плохим отзывом в журнале Sinclair User (https://worldofspectrum.org/archive/magazines/sinclair-user/84#64), после которой и был добавлен новый предмет в качестве мести (https://руни.рф/index.php/Treasure_Island_Dizzy#cite_note-s_u-47). Так, что abuser в данном контексте действительно "обидчик", а не "увлечённый чем-то". И издевательство над журналом тогда также выглядит логично. Самое близкое слово "обуза" одновременно звучит похоже на abuser и значение для игры подходит: "то от чего нужно непременно избавиться". Обыграть точно и значение и форму красиво не получится. Лучше тогда оставить как было на инглише.
Интересно, на пиктограмме журнала условно изображён тот Captain Bob, который сделал обзор и поставил 60/100?
Это не 'Н', это 'Ж' )))
Ж предлагаю такую.
Ж предлагаю такую.
Не подходит, т.к. ширина 7 пикселей, а не 8. 8-й это зазор между буквами.
- - - Добавлено - - -
Пересмотрел предисторию. Действительно, всё связано с плохим отзывом в журнале Sinclair User, после которой и был добавлен новый предмет в качестве мести.
Журнал-то вышел в 1989 году, а игра в 1988.
игра в 1988
всюду указан 1989ый год выхода.
Там по ссылке все равно обзор на вторую часть. Как по итогам плохого обзора на Dizzy II, в Dizzy II добавили Sinclair Abuser - не понятно))
Там по ссылке все равно обзор на вторую часть. Как по итогам плохого обзора на Dizzy II, в Dizzy II добавили Sinclair Abuser - не понятно))
Тем более, что никогда не проскакивала версия, где вместо этого журнала было бы что-то другое)
Легенда всё-таки о том, что плохой обзор был на первого Диззи, и вот за это во вторую часть добавили Абьюзера. В 16-битных версиях, как я понимаю, этого журнала нет?
ещё была версия игры от Crash (с раскиданными по-другому предметами)
ещё была версия игры от Crash (с раскиданными по-другому предметами)
На сколько я помню, это был урезанный вариант, непроходимый. Специально для рекламных целей.
Карта попросту обрезана, и места прохода заблокированы.
Посмотрел я эту Crash-версию.
Да, чисто урезанная обычная.
В трех местах поставлена большая табличка Crash, чтобы Диззи не мог за нее пройти. И добавлено несколько раскрывающихся дополнительных свитков с рекламой других игр.
Ну и предметы переставлены местами.
Как по итогам плохого обзора на Dizzy II, в Dizzy II добавили Sinclair Abuser - не понятно))
Да на самом деле это больше на прикол похоже, чем на наезд.
Игру слов точно нужно пытаться сохранить, в этом весь прикол, а не в точном смысле перевода abuser. "Синклер Юзверь" можно.
Или, для российских реалий, "ZX-Кривью" :)
Мнения о том, отображать жизни цифрами или яйцами все-таки разделились пополам)
Да на самом деле это больше на прикол похоже, чем на наезд.
Так, а 1000 очков за то, что ты этот журнал утопишь?) Юмор огонь! :)
- - - Добавлено - - -
Мнения о том, отображать жизни цифрами или яйцами все-таки разделились пополам)
Яйцами в Диззи жизни всегда.
Так, а 1000 очков за то, что ты этот журнал утопишь?) Юмор огонь!
Я поискал первоисточники, в SU обзор действительно на 9/10, но итог там в духе "супер игра, срочно бегите покупайте". Всё-таки это мало похоже на плохую рецензию.
А вот в Crash у первого Диззи лишь 78/100. По логике это их надо было хейтить.
А вот в Crash у первого Диззи лишь 78/100. По логике это их надо было хейтить.
Не проще ли опять спросить у братьев)
Только кто-нибудь из не России, а то не ответят.
Не проще ли опять спросить у братьев)
Только кто-нибудь из не России, а то не ответят.
Написал в наш чат, попробую помочь всё узнать.
пришли к выводу, что это сдутая лодка.
Похоже на то - и рядом и верёвку явно бы уж понятней нарисовали.
Нашелся еще один, на первый взгляд не так заметный глюк игры.
AY-музыка, которая играет на прерываниях в 128Кб версии, вызывается не до обработки персонажа Диззи, а после.
Таким образом, каждый второй фрейм, музыка играет в своем временном слоту, т.е. в начале кадра.
Каждый четвертый фрейм (когда обрабатывается Диззи) она играет с задержкой примерно на пол-кадра,
И каждый четвертый фрейм (когда идут пузырики под водой) она играет с задержкой чуть ли не на кадр, т.е. внизу кадра.
Таким образом, времянка выборки нот AY-музыки сильно плавает. Особенно под водой.
Под водой, надо ещё играть приглушённее, и чтоб тона немного плавали. :)
В общем, столько разных глюков по мелочам и не только, что даже описывать все лень)
И то, что жуткий фликеринг обьектов, который практически невозможно настроить, если только вообще всю игру не переделать. А такой цели нет.
Происходит он из-за того, что функции печати и стирания обьектов во первых достаточно медленные, кроме того, между стиранием предыдущего положения и рисованием нового выполняется немало логики.
Кроме того, многие обьекты (медузы) ходят по экрану вверх-вниз на большие расстояния, что увеличивает шанс попасть под луч.
Кроме того, нет толковой синхронизации, и постоянно идет биение таймингов между отрисовкой Диззи, пузыриками и активными обьектами.
Также момент печати зависит от того, сколько предметов выложено на этом экране.
Сами братья вставили задержку в начале кадра на 15000 тактов, видимо, подгоняя под ту машинку, на какой тестили. Но у всем машин тайминги разные, даже у классических.
В общем, частично это я причесал и синхронизировал, но чтобы там прям избавиться от фликеринга вообще, да на всех машинах - это нет, слишком много возни, да и не нужно.
Еще по мелочам - когда раскрывающийся свиток стирается, его атрибуты не стираются. И если Диззи будет прыгать через те места, где был раскрыт свиток, он будет окрашиваться в белый цвет без яркости.
- - - Добавлено - - -
Под водой, надо ещё играть приглушённее, и чтоб тона немного плавали. :)
Это не Амига, где есть аппаратный НЧ фильтр)
ZX_NOVOSIB
27.01.2023, 13:54
времянка выборки нот AY-музыки сильно плавает. Особенно под водой.
Под водой и должно всё плавать, вода же
Заметил, что на 2A оцифровка в страницах тормозит при воспроизведении.
Напомните, какие странички тормознутые, а какие быстрые на 128, 2, 2A?
Или это просто глюк эмулятора?
Напомните, какие странички тормознутые, а какие быстрые на 128, 2, 2A?
Тормозные 1, 3, 5, 7 на 128/+2 и 4, 5, 6, 7 на +2А/+3
Тормозные 1, 3, 5, 7 на 128/+2 и 4, 5, 6, 7 на +2А/+3
Да, оцифровка находится в 6-й странице.
Из-за чего такой сумбур распределении тормозных страниц в разных версиях?
- - - Добавлено - - -
Да, и как определить, какая модель, 128/2 или 2А?
Ведь у них нет пересекающихся быстрых дополнительных страниц, значит надо определять модель, чтобы загрузить в ту страницу, которая быстрая для данной модели.
Bedazzle
27.01.2023, 18:26
Да, и как определить, какая модель, 128/2 или 2А?
А если определять не модель, а именно быстрые/тормозные страницы?
А если определять не модель, а именно быстрые/тормозные страницы?
Да может это и не нужно, много ли этих 2A.
ZX_NOVOSIB
27.01.2023, 20:11
Ведь у них нет пересекающихся быстрых дополнительных страниц
2 страница всегда быстрая :)
- - - Добавлено - - -
Да, и как определить, какая модель, 128/2 или 2А?
можно спросить у юзера )) Или пзу спросить
Bedazzle
27.01.2023, 20:30
Да может это и не нужно, много ли этих 2A.
А к примеру, на Нексте которые страницы медленные?
Или какие-то другие клоны могут всплыть.
2 страница всегда быстрая
2-я страница находится в общей памяти.
Ты прикалываешься?
- - - Добавлено - - -
А к примеру, на Нексте которые страницы медленные?
Или какие-то другие клоны могут всплыть.
Подстраиваться под особенности всех клонов нет смысла.
Есть смысл исправить классические или вездепроявляющиеся глюки.
ZX_NOVOSIB
27.01.2023, 20:40
Да, и как определить, какая модель, 128/2 или 2А?
Спрсил в телеге у супер-кодеров, вот что ответили:
- По 1ffd
Например, включить all ram режим)
- тупо, у 128к/+2 есть порт #FF, а вот у +2а/+3 его нет
(этот вариант вроде лучший, ибо первый вариант может не по нраву прийтись скорпиону и каю)
Спрсил в телеге у супер-кодеров, вот что ответили:
- По 1ffd
Например, включить all ram режим)
- тупо, у 128к/+2 есть порт #FF, а вот у +2а/+3 его нет
(этот вариант вроде лучший, ибо первый вариант может не по нраву прийтись скорпиону и каю)
Тут нужна инструкция поточнее, с сылкой на пруфы.
ZX_NOVOSIB
27.01.2023, 21:57
Тут нужна инструкция поточнее, с сылкой на пруфы
Какие пруфы тебе нужны?? Читай из порта FF и по итогу определишь модель
Потратить 6 кадров при загрузке, посчитав, как далеко уйдёт цикл работы с памятью соответствующей страницы... за кадр.
Много _насчитает_ - быстрая страница.
По результатом - пропатчить.
- - - Добавлено - - -
Происходит он из-за того, что функции печати и стирания обьектов во первых достаточно медленные, кроме того, между стиранием предыдущего положения и рисованием нового выполняется немало логики.
Можно попробовать при стирании, фактического стирания не проводить, а только при рисовании, когда отработает вся логика, быстро стереть и сразу нарисовать. Шансов, что легко получится не много, но подумать об этом можно.
А ещё с музыкой. Можно переделать так, в начале прерывания заполнить регистры AY из памяти, затем порисовать спрайтов, а затем, в любой момент кадра, подготовить в памяти, что писать в AY, при следующем прерывании. Музыка должна играться чётко.
Можно попробовать при стирании, фактического стирания не проводить, а только при рисовании, когда отработает вся логика, быстро стереть и сразу нарисовать. Шансов, что легко получится не много, но подумать об этом можно.
Слишком разветвленная там схема печати активных обьектов. Придется много переписать. Особого смысла не вижу, т.к. в основном на всех экранах все работает приемлемо.
- - - Добавлено - - -
А ещё с музыкой. Можно переделать так, в начале прерывания заполнить регистры AY из памяти, затем порисовать спрайтов, а затем, в любой момент кадра, подготовить в памяти, что писать в AY, при следующем прерывании. Музыка должна играться чётко.
Да, можно сделать так.
Это если не получится убыстрить движок Диззи, чтобы он все же уместился до начала экрана.
Там очень тормознутая функция сканирования твердой поверхности под Диззи. Можно ее переписать и посмотреть.
Да, и как определить, какая модель, 128/2 или 2А?
(#3AB1)=#53 ; ZX+2A / +3
Еще некоторые заметки:
Подводный камешек, из которого идут пузыри, на самом деле должен быть зеленым, а не голубым. А голубой он из-за неправильного наложения желтого цвета песка на дне и собственно цвета камушка. В итоге низ камешка голубой, а над камушком фон окрашен зеленым, когда проходит Диззи.
Раскрывающиеся свитки не умеют иметь ширину кратную размеру узкой буквы. Только кратно размеру знакоместа. Из-за этого у половины свитков правый край бумажного полотна сдвинут влево на пол-знакоместа.
Также в игре есть несколько мест где можно подвиснуть, застряв между экранами. Да и вообще можно выпрыгнуть за пределы игрового пространства, запоров игру.
Это все я, естественно, переделал.
- - - Добавлено - - -
А ещё с музыкой. Можно переделать так, в начале прерывания заполнить регистры AY из памяти, затем порисовать спрайтов, а затем, в любой момент кадра, подготовить в памяти, что писать в AY, при следующем прерывании. Музыка должна играться чётко.
Ну вот, ларчик просто открывался.
Заменил оригинальную функцию проверки твердости материалов (она в минимуме, при стоячем Диззи занимала 4933 тактов), на быструю, которую я написал еще для Диззи-1. Она в тех же условиях кушает 2699 тактов. И в итоге мерцающие лапки на верхних ступеньках пропали. Проверял на 128/2/2A.
Теперь надо исправить еще кое-что, и еще торговца, у которого половина вещей на фоне него портятся, если выйти и войти на экран, потому что находятся в таблице обьектов после него, т.е. отрисовываются до него, и он потом их затирает.
Да, и как определить, какая модель, 128/2 или 2А?
Ведь у них нет пересекающихся быстрых дополнительных страниц, значит надо определять модель, чтобы загрузить в ту страницу, которая быстрая для данной модели.
Простой тест замеряющий количество циклов ldir за прерывание.
Вот я недавно такой делал. Ссылка (https://zx-pk.ru/threads/25139-contended-memory-i-prochie-tormoza-spektrumov.html?p=1155302&viewfull=1#post1155302).
Филипп в чате прочитал, но молчит. Видимо всё с ним.
ZX_NOVOSIB
28.01.2023, 06:44
Видимо всё с ним.
Помянем...
Филипп в чате прочитал, но молчит. Видимо всё с ним.
Не будем ставить крест на нем)
Можно попробовать при стирании, фактического стирания не проводить, а только при рисовании, когда отработает вся логика, быстро стереть и сразу нарисовать. Шансов, что легко получится не много, но подумать об этом можно.
Шаги по направлению к синхронизации обьектов:
1. Перенес все энергоемкие активные обьекты в начало списка обьектов. Таким образом, во-первых они начинают обрабатываться несколько быстрее, во-вторых все предметы теперь обрабатываются позже, и стало быть несинхронность вывода активных обьектов практически не зависит от числа выложенных или поднятых на том или ином экране предметов.
В-третьих - группировка всех энергоемких обьектов в одном месте дает возможность быстро их перетасовывать, чтобы добиться максимального отсутствия мерцания.
2. Ну заодно убрал торговца в самый конец списка обьектов, таким образом, он больше не портит предметы выложенные на фоне него.
Кто-нибудь ведет счет глюкам, связанным с торговцем? Я - нет)
- - - Добавлено - - -
Посмотрел еще раз - логика на самом деле занимает достаточно мало времени.
Так что все тормоза из-за медленного вывода/стирания спрайтов.
Например, в классическом экране с океаном обновляется 8 спрайтов с водой. И Это занимает уже почти целый кадр. А если еще плавает рыбка, обновление которой занимает треть кадра, т.к. печать со сдвигом, да с зеркальным поворотом. И все это универсально и медленно.
Не будем ставить крест на нем)
Не будем, но надеяться что ситуация улучшится не стоит.
--
Все эти обсуждения оптимизаций напомнили мне, как в начале работ на WD Филипп дал мне исходники 1ой части Диззи :) При этом на тот момент был уже CKD сделан. Я так и не понял зачем :D
Все эти обсуждения оптимизаций напомнили мне, как в начале работ на WD Филипп дал мне исходники 1ой части Диззи При этом на тот момент был уже CKD сделан. Я так и не понял зачем
Мне он тоже давал исходник первой части, когда я всю первую часть дизассемблировал, подписал и улучшил)
Хорошо, что дал, для истории и вообще)
- - - Добавлено - - -
Не будем, но надеяться что ситуация улучшится не стоит.
Как бы никакой помощи от Филиппа уже не требуется.
Мне надо было только разрешение на переделку, и может какие-то советы.
А так на тему Диззи-2 мы с ним еще 2 года назад общались, и он все разрешил.
Хоть и не хотелось, но пришлось переписать функции печати спрайтов.
Зеркальная печать убыстрилась раза в два.
Печать со сдвигом на пол-байта (и зеркальная в том числе) убыстрилась раза в 3 минимум.
Само по себе это игру мало где убыстряет (разве чуть сокращает время отрисовки экрана, и экраны перенасыщенные движущимися персоажами).
Однако, возможность синхронизировать активные обьекты с лучом значительно расширилась, и можно это пробовать делать.
Как и предполагалось, благодаря быстрой печати удалось все или почти все синхронизировать для SP128 и Пентагона.
Так что можно двигаться к причесыванию.
Видимо, конца и края этим глюкам не будет)
Выявились, в том числе благодаря тестеровщикам, редкие глюки, а именно:
1. На экране перегруженном активными обьектами, можно случайно выложить один предмет на другой.
2. Очень редко, какая-то комбинация клавиш приводит к аналогу нажатия 'Q' и выходу на стартовый экран.
3. Еще реже (я только один раз видел), при входе на экран остается не стертым первое изображение Диззи, при входе на этот экран.
Редкие глюки сложно исправить, потому что их сложно поймать в принципе.
2. Очень редко, какая-то комбинация клавиш приводит к аналогу нажатия 'Q' и выходу на стартовый экран.
Этот глюк примерно прояснился.
Он связан с тем, что опрос клавиатуры вызывается и из основной программы, и из обработчика Диззи из прерывания.
А так как обработчик самомодифицирующийся (например, модифицирует код команды BIT x,A, чтобы сканировать нужный бит порта), то вполне логично, что наступает момент, когда опрашивается Q (или другая клавиша) из основной программы, и в это время пришло прерывание, и перемодицифировала код, и опросилось неизвестно что).
Нда уж...
Думаю, с глючно напечатанным случайно Диззи при входе на экран та же песня. Печать идет и из прерывания, и из основного кода, причем одной и той же процедурой. Но это еще не точно.
- - - Добавлено - - -
1. На экране перегруженном активными обьектами, можно случайно выложить один предмет на другой.
И эта проблема выяснилась. И тот же источник - конфликт прерываний и основной программы, а именно:
После нажатия 'выстрел', включается счетчик задержки следующего выстрела на 15 кадров, чтобы успел прокрутиться скроллинг инвентаря, и отработать взятие/выкладывание предмета.
Однако, счетчик инициализируется в основном цикле, а решение о нажатии 'выстрела' принимается в обработчике прерывания. В итоге эта система работает криво, и дает два артефакта.
1) Возможность выложить один предмет на другой, если экран перегружен обьектами.
2) Именно из-за этого при брании монеты (это частный случай брания предмета), если вовремя не отпустить клавишу 'выстрел' то сразу же прокручивается инвентарь и выкладывается предмет. Приходилось брать монету очень коротким нажатием 'выстрела'.
Решение: перенес инициализацию счетчика на прерывания, туда же, где принимается решение о нажатии выстрела. И немного его увеличил.
Таким образом, теперь инвентарь работает равномернее, не выкладывается один предмет на другой, и, самое приятное, после брания монеты не выкладывается предмет сразу же, а проходит достаточное время, чтобы отпустить 'выстрел'. На мой взгляд стало комфортно брать монеты и вообще пользоваться инвентарем.
- - - Добавлено - - -
3. Еще реже (я только один раз видел), при входе на экран остается не стертым первое изображение Диззи, при входе на этот экран.
Похоже, и эта проблема решена. Во всяком случае в теории, т.к. поймать на практике ее очень сложно.
И опять же те же грабли. Печать и стирание Диззи используется не только движком, который сидит на прерываниях, но и основной программой.
Например, когда берется-кладется предмет. Или же при входе в комнату.
Но из-за косяков неучтеной многозадачности (а прерывание - это многозадачность), да еще и не в том месте поставленного DI, просходят накладки.
А именно - при печати Диззи сперва начинается какая-то математика, запоминание координаты в буфере для последующего стирания, и уже потом запрещаются прерывания и печатается Диззи.
Однако, если опять же происходит наложение вызова основной программы и то, что на прерываниях, с этими данными может произойти фигня.
Что я и видел в очень редких случаях в тестах. Заходишь на экран, и внезапно в каком-то другом месте экрана печатается Диззи и остается напечатанный висеть. А все потому, что координаты сбились.
Переписал это все, надеюсь, теперь все будет правильно.
p.s.: Минус в том, что опять все это надо тестить и гонять из-за редкости глюков.
Решение: перенес инициализацию счетчика на прерывания, туда же, где принимается решение о нажатии выстрела. И немного его увеличил.
Таким образом, теперь инвентарь работает равномернее, не выкладывается один предмет на другой, и, самое приятное, после брания монеты не выкладывается предмет сразу же, а проходит достаточное время, чтобы отпустить 'выстрел'. На мой взгляд стало комфортно брать монеты и вообще пользоваться инвентарем.
Респект) Уж сколько раз у меня маска под водой так выкладывалась, когда монеты там собирал и не сосчитать))
Респект) Уж сколько раз у меня маска под водой так выкладывалась, когда монеты там собирал и не сосчитать))
В моей версии этой проблемы нет, т.к. она вообще не выкладывается, дабы избежать запоронов)
- - - Добавлено - - -
Кстати говоря, я думал, что больше глюков, чем в Диззи-1, нигде нет.
А оказалось, что Диззи-2 переплюнула все.
Причем насыщена именно скрытыми, редкими глюками.
Oleg N. Cher
04.02.2023, 15:49
А вообще Диззи 2 очень не хватает возможности иметь несколько жизней, от которой Оливеры отказались потому, что не смогли обработать ситуации, когда можно запороть прохождение игры.
А вообще Диззи 2 очень не хватает возможности иметь несколько жизней, от которой Оливеры отказались потому, что не смогли обработать ситуации, когда можно запороть прохождение игры.
Это я сделал, разумеется.
Сделал тест скорости страницы 3 и 6, чтобы выбрать, какая быстрее, и в нее грузить музыку и оцифровку.
Все работает, только выяснилось по тесту, что у Spectrum 2A и 3, медленные страницы более быстрые, чем медленные страницы у 128 и 2? Почему?
Lethargeek
05.02.2023, 08:48
Все работает, только выяснилось по тесту, что у Spectrum 2A и 3, медленные страницы более быстрые, чем медленные страницы у 128 и 2? Почему?
точно не наоборот? так-то у них схемы задержек разные, если верить
https://worldofspectrum.org/faq/reference/48kreference.htm#Contention
https://worldofspectrum.org/faq/reference/128kreference.htm#ZX128Memory
...но с такими на +2A/+3 должно получаться медленннее - 76543210 против 65432100
и ты на реалах мерил или на эмуле?
А важны ли тайминги вообще? Сделал тестирование, где в какой странице тактов больше, та и подходит.
и ты на реалах мерил или на эмуле?
На эмуле
- - - Добавлено - - -
А важны ли тайминги вообще? Сделал тестирование, где в какой странице тактов больше, та и подходит.
Да, с замерами это уже не важно, какой из них медленнее, какой быстрей.
ZX_NOVOSIB
05.02.2023, 15:04
Все работает, только выяснилось по тесту, что у Spectrum 2A и 3, медленные страницы более быстрые, чем медленные страницы у 128 и 2? Почему?
Потому что 2А и 3 более поздние, более совершенные модели, поэтому в них и скорость быстрее :D
- - - Добавлено - - -
т.к. она вообще не выкладывается, дабы избежать запоронов)
Так нельзя! Это ж элемент геймплея! Перед погружением выложить все предметы, а потом заново взять их в такой последовательности, в какой нужно! Чтобы маску взять последней!
Удивительные глюки эмулятора EmuZWin :)
Беру один и тот же тест скорости страниц памяти, записываю его в .tzx, и в .tap.
При загрузке теста из .tap на модели 2A, страницы имеют разную скорость, и тест отрабатывает правильно.
Если же загрузить тест из .tzx, то все страницы у модели 2A показывают одинаковую скорость в тесте. Хотя потом, опять работают с неодинаковой.
На Спектакуляторе на всех моделях все определяется верно.
Если же загрузить тест из .tzx, то все страницы у модели 2A показывают одинаковую скорость в тесте. Хотя потом, опять работают с неодинаковой.
Что-то намудрил автор эмуля с таймингами, на реале так вообще всё может быть иначе. Мой тест не пробовал, что он показывает сразу после загрузки из tzx?
- - - Добавлено - - -
Предположу, что это сделано специально, чтобы работали кривые кастомные загрузчики от всяких поляков. т.к. если разобраться делали как попало, размещали в медленной памяти код загрузчика. После того как tzx загрузился, скорость выставляется согласно модели.
- - - Добавлено - - -
Подумал тут над шапкой, как вам такой вариант?
https://pic.maxiol.com/thumbs2/1675687197.1522400671.dizbars.png
Очки можно на разряд уменьшить думаю. Какой там маскимальный счёт? Ну, а монета иконкой выглядит понятнее.
- - - Добавлено - - -
А ещё был классный арт для начальной заставки:
https://pic.maxiol.com/thumbs2/1675687948.1522400671.image.png
Можно органично вписать :)
CityAceE
06.02.2023, 16:04
Подумал тут над шапкой, как вам такой вариант?
Отличный вариант. Я бы выбрал его.
Spectramine
06.02.2023, 16:10
Сделал тест скорости страницы 3 и 6, чтобы выбрать, какая быстрее, и в нее грузить музыку и оцифровку.
Все работает, только выяснилось по тесту, что у Spectrum 2A и 3, медленные страницы более быстрые, чем медленные страницы у 128 и 2? Почему?
...но с такими на +2A/+3 должно получаться медленннее - 76543210 против 65432100
У +2А/+3 нет задержек на каждый такт, обозначенных в таблице задержек "x N" : https://worldofspectrum.org/faq/reference/48kreference.htm#Contention .
Хотя шаблон задержек у них более тормозной, но зато срабатывает он реже.
А ещё был классный арт для начальной заставки:
https://pic.maxiol.com/thumbs2/1675687948.1522400671.image.png
Можно органично вписать :)
Ну нет, мне графика Диззи-2 на Амиге не очень нравится.
Вот Диззи-5 там классно нарисована. И сеймур.
- - - Добавлено - - -
Подумал тут над шапкой, как вам такой вариант?
https://pic.maxiol.com/thumbs2/1675687197.1522400671.dizbars.png
Я уже на этой остановился, она мне нравится:
https://pic.maxiol.com/images2/1675689743.630247458.screenrusborder.png
Ну нет, мне графика Диззи-2 на Амиге не очень нравится.
Вот Диззи-5 там классно нарисована. И сеймур.
- - - Добавлено - - -
Я уже на этой остановился, она мне нравится:
https://pic.maxiol.com/images2/1675689743.630247458.screenrusborder.png
Поддерживаю. Этот вариант лучше.
Там, вроде, в оригинальном варианте игра сбрасывалась при проигрывании финальной (?) музыки. Смутно помню, что процедура проигрывания то ли вызывалась из адресов выше 49152 или что-то похожее. Этот момент чинили в Dizzy SACK.
Я уже на этой остановился, она мне нравится:
Тогда уж, жизни и монеты надо бы местами поменять, лучше будет. т.к. в одну строку с очками.
Смысл старой шапки был в надписях, если их убирать то обе. Поэтому предложил.
Там, вроде, в оригинальном варианте игра сбрасывалась при проигрывании финальной (?) музыки. Смутно помню, что процедура проигрывания то ли вызывалась из адресов выше 49152 или что-то похожее. Этот момент чинили в Dizzy SACK.
Там был глюк при проигрывании финальной музыки, я описывал это в первом посте.
Разумеется, я это починил.
- - - Добавлено - - -
Reobne нашел интересный глюк оригинальной игры (в моей версии это осталось):
Запустил игру в 3-й раз, и нашёл, что если напрыгнуть на скалу, так чтобы Дизи немного ближе к ней прижался, а потом выложить пальмочку, то на неё тоже можно запрыгнуть, и сундук, получается, не нужен! Не знаю, было ли так в оригинальной игре.
мы так всегда делали в детстве.
мы так всегда делали в детстве.
Куст вместо сундука? )
Пусть так останется, это не критично)
yashcher
06.02.2023, 23:32
На вкус и цвет, товарища нет. Но мне также хотелось бы поддержать мнение о том, чтобы переместить количество жизней вверх, а количество очков и набранных монет поместить в одну строку т.к. они одного яркого цвета.
78462
Verm-V нашел шикарный глюк в игре.
Он заметил, что если бегать по верхушкам леса, то очки прибавляются не по 1000 за каждую комнату, а повторно и повторно, причем, не совсем понятно когда и как.
Я стал разбираться в коде, и выяснил, что битовый массив, в котором записывается, какая комната уже была посещена, а какая нет, состоит всего из 16 байт, по одному биту на комнату, и охватывает всего 128 комнат.
Тогда как индексы комнат в игре лежат во всем диапазоне от 0..255.
И когда человек посещает комнаты с номером >128, алгоритм вычисления бита в массиве превращается в тыкву. Мало того, что неправильно определяется, посещена комната или нет, так еще и команды BIT n,(HL), и SET n,(HL), которые являются самомодифицирующимися, из-за переполнения превращаются вообще в другие комнады)
- - - Добавлено - - -
Но это еще не все беды со счетом)
1. При посещении каждого экрана счет увеличивается на 1000. Однако, чтобы на заставочном экране такого не происходило, при очистке счета специально помечаются биты, что заставочный экран уже посещен. Но биты помечаются, а процедура вызывается уже после того, как заставочный экран показан) Своевременно)
2. Ошибка в функции начисления счета приводит к тому, что не работает перенос из 5 в 6 разряд, если перенос был каскадным.
Ну и наконец, обратил внимание, что в качестве габаритов Диззи (для сравнения коллизий спрайтов) используется спрайт листвы деревьев 3x3 знакоместа. А что, похоже. Да и в Диззи-1 примерно так же делали)
ZX_NOVOSIB
07.02.2023, 20:45
нашел интересный глюк оригинальной игры (в моей версии это осталось):
Вместо сундука подойдёт абсолютно любой предмет, даже зубная паста, токо надо попрыгать туда влево, чтобы диззи прям чуть-чуть в скалу вошёл
Я вот заметил, что если у края экрана нажать огонь для выкладывания предмета и в этот момент перейти на другой экран, то предмет появится в нужном месте, но на предыдущем экране... и вообще может застрять в текстурах.
- - - Добавлено - - -
так еще и команды BIT n,(HL), и SET n,(HL), которые являются самомодифицирующимися, из-за переполнения превращаются вообще в другие комнады)
У братьев не было такого ресурса тестеров :) Одна попытка для релиза, потом только кассеты изымать, а это убытки колоссальные)
Я вот заметил, что если у края экрана нажать огонь для выкладывания предмета и в этот момент перейти на другой экран, то предмет появится в нужном месте, но на предыдущем экране... и вообще может застрять в текстурах
Классный глюк)
До такого я даже не догадался, попробовать так сделать)
Это происходит потому, что движок самого диззи висит на прерываниях и работает асинхронно. Человек нажимает 'выстрел', и от движка поступает основной программе сигнал, что нажат выстрел, надо выложить предмет. Однако, если Диззи успел выйти за пределы экрана, то его координаты будут уже в начале другого экрана, вот предмет и выкладывается в тех координатах, куда Диззи вышел.
Обзор музыкального плеера под биппер Дэвида Уиттакера.
Плеер достаточно массивный, имеет много кода и возможностей. Тогда как сами мелодии достаточно компактны, и занимают мало места.
По словам Гудбоя, Дэвид достаточно хороший кодер, и свои плееры писал сам, 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 (ударники), можно обрезать часть плеера, высвободив некоторое количество байт, если понадобится.
На этом обзор плеера закончен)
ZX_NOVOSIB
21.02.2023, 12:42
Вместе с этим, немало ляпов и глюков влияющих на качество музыки.
О, Великий Титус, исправь же глюки, чтобы качество музыки увеличилось в разы!
Lethargeek
21.02.2023, 21:02
У +2А/+3 нет задержек на каждый такт, обозначенных в таблице задержек "x N" : https://worldofspectrum.org/faq/reference/48kreference.htm#Contention .
Хотя шаблон задержек у них более тормозной, но зато срабатывает он реже.
но почти все так обозначенные команды довольно редкие и сами по себе тормозные и невыгодные, кроме разве ldi и djnz (и то цепочка ldi на 48 будет самовыравниваться)
Spectramine
21.02.2023, 21:25
но почти все так обозначенные команды довольно редкие и сами по себе тормозные и невыгодные, кроме разве ldi и djnz (и то цепочка ldi на 48 будет самовыравниваться)
Индексная адресация, относительные переходы, блочные команды, обращения к портам на 48/128 тормознее. А вообще зависит от набора команд теста, и их наложения на паттерн тормозов.
Тест TactMeter почему-то выдает одинаковые тормоза для всех фирменных 128х, причем меньшие, чем на 48, хотя казалось бы.
Lethargeek
22.02.2023, 00:25
Индексная адресация,
даже в древнем неоптимальном коде одна индексная на десятки нормальных
да и в ней самой этих лишних тормозов проценты какие-то
относительные переходы,
только выполняемые, статистически опять же должно быть редко, разве что память экономят прямо до байтиков
и вообще я сомневаюсь в верности формул, или эти cpaные переходы прям в РАЗЫ растягиваться должны
1x5 как-то крутовато, это же ~12-18 тактов пропущенных, что для лдиров (не цепочек лди) вообще приговор
блочные команды, обращения к портам на 48/128 тормознее.
это всё кроме лдиров тоже большая редкость
большая редкость
outd часто встречается в муз.плейерах (запись дампа в регистры AY)
ini встречается (но очень редко) для опроса клавиатуры
Lethargeek
22.02.2023, 11:41
outd часто встречается в муз.плейерах (запись дампа в регистры AY)
ini встречается (но очень редко) для опроса клавиатуры
так большая редкость и есть - жалкие проценты от фрейма (и наверняка еще на бордюре)
Обзор музыкального плеера под AY Дэвида Уиттакера.
Структурный формат плеера под AY соответствует его же плееру под бипер с небольшими изменениями:
У каждого канала (A, B, C) свой трек проигрывания, не зависимый от других.
Для всей мелодии устанавливается скорость, где такт музыки - n * 20ms, причем n, в отличие от плеера под бипер, является дробным числом.
Трек состоит из списка паттернов, а в каждом паттерне может быть произвольное количество нот и команд.
Нота - это код от 12..95 (84 ноты),
Команда начинается с кода $80.
Судя по коду плеера, в нем предполагалось или было, но позже урезано, наличие использования каналов шума для ударных инструментов.
В данной версии такой возможности нет.
Команды смешанного типа:
DEFB CMD_FetchCmd - . ; $80
DEFB CMD_VibratoPlus - . ; $81 - Vibrato Plus
DEFB CMD_VibratoMinus - . ; $82 - Vibrato Minus
DEFB CMD_FetchCmd - . ; $83
DEFB CMD_Transp - . ; $84 - Transposition
DEFB CMD_FetchCmd - . ; $85
DEFB CMD_FetchCmd - . ; $86
DEFB CMD_NextPattern - . ; $87 - Next Pattern
DEFB CMD_Vibrato - . ; $88 - Vibrato
DEFB CMD_Transp - . ; $89 - Transposition *
DEFB CMD_Tone - . ; $8A - Tone
DEFB CMD_Tone - . ; $8B - Tone *
DEFB CMD_Transp - . ; $8C - Transposition *
DEFB CMD_FetchCmd - . ; $8D
DEFB CMD_StopPlay - . ; $8E - Stop Play
DEFB CMD_FetchCmd - . ; $8F
DEFB CMD_FetchCmd - . ; $90
DEFB CMD_FetchCmd - . ; $91
DEFB CMD_LocalTransp - . ; $92 - Local Transposition
DEFB CMD_StopPlay - . ; $93 - Stop Play *
DEFB CMD_StopPlay - . ; $94 - Stop Play *
Вибрато:
Вибрато задается командой: $88, nn, mm, где
nn - константа инкремента/декремента частоты тона
mm - максимальное значение отклонения тона
Или командами:
$81 - вибрато начинающееся с плюсового отклонения
$82 - вибрато начинающееся с минусового отклонения
Для каждой следующей октавы ниже значения ноты 48, отклонение тона умножается на 2.
Транспозиция:
Есть два типа транспозиции, локальная и глобальная. Обе они равноценны, т.к. просто складываются с нотой, поэтому разделение на глобальную и локальную условно.
$84, nn - глобальная транспозиция. Повышение или понижение последующих нот на заданное число полутонов. (команда аналогична плееру под бипер)
$92, nn - локальная транспозиция.
Смешанные команды:
$8A - включить тон на канале (шум, соответственно, выключается, если был включен)
$87 - перейти к проигрыванию следующего паттерна (конец паттерна)
$8E - остановить проигрывание
Орнаменты:
Орнаменты имеют коды $C0..$CF (всего до 16 орнаментов).
Массив данных для орнамента - это просто набор смещений в полутонах. Последняя запись в орнаменте должна иметь бит 7 установленный в 1.
Пример орнамента:
DEFB $00,$03,$87 ; Орнамент 1: 0, 3, 7
Огибающие громкости ноты:
Огибающие имеют коды $D0..$DF (всего до 16 огибающих).
Из них используются только номера 0..4,6,8,10.
Формат огибающей:
1. Длительность шага огибающей (1..255) (1 - огибающая меняется на каждом такте плейера)
2. Массив громкостей для каждого шага
3. $80..$FF - конец огибающей
Пример огибающей:
DEFB $01 ; Скорость 1
Env1: DEFB $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06 ; Громкости
DEFB $87 ; Конец огибающей
Число тактов в ноте:
Команда $E0 + nn - 1, где nn - 1..32 (число тактов в ноте)
Titus, ты молодца, дружище, мы конечно только спасибы кидаем и ни в жизнь юзать тот плеер (например) не сумеем, но то что ты раскалываешь код и делишся - это вообще здорово. Как-то роднит, что-ли... Я вот тем-же занят (реверс-инжиниринг PLC-кода производственных процессов) понимаю как это тяжко когда даже никто оценить не может как это вообще непросто.
А вообще вопрос совмещения FX и музла на спеке до сей поры стоит нерешённым (в виде универсального приёма)
А вообще вопрос совмещения FX и музла на спеке до сей поры стоит нерешённым (в виде универсального приёма)
В этом плейере вполне совмещается.
Один канал отключается, и вместо него идет эффект. А когда эффект кончается, музыка в канале включается.
Главное, чтобы по этому каналу шел какой-нибудь незначительный голос, не ведущий, чтобы восприятие музыки не портилось.
В этом плейере вполне совмещается.
Ну воть попробовать по случаю надо конечно (когда до озвучки дело дойдёт)
Я, например, писать под этот плеер тоже не собираюсь.
Самый простейший саундтрекер и то навороченней.
Но для понимания возможностей интересно. Вдруг открылось бы что-то необычное? Но нет, не открылось)
Впрочем, программное адаптивное под высоту тона вибрато - это интересно.
Также понятно, какими инструментами написаны подобные мелодии. Теперь при желании их легко написать в любом другом трекере, с тем же звучанием.
Теперь при желании их легко написать в любом другом трекере
Как-то навевает мысль конверсии в MIDI :)
А по спеку - помню старинную дремучую беду - расклад каналов ишака.
ABC, ACB (а где-то ещё извраты бывают на CAB например)
Эта тема в своё время остановила меня при написании FX+Music редактора
Вряд ли у них не было редактора в те годы, и они писали кодом. Я спрашивал Линдона на чем он делал музыку к игре миг-29, так вот это был амижный трекер, откуда он экспортировал ноты.
Вряд ли у них не было редактора в те годы, и они писали кодом. Я спрашивал Линдона на чем он делал музыку к игре миг-29, так вот это был амижный трекер, откуда он экспортировал ноты.
goodboy говорил, что Уиттакер даже на Амиге писал музыку прямо в devpac'е (т.е. в ассемблере).
Titus, в каком формате хранятся экраны игры? Как задается материал?
Titus, в каком формате хранятся экраны игры? Как задается материал?
Если хочешь разобраться в игре, придется дизассемблировать) Так этого не расскажешь)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot