С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ну я на асме 100 лет не кодировал посерьезному)
Так что пусть кодеры резвятся)
заранее подготовленные данные часто выводят таким способом
ещё возможно похимичить с неполной дешифрациейКод:outi ld b,e outi / outd ld b,d outi ...
Код:;bc=#c0fd ;de=#090a LD A,#08 OUT (C),A OUTI INC B INC H OUT (C),D OUTD INC B INC H OUT (C),E OUTI
Последний раз редактировалось goodboy; 01.08.2017 в 09:54.
несколько моментов.
1. учёт и выборка потока данных для psg
2. потактовая чётность плеера
...
3. 300 тактов не нужны
О как активизировались то)
- - - Добавлено - - -
ld c,#FD ; один раз, 7 тактов
ld de,#BFFF ; 10 тактов
;-----------------
; Вывод в один регистр HL = данные в формате <1байт номер регистра>, <1байт данные>;<1байт номер регистра>, <1байт данные>;<1байт номер регистра>, <1байт данные>;....
ld b,e ; 4
outi ; 16
ld b,d ; 4
outi ; 16
;----------ВСЕГО: 40 тактов
Запись в 11 регистров - всего 440 тактов. И данные с кодом мешать не надо! Класс!
Мозги вы тут собрались!)
Если не управлять громкостью - то достаточно 8 регистров, то есть 320 тактов.
А если учесть, что не каждые 1/50 секунды меняются все регистры, то достаточно ограничиться изменением
6 регистров за раз (240 тактов). И все.
Конечно, конвертор будет не очень простой. Нужен дамп регистров и анализ их изменения, чтобы генерировать
последовательность только тех, что меняются. Но это реально.
- - - Добавлено - - -
Задача чисто "ради интереса"![]()
Последний раз редактировалось SfS; 01.08.2017 в 10:58.
Ну вот. Меня в троллинге обвиняют чтоли?) Ну стало мне интересно - написал. Заодно и более-менее оптимальное решение быстренько выяснилось.
и что выйдет из решения? пердеж и бэквокал в виде огибающей? .psg проигрывателя иногда хватало за глаза
Есть еще вариант - перемежение кода отрисовки графики и звука. Например: рисуем одну линию - выводим один канал; рисуем вторую - выводим второй канал и т.д. В таком случае не очень важно, сколько тактов займет работа с AY в сумме; достаточно, чтобы эти такты хотя бы во фрагментированном виде были в наличии. В программах, выравненных по времянкам, часто встречаются задержки. Вот можно часть задержек перепилить на работу со звуком.
- - - Добавлено - - -
Во многих играх встречалась музыка с обновлением не каждый кадр. Например: во время игры Marauder выводит один раз за 3 кадра. А по музыке и не скажешь, что она технически ограничена. Хорошо постарался композитор, грамотно распорядился возможностями. Также один раз за 3 кадра обслуживается музыка на 4-м уровне Batman The Movie (уровень называется "Gotham City Parade"). И здесь музыка весьма неплохая.
- - - Добавлено - - -
Можно еще представить себе такой плеер, который каждый кадр обновляет только один канал. Музыка останется трехканальной. Композиторы вздохнут свободнее, а программист - уложится в 100 тактов за кадр![]()
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)