Вход

Просмотр полной версии : Видео для ZS GMX



izzx
08.11.2021, 19:19
Поскольку у нас теперь есть конвертер картинок, который может обрабатывать пачками,
решил сделать ролик типа гифки. Раз уж это не стоит больших трудов.

Видео на полный экран, 16000 байт кадр, всего 120 картинок, частота смены 10 кадров в секунду.
Всё грузится в память с 3х дискет и проигрывается.
Длина ролика 12 сек ).

Музыку для AY скачал и прикрутил.

Могло бы быть в планах:
1. Проигрывание с раздела FAT через SMUC. Без сжатия и без звука фильм на 90 минут будет около 850 мегабайт.
2. Звук через GS (для небольших роликов)
3. Хоть какое-нибудь сжатие

По пункту 1 придётся работать напрямую с контроллером, потому что через ПЗУ очень медленно.
Во всяком случае, с виртуальной дискеты 1 кадр грузится примерно секунду.
И при этом выключается расширенный экран.

Если у кого-то есть библиотеки для чтения файла с FAT через SMUC, прошу делиться.


https://youtu.be/EQJcynFiX88

Upd.
Вторая версия видео, уже с флешки:


https://youtu.be/l3pR5YBjQWc


https://youtu.be/acPt6bm2iI0


Третья генерация


https://youtu.be/SAQC0etb7g0


https://youtu.be/cMdq9Nc8zXE


Четвёртая

https://youtu.be/SvAWGEBDmfk


https://youtu.be/ggACVcdqiOs


https://youtu.be/DecUASu8d3A


https://youtu.be/3UqB8PiULgM

22050 герц:


https://youtu.be/KnKJ7_hc_kk

Лучше звук:


https://youtu.be/yGB8acLAZSI

Автосборка bat файлом, версия 4.02:


https://youtu.be/a_tSfwZf4TY


Исходники тут в папочке Video
https://drive.google.com/drive/folders/19-O-MY2XkgRUmUUZ98xZ83juCuaBe32I?usp=sharing

reddie
08.11.2021, 20:34
Ура, скоро на Спектруме будет свой Порнхаб =))


Звук через GS (для небольших роликов)
Если врубить GS в режим ковокса, можно и аудио с диска тягать, правда, качество (битрейт) под большим вопросом.

izzx
08.11.2021, 20:49
Если врубить GS в режим ковокса
Даже не знал что такой режим есть.

reddie
08.11.2021, 20:55
Даже не знал что такой режим есть
Есть, причем изначально был заложен разработчиками =) Еще и несколько вариантов этого режима имеется. Моно, стерео, и т.д.
А главное - можно выводить с подтверждением либо без (основной проц кинул байт в порт GS и ждать принятия не нужно).

Evgeny Muchkin
08.11.2021, 21:31
Даже не знал что такой режим есть.

OUT (#BB),#0E - переход в режим ковокса

OUT (#B3),Данные... данные... данные...


Видео супер! :)

izzx
08.11.2021, 22:00
reddie, Evgeny Muchkin, спасибо. Как-нибудь надо попробовать поиграть на GS ).

Wicked
10.01.2022, 17:35
Я правильно понимаю, чтобы это запустить на реале, нужен SMUC?

izzx
10.01.2022, 18:53
нужен SMUC
Похоже, так. Потому что считывает с дисков A,B,D.
А диск D на скорпионе только в SMUC бывает.
Но можно хоть на один дисковод A переделать, при желании, и менять дискеты.

reddie
10.01.2022, 19:46
А диск D на скорпионе только в SMUC бывает
Ну или при наличии доработки не только в SMUC =)) Всего одна микрушка - и доступны четыре диска.
Причем в схеме Скорпа заложена возможность "полной адресации", но один бит из двух вообще не задействован.

Evgeny Muchkin
12.01.2022, 23:51
Ну или при наличии доработки не только в SMUC =)) Всего одна микрушка - и доступны четыре диска.
Не. Не получится. В ПрофПЗУ работа с реальными C и D покоцана в угоду SMUC :(

reddie
13.01.2022, 08:51
В ПрофПЗУ работа с реальными C и D покоцана в угоду SMUC
Жаль... но ничто не мешает доработать обычный Скорп без профки/смука =)
А в последнем для работы с винтом могли бы поступить хитрее. Букв в латинском алфавите куда больше, чем четыре ;)

Kulich
13.01.2022, 08:58
Жаль... но ничто не мешает доработать обычный Скорп без профки/смука =)
А в последнем для работы с винтом могли бы поступить хитрее. Букв в латинском алфавите куда больше, чем четыре ;)

Это было бы очень странное применение жесткому диску =) Вообще насколько я помню как минимум is-dos раздел можно создать на диске. А уже с него играть что хочешь, 16 мегабайт счастья вроде )

reddie
13.01.2022, 09:09
Это было бы очень странное применение жесткому диску =)
Ну я про сам принцип выбора "флопы либо HDD". Задаем, например, диск "G:" какой-нибудь, и далее ПЗУ все запросы к дискам A-B-C-D перенаправляет на винт. Пока не отменят это командой "Q:" например.
Дальше все упирается в софтовую поддержку. Так-то можно и номера секторов от 0 до 255 задавать, либо вообще адресацию по типу LBA сделать. Весь вопрос в софте =)

LW
13.01.2022, 10:01
Тогда не будет прозрачной работы с образами. Tr-dos то умеет работать только с дисками A-D.

Evgeny Muchkin
13.01.2022, 17:25
izzx, с фатом чего-нибудь получилось? Полнометражку очень хочется посмотреть. ;)

izzx
13.01.2022, 18:29
с фатом чего-нибудь получилось
Перед НГ в эмуляторе уже работало, выжимало примерно 8.5 кадров через контроллер ZC. А через SMUC там драйвер явно медленнее. Но в целом с раздела fat файл читает.
А вот на реальном компе вырубает расширенный экран и полосы по бордюру бегут. Показывает только обычный экран. Пока не понимаю почему.
Теперь думаю прикрутить более свежий драйвер от фатала, а то тот что есть не последний. Выдрать прямо из проги. В свежем и работа со SMUC быстрее сделана. Но нет описания как пользоваться).

Evgeny Muchkin
14.01.2022, 01:29
izzx, ZC, по некоторым данным не дружен с GMX :(

Касательно смука. Возможно, драйвер медленнее из-за обращений к портам SMUC через TR-DOS. Думаю, если порты смука открыты, то без TR-DOS читать будет мега-быстро, на что и имеет смысл ориентироваться. КМК :)

izzx
14.01.2022, 08:38
ZC, по некоторым данным не дружен с GMX
А у меня вроде как работает. ZC есть на карте DivGMX. Я особо не пользовался, но каталог SD карточки открывает.
Хотя, иногда не запускается комп. Но там кроме ZC много намешано. И скорее всего, потому что SMUC не в первом слоте. Не понятно.


драйвер медленнее из-за обращений к портам SMUC через TR-DOS
Да, я даже переделывал драйверы, чтобы не через 3d2f выводило, а сразу out (c),a. В эмуляторе даже работает.
В последней версии фатала 0,25 смешанный способ и через 3d2f, и через ini. То есть частично работа идёт напрямую с портами #BE.
А надо бы как в GMXCOM, напрямую через outi, ini.

izzx
16.01.2022, 20:52
Пару дней провозился прикручивая более свежий драйвер, зато теперь заработало на реале! Нормально грузит с карты сразу на видео страницы 79, 7b.
Скорости на чтение примерно такие:
ZC - 258048 байт/с (16 кадр/с по 16000 байт)
SMUC - 44491 байт/с (2,7 кадр/с)

Теперь две задачи:
1. Ускорить чтение через SMUC, доработав драйвер на открытые порты и развёрнутый цикл чтения сектора.
2. Научиться играть wav через GS.

GS может загрузить один wav на 1-2 мегабайта целиком и проиграть?

reddie
16.01.2022, 22:48
GS может загрузить один wav на 1-2 мегабайта целиком и проиграть?
Команды ручного зацикливания используют три байта для задания адресов, должен схавать. Три байта это 16 мегабайт - думаю, хватит =))



#48 Set FX Sample Loop Begin (*)
Установка начала цикла для текущего эффекта.

SD LEN.L
SC #48
WC
SD LEN.M
WD
SD LEN.H
WD

При равенстве LEN.H - #FF зацикливание не производится

#49 Set FX Sample Loop End (*)
Установка конца цикла для текущего эффекта.

SD LEN.L
SC #49
WC
SD LEN.M
WD
SD LEN.H
WD

izzx
17.01.2022, 08:29
SD LEN.L
SC #48
WC
SD LEN.M
WD
SD LEN.H
WD
Прям китайская грамота для меня. Буду изучать вопрос, спасибо.

reddie
17.01.2022, 09:26
Буду изучать вопрос
Ну, это команды изменения параметров зацикливания, для закачки они не нужны.
Должен схавать через стандартную загрузку сэмпла в память, если её достаточно.
Но в идеале лучше перевести GS в режим ковокса и бросать звук в порт. Главное настроить задержки между выводами.
Потому как загрузка двух мегабайт в GS займет кучу времени, если делать её обычным способом.

izzx
17.01.2022, 19:01
перевести GS в режим ковокса и бросать звук в порт
Если прикинуть для частоты 11025 герц. Это значит надо столько раз в секунду кинуть байт в порт? Разделить на 50 = 220,5 байт в прерывание. И как эти байты равномерно распределить на прерывание? С учётом того, что драйвер fat для меня чёрный ящик. Запросил у него считать сектор и жди ).

Если по 10 кадр/сек, в каждом кадре 32 сектора. Значит, можно 320 раз в секунду бросать байт в порт. Интересно.

reddie
17.01.2022, 19:17
И как эти байты равномерно распределить на прерывание?

Разбираться с драйвером, чтобы на ходу перекидывать данные в порт. Это если драйвер программный, как на SMUC. В случае же с DMA (160 кило в секунду это явно оно) выходит 640 секторов/перерывов между секторами в секунду, слишком мало для звука.,

izzx
17.01.2022, 20:11
С драйвером ещё нюанс я сразу не заметил: при открытии файла заполняется некая таблица с адреса #B800. А когда файл большой, ближе к двум мегам, таблица заползает выше адреса #C000. То есть, оба самых любимых слота памяти занимает, считай. Придётся извращаться, перекидывать куски видео тудым-сюдым. Значит, потеряется скорость ощутимо.

reddie
17.01.2022, 21:10
таблица заползает выше адреса #C000. То есть, оба самых любимых слота памяти занимает
Странный драйвер, без предупреждения засирает память. Ну тогда по-любому переделывать драйвер =)
Чтоб чтение шло напрямую блоками, наподобие LBA. И пофиг, если дма-шное, можно и в GS аудио запихать, раз такая песня.
Главное, чтоб при чтении данных не портилось ничего лишнего (не создавалось каких-то там таблиц).

izzx
18.01.2022, 20:51
Поправил драйвер SMUC на открытые порты, и сразу скорость возросла в два раза. Теперь выжимает 6 кадр/с, примерно 96768 байт/с. Будем ускорять дальше. Но зато теперь пролетают редкие полоски по бордюру. Загадошный компьютер ).
Таблицу драйвера перенёс в другое место, теперь можно открыть файл на 10-16 мегов. Но о гигабайтах речи не идёт.

Начал читать инструкцию про GS, но там какие-то сэмплы. А мне бы нормальный человеческий wav проиграть силами самой карточки.

reddie
18.01.2022, 23:15
мне бы нормальный человеческий wav проиграть силами самой карточки
На писюке открываешь или создаешь вав-файл, конвертишь в моно 8 бит 8 Кбит (выше незачем, имхо) и сохраняешь как PCM, чтоб без заголовка.
Получившийся файл скормить GS'у под видом сэмпла. Останется выставить нужную ноту, это можно сделать в команде проигрывания.
Битрейт выше допустим, но с ним растет и размер файла. В два мегабайта влезет не так уж и много даже при 8 Кбитах.

izzx
19.01.2022, 16:22
Драйвер SMUC пропатчил, теперь он чуть быстрее, чем SC.

С GS научился воспроизводить шум вместо нужного звука. Взял звук, сохранил в wav 8 бит 8000 герц, убрал заголовок и окончание.
И шипение одно. Код брал из инструкции.

ld hl,sndtest
ld de,0-(sndtestend-sndtest)
call LoadFX
ld a,1
call PlayFX
ret

;А вот как можно закачать сэмпл:
GSCOM EQU 187
GSDAT EQU 179
LoadFX ;загрузка сэмпла
LD IX,Parameters
;LD HL,Sample_address
;LD DE,0-Sample_length
LD C,GSCOM
LD A,#38
CALL SENDCOM
LD A,#D1
CALL SENDCOM
LD A,(HL)
LOOP: IN B,(C)
JP P,READY
IN B,(C)
JP M,LOOP
READY: OUT (GSDAT),A
INC HL
ADD A,(HL)
INC E
JP NZ,LOOP
INC D
JP NZ,LOOP
WAIT: IN B,(C) ;Ждем принятия
JP M,WAIT ;последнего байта
LD A,#D2
CALL SENDCOM
; Теперь переопределяем параметры
; сэмпла по умолчанию своими
; значениями
ret
LD A,(IX+#00)
OUT (GSDAT),A ; Нота
LD A,#40
CALL SENDCOM
LD A,(IX+#01)
OUT (GSDAT),A ; Громкость
LD A,#41
SENDCOM: ;это SC
OUT (GSCOM), A
WAITCOM: ;это WC
IN A,(GSCOM)
RRCA
JR C,WAITCOM
RET
SENDDATA ;это SD
OUT (GSDAT),A
ret


PlayFX ;Проигрывание эффекта.
; SD FX_Handle - номер сэмпла
; SC #39
; WC
;ld a,1 ;номер семпла
call SENDDATA
ld a,#39
call SENDCOM
ret

Parameters
db 01,#40 ;нота, громкость
;
org #c000 ;тестовый звук
sndtest
incbin "sndtest.wav"
sndtestend

LW
19.01.2022, 16:34
READY: OUT (GSDAT),A
INC HL
ADD A,(HL)

почему тут Add a,(hl)?
вряд ли у вас wav c дельта кодированием
замените на ld a,(hl)

и еще, установка ноты и громкости не отрабатывает.


LD A,#D2
CALL SENDCOM
; Теперь переопределяем параметры
; сэмпла по умолчанию своими
; значениями
ret
LD A,(IX+#00)
OUT (GSDAT),A ; Нота

izzx
19.01.2022, 18:00
почему тут Add a,(hl)?
Да, я не мог понять почему. Теперь понял. И про ret забыл.
Запела карточка! Спасибо большое.
Только медленно, придётся частоту файла подбирать.

reddie
19.01.2022, 18:12
С GS научился воспроизводить шум вместо нужного звука
Выше уже расписали, почему =) Там в инструкции перед этим куском кода расписано, как перевести сэмпл в дельта-вид. А у тебя сэмпл обычный.
Можно не париться с этими дельтами и закачивать просто данные. Там же, в инструкции, вроде был и пример такой загрузки.
Если все равно будет шипеть и кряхтеть - поменять знак в сэмпле, либо выбрать другую команду загрузки. Их там две, под Amiga type и PC type.
Различаются тем, что одни сэмплы беззнаковые, от 0 до 255 нарастание, а другие от -128 до +127, знаковые.


Только медленно, придётся частоту файла подбирать
А это уже делается проигрыванием с нужной нотой.

izzx
20.01.2022, 12:07
А как теперь проиграть сэмпл сразу в двух каналах? Что-то в одном играет.


ld a,1
call SENDDATA
ld a,#80
call SENDCOM
ld a,1
call SENDDATA
ld a,#83
call SENDCOM

Evgeny Muchkin
20.01.2022, 16:42
В GS каналы 1,4 - это левый канал, 2,3 это правый. В примере выше используются оба левых.

reddie
20.01.2022, 19:47
В GS каналы 1,4 - это левый канал, 2,3 это правый. В примере выше используются оба левых.

Ну так-то в оригинальном ГС идёт подмес левого в правый и наоборот, должно быть слышно в обоих.
Но если задавать один и тот же сэмпл на одной ноте, действительно можно не понять.

izzx
20.01.2022, 21:22
Вроде бы запело в обоих ухах. Хотя, в инструкции с сайта НедоPC "Каналы 0 и 1 - левые, а 2 и 3 - правые."
Звук размером почти 460 000 байт залез в GS целиком, и нормально играет. У меня, правда, типа NGS на 4 мега. Может и в 512 влезет.
Только в конце какой то левый звук брякает. Не знаю откуда взялся. Надо вставить останов сэмпла, наверное.

Evgeny Muchkin
20.01.2022, 21:37
Если нужно проверить где (справа, слева) какой канал у вашей карты, потыкайте в Z-Player кнопки 1,2,3,4 во время проигрывания мода.

izzx
20.01.2022, 21:49
Z-Player кнопки 1,2,3,4
Это я уже выяснял, но пока что тестирую в эмуле. А на ноуте динамики рядом, плохо различаю. Но по-моему работает как надо.

Evgeny Muchkin
21.01.2022, 02:17
Касательно левого звука в конце. Загрузка посекторная? Размер файла кратен 512?

izzx
21.01.2022, 08:36
Загрузка посекторная?
Точно, а я и не подумал. Теперь понятно откуда левый звук.

izzx
21.01.2022, 18:58
Парни, нас ждёт вторая серия. Вернее первая, но теперь целиком, и с родным звуком.


https://youtu.be/l3pR5YBjQWc

Размер файлов пока до 10 мегабайт. Драйверу нужно много памяти для построения таблиц. Можно чуть увеличить примерно до 20-ти, если использовать страницу 0 вместо ПЗУ, но я не проверял.
Надо искать более другой драйвер.
Зато файлов на флешке может быть много, и поддерживается четыре устройства, но я проверял только на SMUC и ZC.

reddie
22.01.2022, 12:09
Надо искать более другой драйвер
...или переделывать имеющийся =) что, считаю, реально, но трудозатраты вряд ли того стоят.
Кстати, какой битрейт в итоге у сэмпла? И на какой ноте GS его играет? Либо просто по умолчанию, без ноты?

izzx
22.01.2022, 14:12
какой битрейт в итоге у сэмпла? И на какой ноте GS его играет?

32770 - скорость звука (47)
32771 - громкость звука (64)
32772 - задержка между кадрами видео, фреймов (5)

Частота 8000 Герц, 8 бит, моно.
Но можно было и получше качество сделать. Только грузилось бы дольше, и в GS на 512 уже бы точно не влезло. Сейчас 450 000 байт загружается в GS около 10 секунд.
Ещё пришлось сжулить, скорость звука сделать 102%, чтобы точно совпало с видео.

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

Упд. На загрузку одного сектора 512 байт в GS уходит где-то 44000 тактов. Сейчас на звук уходит около 790 байт на кадр. То есть, пару секторов за одно прерывание можно загрузить в GS. Но будет ли толк? Она умеет играть куски звука без перерывов, чтобы не слышно было пауз и щелчков, и без перерывов звучания во время подгрузки?

reddie
22.01.2022, 16:32
можно ли на ходу подгружать порциями звук в GS
Насколько помню - при загрузке модов/сэмплов ничего играть не может. Только если остановлено.

Evgeny Muchkin
22.01.2022, 16:52
Изгибнуться можно и грузить в ГС вместе со звуком. Но надо считать и экспериментировать, т.к. чем больше вгружаем, тем хуже будет качество звука.
Скорей всего не получится, но попробовать можно. :)

reddie
22.01.2022, 20:55
Скорей всего не получится, но попробовать можно
Разве что вешать свою процедуру обработки прерываний, жующую данные напрямую из памяти (без буферов). Ну и 37 КГц перебор, нужно прореживание счетчиком.
Да и загрузку данных в ГС тоже делать своей процедурой и согласовывать с "прерывательной", чтоб перебора или недобора не происходило.
В теории - осуществимо, но на деле нужно смотреть. Новодельные ГС-ы на 18 и выше МГц, естественно, в более выигрышном положении.

Evgeny Muchkin
24.01.2022, 19:26
Чот ни разу не получилось до конца досмотреть на реале. :( Видео останавливается в произвольных местах, картинка замирает, музыка продолжает играть, потом зачем-то обращение к диску А (с которого запускаю)... и жесткий висяк, после которого даже ресет не всегда помогает. :(

izzx
24.01.2022, 20:31
ни разу не получилось до конца досмотреть на реале.
Я на реальном около 5 раз запускал, доиграло. Сейчас ещё пару раз. Нормально.
Но проблема есть. В эмуляторе у меня тоже, бывало, начинало изменять диск А, забыл предупредить ). Надо хоть резервные копии делать... Или с карты ZC не до конца играло. Тут, наверное, связано с тем, что включен банк TR-DOS и разрешены прерывания во время проигрывания. Чтобы синхронизировать кадры. Или же у тебя карта SD, а у меня CF.
Я в папку общую положил более старую версию для теста, она без синхронизации и с выключенными прерываниями. И ещё версию с отключенным NGS. Если не лень, попробуй.

Evgeny Muchkin
24.01.2022, 20:39
izzx, а можно ссылку на этот TRD, а то я заблудился совсем в этом гуглидиске. ;)

izzx
24.01.2022, 21:01
https://drive.google.com/file/d/12gq-soIomb_2EzChjtPl7btQlTubMa2O/view?usp=sharing
Так есть?

Или папка Video - Тест.

Evgeny Muchkin
24.01.2022, 21:49
Попробовал оба трд.Такая же шляпа. :(

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

Завтра проверю на других носителях. Может, в этом дело...

izzx
24.01.2022, 22:00
Надо перебирать варианты. С какого диска запускал? Смук или с гибкого? Какой раздел фат, объём, размер кластера.
У меня так fat32 на 500 мегов, размер кластера вроде бы около килобайта. Вся флешка 2 гига.

Evgeny Muchkin
25.01.2022, 10:57
Запускал всегда с гибкого А.
SD карта на 32 гига. Первым разделом идет FAT32, размером 28 993 781 760 байт. Вторым раздел скорпионовский MFS, размером примерно 2 гигабайта.

izzx
25.01.2022, 12:01
Запускал всегда с гибкого А
Вечером так же попробую, и сделаю ещё версию без включения DOS.
Скорее всего, с картой что-то.
В GMXComander стабильно работает? Если целую дискетку со смука на смук погонять? Но надо заранее образы смонтировать, а то он любит когда раздел MFS вначале.
Попробовать бы другую карту, другие контроллеры (ZC, SD NGS, Nemo).

Evgeny Muchkin
25.01.2022, 17:21
Nemo виснет с GMX
NeoGS виснет после выбора "0" (смук при этом не подключен).
C HDD и смука работает
Попробовал 3 разных SD карты и разные варианты форматирования - либо виснет в процессе проигрывания, либо вообще файлы не находит, сразу ОК 50. Хотя WP, WDC и фаталл все прекрасно видят в любых комбинациях.

Wicked
25.01.2022, 17:22
Проверил на реале. Идет без проблем, воспроизводил через Z-Controller с SD карты 256MB. Карту отформатировал в FAT, размер кластера выбрал стандартный

izzx
25.01.2022, 18:14
C HDD и смука работает
Интересно. Попробую с дискетки.
Вот тут ещё две версии от сегодняшнего числа
https://drive.google.com/drive/folders/1O3lc78s14pODtOaCEVfzJ83GNnz5ppwr?usp=sharing

Упд. Попробовал все возможные варианты запускать с дискетки. Всё работает.
Ну хотя бы у тебя один вариант рабочий есть.

Я обычно через TRDN запускаю. Но пробовал и из TRDOS просто RUN.

Упд. Выложил ещё третий вариант на сегодня

Evgeny Muchkin
26.01.2022, 00:18
Есть подозрение, что проблема у меня аппаратная. Не ломай в коде ничего :)

izzx
26.01.2022, 10:17
В эмуляторе проверил: с NEMO комп перегружается по кругу, с NeoGS карту определяет, но потом зависает на чтении порта #BB.
Подозреваю, что нельзя грузить звук в NGS и одновременно пользоваться картой.

reddie
26.01.2022, 15:05
Подозреваю, что нельзя грузить звук в NGS и одновременно пользоваться картой.
Это и предполагалось =) что "классический" GS, что Neo - оба играют музу через проц. Либо играть, либо грузить.
Хотя у Neo есть _типа_ дма-режим для быстрого обмена, но в нём тормозится проц GS. Для звука тоже не подойдет.

izzx
26.01.2022, 16:30
Либо играть, либо грузить.
Да, но с NGS ещё смешнее. Мы пытаемся давать ему команды чтения с его карты, и одновременно команды на загрузку сэмпла. Вперемешку, так сказать. Тогда бы уже надо дать команду: сам загрузи такой то файл со своей карты.
Вот в WP намекают на то, что нельзя сразу:

https://pic.maxiol.com/thumbs2/1643203772.1597373949..jpg (https://pic.maxiol.com/?v=1643203772.1597373949..jpg&dp=2)

Wicked
27.01.2022, 17:38
Это и предполагалось =) что "классический" GS, что Neo - оба играют музу через проц. Либо играть, либо грузить.
Хотя у Neo есть _типа_ дма-режим для быстрого обмена, но в нём тормозится проц GS. Для звука тоже не подойдет.

WildPlayer+Z-Controller с SD карты играет без прерываний, подгружает в реальном времени (на видео 14Мб WAV файл, почти 6 минут музыки стерео, 22050Hz). Т.е. она грузит и играет одновременно, GS у меня 512Мб, памяти маловато для всего семпла.


https://youtu.be/VBYVj0vrjTk

Надеюсь ютуб за музыку не забанит )

reddie
27.01.2022, 18:59
памяти маловато для всего семпла.
Памяти чего, компьютера? Дак в этом и смысл: сварганить "плеер", подгружающий кусками аудио/видеоданные и на ходу кидающий их в GS, без ограничений по размеру.

Evgeny Muchkin
27.01.2022, 20:15
izzx, докладываю. Проблема была у меня. Решение пришло после очередной рюмки бренди ;)

В GMX была зашита, как оказалось, некорректная прошивка, в которой при работе с расширенным экраном происходило ужос много чего непонятного. Глючило страшно, снег по экрану, GMXCOMf выключал компьютер ;) , утки почти не бегали.

Прошил проверенную прошивку из темы про GMX. Утки забегали, залетали, заныряли. Очень круто! Спасибо! :)

Прошу прощения, что навел туману. :)

izzx
27.01.2022, 20:47
Утки забегали
Хорошо, оказывается, есть стабильность. Не совсем понятно почему у меня в эмуле иногда глючило, может, потому что баловался с прерываниями. Решил, что во время определения устройств прерывания лучше отключать, а во время чтения разрешать.
Значит, ничего не мешает играть музло и читать диск при включенных прерываниях и расширенном экране. Со звуком, правда, ещё научиться надо.
Сейчас включал через WP проигрывание wav со смука - играет и правда параллельно загрузке, но иногда спотыкается, где-то я не так нажимаю.
Можно устанавливать CPM на жёсткий диск, если написать дрова.

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


Памяти чего, компьютера?
Не, именно памяти GS меньше, чем сэмпл, но играет.

reddie
28.01.2022, 08:45
именно памяти GS меньше, чем сэмпл, но играет
У меня подозрение, что играет он в режиме ковокса. Могу ошибаться.
Если же реально идет засылка сэмпла в GS - вот он, готовый плеер =) Остается выдрать и приспособить.

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


GS у меня 512Мб
А какой GS? Старый классических из 90-х, или новодел по типу NeoGS? Во втором случае обмен с картой реализовать в разы проще.

Wicked
28.01.2022, 11:09
Классический GS. Да я тоже думаю, что он потоком в режиме ковокса гонет

izzx
28.01.2022, 13:49
У меня подозрение, что играет он в режиме ковокса
Похоже что не похоже. Когда загрузка файла прекращается, полоски не бегают, а музыка ещё доигрывает, тогда прекращается вывод в порт данных #B3.

Wicked
29.01.2022, 13:48
Конвертнул интро всем известного сериала:


https://youtu.be/acPt6bm2iI0

Файлы для проигрывателя:

https://cloud.mail.ru/public/z5U3/GHs1NY72t
https://cloud.mail.ru/public/pLNx/4qaxoXE1v

izzx
29.01.2022, 19:02
Можно сделать плеер с возможностью выбора файликов на диске, для удобства. Слепить звук и видео в один файл, но сначала научиться играть звук с подгрузкой.

Wicked
04.02.2022, 08:06
Идея хорошая, но в первую очередь лучше попытаться победить ограничение на размер файлов звука и видео... Сжатие особо не критично, т.к. сейчас емкие носители информации не особая проблема.
Izzx а ты экспериментировал с разрешением 640х200?

izzx
04.02.2022, 09:44
лучше попытаться победить ограничение на размер файлов
У меня есть ещё часть исходников от WDC, но как я понял, там только драйвер устройств ATM, SMUC, NEMO. Для ZC не видать. Но главное, нет драйвера для самого FAT.
Как альтернативный вариант, можно записать на флешку файл без всякой системы и потом просто читать по порядку. Но уже не так интересно. Да и это ещё надо научиться.
В общем, других готовых драйверов пока нет.

экспериментировал с разрешением 640х200?
Нет ещё. Тут скорости хватит на 7-8 кадров максимум, потому что уже получится 32256 байт на кадр. Но в принципе, пробовать можно.

Упд. Думаю, надо взять не WDC, а WP, и приспособить его.

Упд. На сайте автора есть исходники для WDC версии 1.1 http://budder.narod.ru

izzx
12.02.2022, 20:10
Новая надежда. Думаю, другой драйвер не понадобится. Научился читать секторы с текущим. То есть, можно не делать открытие файла с построением таблиц, а просто узнать первый сектор и читать всё подряд. Для начала, без учёта возможной фрагментации файла и с фиксированным размером кластера. Потом можно это учесть.
Надеюсь, скоро побегут гигабайты видео.
Ещё со звуком не разобрался.

izzx
14.02.2022, 20:15
Можно сказать, что более длинное видео работает. Пока что запускал 30 мегов. Но, думаю, и больше проблем не будет.
Посмотрел как играет звук WP. Он грузит в GS свой код длиной около 512 байт по команде #14, а потом запускает его командой #13. И начинает запихивать данные.
Потом ещё недокументированную команду #FF подаёт в завершении.
Можно, конечно, этот код умыкнуть. Но, может, надо сначала спросить у автора.
Надеюсь, Евгений щас как сделает форк и как запилит свой движок ). И ничего выдирать не придётся.

Evgeny Muchkin
15.02.2022, 11:03
Можно, конечно, этот код умыкнуть.
Умыкнуть и потом спросить :) Budder добрый, думаю, он не будет против :)

izzx
18.02.2022, 19:20
Итак, удалось собрать плеер, который теоретически может играть хоть двухчасовое видео.
Благодаря гениальному коду, взятому из прог:

FATALL v 0.25 (by savelij) - Драйверы FAT и устройств
Wild Player v0.333 (by Budder/MGN) - Звук через GS

Плеер я выложил в общую папку, а исходники пока нет.
Кстати, ничто, кроме лени, не мешает сделать плеер под обычный ZX комп.

Пока что ограничения: файлы только не фрагментированные, fat32, размер кластера 4096.
Видео можно остановить, но перематывать нельзя.

Сделал тестовое видео на 3.5 минуты, которое рендерилось на моём компе минут 40 ).
Исходный ролик был паршивого качества, зато духоподъёмный. Иногда пролетают белые кадры - это потом исправится.
Ну и звук не стал точно подгонять.

Главная проблема - синхронизация видео со звуком. Как запустить их одновременно я придумал, а дальше они сами по себе.
Можно ли сделать синхронным видео на два часа - вопрос.

Формат файла ещё не устоялся, так что слишком много роликов пока не делаем.


https://youtu.be/CORPwd4OEE4

reddie
18.02.2022, 20:21
даешь Пугачеву в следующем ролике! =))


Главная проблема - синхронизация видео со звуком.
Неидеальный, но самый простой способ - дропать кадры, подтормаживая или убыстряя вывод под звук.
То бишь аудио с вмонтированными маркерами (ну или банально счетчик секторов) служит ориентиром для позиционирования видеоряда.
Примерно так оно и на писюке работает: каждый наблюдал фризы, а звук при этом продолжает играть. Звук-то важнее, его затыки сразу слух режут =)

izzx
18.02.2022, 22:01
даешь Пугачеву в следующем ролике! =))
Как щас помню: "треснет зеркало в прихожей, на гитаре лопнут струны".


аудио с вмонтированными маркерами (ну или банально счетчик секторов) служит ориентиром
Пока не понимаю, как можно сделать. Сейчас так: сначала грузим N кадров в звуковую, она после заполнения своего буфера на необходимый минимум начинает играть и одновременно подгружать ещё с запасом. Но с запасом я уже не отправляю, а отправляю по 1104 байта, сколько должно хватать на кадр. Не известно, какой байт в данный момент играет карта. Хоть известно сколько кадров всего прошло.
Пока что выход подгонять общую длину звука.

Wicked
19.02.2022, 18:53
Не удержался, конвертнул клип Caravan Palace - Lone Digger

https://cloud.mail.ru/public/rA3q/sz3ui698n


https://www.youtube.com/watch?v=cMdq9Nc8zXE

P/S да, больше всего времени уходит на покадровую конвертацию...\
P/S2 белых кадров не заметил

izzx
19.02.2022, 21:51
Я свой ролик перезалил, теперь нормальная версия.

https://youtu.be/SAQC0etb7g0
Что характерно, для эмулятора пришлось сделать скорость звука 99%, а для реального компа звук и так хорошо попадает.
Также утилиту подправил, теперь она сама обрезает заголовок звука. Меньше работы.

Идея: можно записывать прохождения игр в эмуле и потом кодировать картинки без дизеринга. Тогда качество будет почти родное, я так думаю.

Ещё подумал: можно сделать звук стерео.

На счёт видео 640*200: думаю, получится максимум 6 кадров/с, а качества прибавится не очень много.

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


белых кадров не заметил
Да, это иногда при кодировании бывало. Сейчас поправили.

reddie
19.02.2022, 23:09
можно записывать прохождения игр в эмуле и потом кодировать картинки без дизеринга
Дак эмуль же сам умеет отписывать видео. Или я не понял замысла?

izzx
19.02.2022, 23:31
эмуль же сам умеет отписывать видео
Унреал не умеет, по-моему. А вообще, я говорил о том, что если в видео на спеке показывать спековскую же графику, то чёткость будет стремиться к максимальной.

reddie
20.02.2022, 09:18
если в видео на спеке показывать спековскую же графику, то чёткость будет стремиться к максимальной
С такой задачей проще на самом Спеке видео и делать, дергая скрины =)) Повесить на прерывания или по факту смены кадра процедуру записи экрана на диск (CF или куда там), а потом обратно загружать.
Анреал вроде как может отписывать видео... на крайняк, можно воспользоваться сторонними утилитами для записи виндового экрана.

izzx
03.03.2022, 20:34
Попробовал сделать видео стандарта UHD (640*200). Качество картинки всё-таки заметно лучше, чем 160*200. Особенно на мелком тексте видно.
Стабильно идёт 6 кадр/с, а 7 кадров уже немного не успевает. Думаю сделать 5 кадров, потому что 50/6 ровно не делится, получается не стандартная скорость.
Ещё надо сделать звук не только 11025 моно, но и 22050 моно. Или же 11025 стерео. По размеру одинаково.
По-моему, 22050 моно звучит лучше, чем 11025 стерео. Так и должно быть в теории.

reddie
03.03.2022, 21:39
По-моему, 22050 моно звучит лучше, чем 11025 стерео
Как бы да... до 15 КГц люди с более-менее оставшимся слухом частоты хорошо улавливают =) некоторые до 20. А выше 22 разницу на бюджетной аппаратуре никто не услышит.
Почему для GS выбрали нестандартные 37 КГц, до сих пор не пойму. Разве что так было проще схему слепить. По большому счету, там вдвое можно было снизить частоту выборки.

kox
04.03.2022, 20:23
Частотный диапазон сигнала нужно делить на от частоты дескретизации.

reddie
04.03.2022, 20:28
Частотный диапазон сигнала нужно делить на от частоты дескретизации
"вдвое", имелось в виду? да, но все равно 37.5 (или сколько там в GS) нестандартное число =)

kox
04.03.2022, 21:54
Да, имелось ввиду делить на 2.)

izzx
05.03.2022, 21:44
Звук 22050 не получился. Работает, но не стабильно как-то. На эмуляторе записал пример.
После экспериментов оставил 11025 моно.
Сделал второй формат, 640*200, 5 кадров. Этакое слайд-шоу. Зато качество!

В первом ролике 22050 герц, в остальных 11025:

https://youtu.be/SvAWGEBDmfk


https://youtu.be/ggACVcdqiOs


https://youtu.be/DecUASu8d3A


https://youtu.be/3UqB8PiULgM

Evgeny Muchkin
06.03.2022, 12:49
Круто нереально!

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

А что за проблема с 22050?

izzx
06.03.2022, 21:38
А что за проблема с 22050?
Проблема подобрать оптимальный размер порции звука, подгружаемого с каждым кадром. Для 11025 герц подобрал, но надо проверять на длинном ролике. Например, часовом ). Если порцию сделать чуть меньше, то буфер успеет опустеть, и звук будет заикаться, а если чуть больше, то буфер переполнится и будет притормаживать картинка. А на 22050 в два раза больше поток, быстрее виден результат.
В WP звук грузится порциями по 2048, а тут я подобрал опытным путём размер в 1112 байт. И, если грузить такими неровными порциями, то иногда, наверно, какой байтик может потеряться. Тогда слышны щелчки, но главное, размер порции звука, реально загруженного, может плавать. Но тут я не уверен.
В теории бы должно 11025/10 кадров = 1102 байта на кадр. Но у меня почему-то пока прижилось 1112, проверено практикой.
В общем, может ещё проведу опыты и найду оптимальное значение для 22050 герц.

CodeMaster
07.03.2022, 09:07
Попробовал сделать видео стандарта UHD (640*200). Качество картинки всё-таки заметно лучше, чем 160*200.
Мощная штука. Хайпа немерянно ;-) Практического применения не вижу асолютно (если только вставка анимешек между подгрузками уровней, как в играх конца 90-х на ПЦ), но продолжай пилить, смотрится очень... необычно :-)

reddie
07.03.2022, 10:29
Практического применения не вижу асолютно (если только вставка анимешек между подгрузками уровней
Почему бы и нет... в версиях именно для GMX, да с поддержкой "безразмерных" файлов, вполне можно для зрелищности =)
Да даже для стандартного экрана с размером 6КБ, только там будет ч/б дитеринг, зато фпс вырастет.

izzx
07.03.2022, 14:36
если только вставка анимешек между подгрузками уровней
Да, хороший вариант. Можно и саму игру запускать с FAT через fatall, например.
А ещё бывают муз. клипы, сделанные в такой технике, с медленным fps. Это такой художественный эффект получается задаром.



Да даже для стандартного экрана
Может соберусь сделать для обычного экрана, да ещё цветной вариант. Вячеслав М. же делал с дискеток.

CodeMaster
07.03.2022, 15:56
Почему бы и нет... в версиях именно для GMX,
Потому, что GMX для Скорпа может чуть поболе, чем SMK для БК.


А ещё бывают муз. клипы, сделанные в такой технике, с медленным fps.
Ну, только если клип эксклюзивный, то да, а если перегонка видео как тут, то так себе идея - на один раз.

izzx
07.03.2022, 17:32
а если перегонка видео как тут, то так себе идея - на один раз
Конечно, нужна графика, сделанная специально под этот экран. Или похожий. Да где ж её взять.

Sandro
07.03.2022, 17:36
Потому, что GMX для Скорпа может чуть поболе, чем SMK для БК.


А SMK для БК может чуть поболе, чем GMX для Скорпа. "Крокодил более зелёный, чем длинный", блин. Это несравнимые устройства. Общего у них только то, что они заодно ещё и увеличивают доступную память.

CodeMaster
07.03.2022, 17:47
Общего у них только то, что они заодно ещё и увеличивают доступную память.
Общее у них то, что они также редки как крокодилы на улицах российских городов, для тех кто не понял. Я мог бы сравнить GMX с AZ, но он вообще полумифический пока, и вероятность его встретить даже ниже чем у динозавра.

reddie
07.03.2022, 18:03
SMK для БК может чуть поболе, чем GMX для Скорпа
Все же SMK не дает (не имеет) улучшения графических режимов, а это одна из основных его (GMX) фишек.
Другое дело, что их реализация в GMX могла быть и получше. Особенно если бы прислушивались к пожеланиям кодеров/пользователей/демоделов.
Вместо малоприменимого в реальности атрибутно-аппаратного мультиколора можно было сделать 16 цветов на точку, например.
А для стандартного разрешения, если не ошибаюсь, там и вовсе 256 бы было, если воткнуто два модуля памяти.

Sandro
08.03.2022, 04:25
Все же SMK не дает (не имеет) улучшения графических режимов, а это одна из основных его (GMX) фишек.

А почему контроллер дисков должен улучшать графику? Вот чего я не пойму. С тем же успехом можно к GMX предъявлять претензии, что у него нету IDE интерфейса.

reddie
08.03.2022, 07:12
А почему контроллер дисков должен улучшать графику? Вот чего я не пойму
Ну дак было заявлено, что SMK для БК это круче, чем GMX для Скорпиона, хотя у каждого свои преимущества.
А главное - совершенно разный функционал. Из общего разве что расширение памяти компа.
Тем более дисковый (FDD) контроллер уже вмонтирован в Скорпион, а остальные накопители подключаются через другие платы.

izzx
18.03.2022, 20:33
1. Теперь нормально работает звук 22050 герц Моно в режиме 10 кадр/с. На каждый кадр уходит 1124*2 байта звука.
Проверял на ролике длиной 18 минут, в эмуле.
2. Для режима 5 кадр/с звук остался 11025 герц. И 22050, в принципе, работает, но по-моему, комп иногда не успевает загрузить в GS 1124*4 байт звука за кадр. Надо же за раз в два раза больше грузить, потому что кадров в два раза меньше. А загрузка в GS будет помедленнее,
чем загрузка просто в память. С одной стороны, общий объём примерно тот же, но, видимо, GS легче забирать меньшими порциями?
Не понятно. Ну да ладно, 5 кадров всё равно шутошный режим.
3. Заметил, что качество звука портится, если менять его скорость. Во всяком случае, с помощью софта, что у меня есть, так получается.
Так что, в примере оставил как есть, но теперь не точно совпадает с видео ). Можно менять частоту кадров исходного ролика, если очень надо.
4. Плеер научился ходить по папкам. Теперь можно закидывать видео не только в корень.
5. Звук в Bad Apple плотный и зачем-то амплитуда выкручена на максимум. Можно сделать более подходящие примеры, демонстрирующие кристальное качество звука ).

Вот старый ролик, но теперь звук 22050 и 100% скорость. Разница должна быть слышна:


https://youtu.be/KnKJ7_hc_kk

Evgeny Muchkin
20.03.2022, 16:21
Нет слов! Офигенски!

reddie
20.03.2022, 17:28
Можно сделать более подходящие примеры, демонстрирующие кристальное качество звука )
Может, и в этом дело, может, в тройном перекодировании gs-эмуль-ютуб, но вместо высоких частот жуткое шипение.
Низкие - да, качественно долбят. Но на 22 КГц совсем не тянет... хотя намного лучше, чем первая версия.

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

Послушал оригинал (по ссылке с ютуба) - да, это исходник такой. Есть версии с более качественным звуком.
Было бы интересно сконвертить под родной спектрумовский экран (с ч/б дитерингом) вот эту версию, для черно-белого самое то:


https://www.youtube.com/watch?v=9Xz4NV0zsbY

izzx
20.03.2022, 18:18
Может, и в этом дело, может, в тройном перекодировании gs-эмуль-ютуб, но вместо высоких частот жуткое шипение.
У меня слух не очень, но по-моему да. Высокие частоты через GS уже не те получаются, чем если просто в плеере под Win слушать. А в записанном видео ещё похуже. Но на реальном компе получше, чем в эмуляторе. Но всё равно глуховаты получаются. Оно как бы от 11 герц отличается, но не то чтоб очень сильно.


Было бы интересно сконвертить под родной спектрумовский экран (с ч/б дитерингом) вот эту версию, для черно-белого самое то:
Да, должно хорошо получится.

izzx
26.03.2022, 20:52
1. Оказывается, скорость звука через WP примерно 98%. Поэтому, получаются небольшие нестыковки.
2. Сделана попытка подстройки скорости воспроизведения под звук. Некоторые паузы между кадрами пропускались. Значения подобраны экспериментально. В целом работает на 640*200 и 256*192, но для режима 160*200 и 10 кадров лишних пауз нет. Нечего пропускать. Если сделать звук 11025, то может быть. Решил не применять такой метод. Качеством звука жертвовать нельзя. Оставил как было.
3. Звук должен стать лучше. Может я перепутал, может в инструкции к плееру ошибка, но звук 22050 Моно лучше звучит в режиме 11025 Стерео. Но зато съедает больше тактов на загрузку. Видео 160*200 уже не совсем успевает...
4. Добавлен формат для стандартного экрана ZX.
5. Ролик BA Metal сделан в цветном режиме, хотя сам он ч.б. Так лучше выглядит, чем версия чисто ч.б.
6. Подстройка нового видео сделана через частоту кадров исходного ролика. Путём сложнейших расчётов на калькуляторе подобрана частота 29,4 кадра. Примерно совпадает, но можно сделать и точнее.


Это обычный ZX экран и новый улучшенный (наверно) звук:


https://youtu.be/yGB8acLAZSI

reddie
27.03.2022, 09:02
Это обычный ZX экран и новый улучшенный (наверно) звук:
Во, то, что нужно =) Изображение вполне приемлемое за счёт изначально подходящей "палитры".
По идее, fps можно поднять, экран-то намного меньше, чем расширенный GMX, но и так неплохо.
Звук, насколько могу судить по прослушке на динамике мобилы, довольно чистый, верхи улавливаются.
Видео чуток отстает от звука, хотя это может быть субъективным ощущением из-за частоты кадров.
Наиболее заметно расхождение на певичке, артикуляция визуально не совпадает со словами.
Видимо, дело реально в образующемся "пинге" из-за небольшого fps. В целом, не критично.

izzx
31.03.2022, 11:17
Последнее видео надо было сдвинуть на кадр, так лучше совпадает со звуком. Уж не буду перезаливать.

Попробовал сделать плеер "классик", который только для обычного экрана и обычного ZX. Но работает это в турбо режиме. В режиме Композит работает, но звук чуть сдвигается. В режиме Пентагон немного не успевает, видимо, - через пару минут звук срывается. Странно. Может потому, что при работе этой версии не включена страница DOS. Если сделать звук похуже, 11025 герц, то будет стабильно, я думаю. Если кому не лень, можете потестировать на обычных компах версию Классик. Но нужна турбо.

Ещё эксперименты делал:
Частота кадров 25 в режиме турбо - немного не хватает мощи компа.
Частота 10 кадров и на 3.5 мегагерц - опять немного не хватает тактов.
Через контроллер Nemo в эмуляторе не смог запустить.

Заметил, что в режиме 160*200 некоторые кадры будто режутся лучом. Но на записи видео, если смотреть покадрово, ничего такого нет. Может, оптический обман из-за частоты 10 кадров?

Упд. На частоту 10 кадров при 3.5 мегагерц и звуке 11025 должно хватить производительности.

reddie
31.03.2022, 13:22
Но на записи видео, если смотреть покадрово, ничего такого нет.
А без записи где смотрелось, в эмуляторе или на реале? Убедиться все же стоит на реале. Желательно кинескопном =)
На котором ход луча, вернее, смена кадра по ходу луча, будет стопроцентно видна, если программа работает без VSync.
Имею в виду, что смена кадров происходит по факту их загрузки, без ожидания прерывания.

В идеале, конечно, стоит заморочиться с потоком, подстраивающем частоту кадров под скорость компа.
Выглядеть это будет как пропуск кадров (падение FPS), когда мощности не хватает на полновесный объем данных.
При этом звук должен стабильно работать и не рваться. В общем, чтобы мощь компа влияла только на FPS, как в играх на PC.
Для этого наверняка придется переписывать драйвер, сидящий внутри GS, или вообще менять принцип проигрывания.

izzx
31.03.2022, 13:47
А без записи где смотрелось, в эмуляторе или на реале? Убедиться все же стоит на реале. Желательно кинескопном =)
И в эмуляторе, и на кинескопном реале замечаю. На более старых видео не заметно. А на BadApple мультяшном в конце особенно видно, когда вертикальные "шторы" сдвигаются влево-вправо.

izzx
02.12.2023, 21:06
Теперь создать ролик можно одним движением мышки. Просто перетащить видео на файл vid2zx.bat.
Сделал на основе батника для Эвы (автор по-моему DimkaM).
Ну и благодаря автору DaDither можно регулировать качество видео на свой вкус.

Сначала я сделал версию 4.01, в которой преобразование кадров в нужную палитру и размеры происходило с помощью ffmpeg. А потом из bmp в формат gmx конвертировала моя прога. Но качество мне не понравилось ).

Здесь версия 4.02. Применил метод Atkinson, а также увеличил яркость на 10%. Шума стало меньше, на мой взгляд.
Также плеер немного поправил, чтобы он мог работать на разделах с разным размером кластера. Но это надо проверять.

Когда-нибудь, возможно, попробую выводить звук на ковокс, тогда можно будет обойтись без ГС.

Видео:

https://youtu.be/a_tSfwZf4TY

izzx
29.12.2023, 18:25
Сделал версию 5, которая выводит звук через ковокс LPT или GS.
Плюсы:
Звук точно синхронизирован с видео.
Можно ставить на паузу (в будущем и перемотку можно сделать).
Минусы:
Качество звука пока хромает, но наверное можно немного стабилизировать. Главное сделать более равномерный вывод в порт.
На реале проверил через SMUC. В эмуле через ZC тоже работает, но успевает выдать чуть меньше байт звука. Возможно, на реальном компе будет наоборот.

Лежит в папке Video05. Ссылка в подписи.

Upd. Немного улучшил звук при работе через smuc.

Xela
03.01.2024, 16:12
выводит звук через ковокс LPT или GS
программа сама определяет какой Covox подключен (возможно ли это вообще?) или просто шлет звук сразу и в #DD и в #B3?

izzx
03.01.2024, 17:39
программа сама определяет какой Covox подключен (возможно ли это вообще?)
Надо кнопкой выбирать. Определить есть ли ГС в принципе можно. А LPT вряд ли. Может ещё быть и SounDrive, но там я не знаю можно ли сделать вывод в два канала сразу, потому пока не добавил. Звук то моно тут.

Xela
03.01.2024, 17:45
Может ещё быть и SounDrive
SounDrive умеет обычным Covox'ом прикидываться

izzx
03.01.2024, 19:25
Можно любой порт добавить. Лишь бы в один какой-то выводить. Попробовал в эмуле порты 0f и 4f - есть звук слева или справа. А как переводить SD в режим моно что-то не нашёл. А звук в одном ухе как-то не очень красиво.
Наверное у всех давно есть ГС, так что не очень и надо ).

Xela
04.01.2024, 00:31
А как переводить SD в режим моно что-то не нашёл.
SD (версия 1.51 как минимум) имеет поддержку портов обычного COVOX'а и автоматически (как я понял из описания) отправляет звук в оба (лево и право) канала.

еще вариант сделать как в программе ultrasonic:

https://i.postimg.cc/65tBDqWp/image-8.png (https://postimages.org/)

можно выбрать вообще любой порт COVOX'а (соотвественно включая GS) и дополнительно какие команды в какие порты отправить (или не отправлять) до начала проигрывания и после него - таким образом можно сначала перевести GS в режим COVOX, проиграть видео, потом перевести GS в обычный режим.

Хотя, соглашусть - все это от лукавого... с учетом того, что программа рассчитана только на Scorpion GMX (или простой Скорпион, если про .ZXV говорить) то тут вариантов не много - GS или Covox #DD - в таком случае проще выбраит один из двух вариантов, и не заморачиваться. можно пожалуй #FB добавить для владельцев SD или MultiSound'а

з.ы.

Надо кнопкой выбирать.
я вроде скачал последний архив с ГДрайва и в файле Hystory вижу версию 0.1.6, но при запуске все равно показывает 0.1.5 и нет выбора GS/LPT, поэтому и задал вопрос.

izzx
04.01.2024, 11:40
я вроде скачал последний архив с ГДрайва
Должен быть файлик "VIDEO05 2023 12 31.ZIP". Там по-моему всё правильно. А может просто привязался образ смук со старым плеером? Надо размонтировать.

Xela
04.01.2024, 11:57
А может просто привязался образ смук со старым плеером?
внезапно да) надо быть внимательнее. .ZXV, как я понял, в версии 0.1.6 не поддерживается?

izzx
04.01.2024, 14:52
.ZXV, как я понял, в версии 0.1.6 не поддерживается?
Да, пока что отключил. Думаю вернуть потом. А GMM под вопросом. Можно ли вернуть. Что-то память начала кончаться.
Ещё бы надо поддержку фрагментированных файлов добавить. Тут уже все страницы памяти придётся использовать.

LW
04.01.2024, 16:58
Тут уже все страницы памяти придётся использовать.
Если для построения таблицы кластеров, то вовсе не обязательно, при условии что есть ~15к тактов свободных, но это при сильной дефрагментации, а в большинстве случаев и того меньше (сравнимо с выборкой значения из таблицы).
Плюс к этому можно немного оптимизировать текущий драйвер смука.

izzx
04.01.2024, 17:40
Если для построения таблицы кластеров
Да. Я прикинул, что памяти 2Мб хватит примерно на файл в 2 Гб. Ну то есть одной странички 16к хватает на файл 16 мегов.
В предыдущих версиях, когда играло через модуль в ГС, прокатило бы просчитывание следующего кластера. Такты свободные вроде есть.
А сейчас через ковокс, надо постоянно подкидывать звук в порт. Тут надо исхитряться, если заранее не сделать таблицу. А так сейчас свободно чуть не целое прерывание между кадрами.
Вот такое чтение сектора у меня сейчас:
read_sec_smuc ;чтение сектора с одновременным выводом звука через smuc
exx
ld bc,(snd_port) ;порт для звука
ld hl,(snd_adr_cur) ;адрес
exx
ld a,#20
read_sec_smuc1
exx
outi ;байт звука
ld (snd_adr_cur),hl
exx
dup 8
ld b,d
ini
ld b,e
ini
edup
dec a
jr nz,read_sec_smuc1
exx
nop
outi ;байт звука
ld (snd_adr_cur),hl
exx
ret


Через каждые 16 байт чтения выводит один байт звука.

LW
04.01.2024, 17:57
Ну то есть одной странички 16к хватает на файл 16 мегов.
А если кластер будет равен 512 байтам? Да и заполнить таблицу размером почти в 2 мегабайта, то все-таки время.

Вот такое чтение сектора у меня сейчас:
Видел я эту процедуру. Вывод в ковокс, можно организовать в любой процедуре
Оптимизировать в других местах можно,
во-первых все call out_c_a/call in_a_c заменить на out (c),a/in a,(c) это уже экономия на каждом вызове 27 тактов
во-вторых при мультисекторном чтении нет нужды читать регистр состояния после чтения каждого сектора
ну и наверняка есть еще моменты где можно и ускорить и сократить код, уж слишком глубоко код не смотрел.

izzx
04.01.2024, 19:18
А если кластер будет равен 512 байтам? Да и заполнить таблицу размером почти в 2 мегабайта, то все-таки время
Да, это я для кластера 4096 прикидки делал. А для 512 будет пол гига, получается.
Ну и обсчитывать файл 2 гига будет, конечно, не быстро. Ну это так, с запасом. А если запускать конвертирование такого файла, то это на ночь.



во-первых все call out_c_a/call in_a_c заменить на out (c),a/in a,(c)
Кстати да, а я не догадался.
Ну тут надо подробнее будет раскурочивать драйвер фат. Он же у меня как кусок кода добавлен. Везде вставлять вывод в ковокс.
Видал исходники, но из незнакомого ассемблера не мог перенести. Да и не понятно последняя ли версия.

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


SD (версия 1.51 как минимум) имеет поддержку портов обычного COVOX'а и автоматически (как я понял из описания) отправляет звук в оба
Ссылочку на описание можно?

LW
04.01.2024, 20:33
Еще есть ошибка с выводом каталога, проявляется на каталогах с количеством файлов примерно от 1000


Ну тут надо подробнее будет раскурочивать драйвер фат. Он же у меня как кусок кода добавлен.
С куском кода же крайне неудобно работать. Ни толком отредактировать, ни перенести в другие адреса...

izzx
05.01.2024, 13:36
Еще есть ошибка с выводом каталога
Если это про пропадающий курсор, или про дубликаты имён, то поправил. А вообще сейчас отображается максимум 255 файлов в папке.

LW
05.01.2024, 14:24
Если это про пропадающий курсор,
да, вроде оно


А вообще сейчас отображается максимум 255 файлов в папке.
щас набегут, скажут давай больше :)

Xela
05.01.2024, 17:12
Ссылочку на описание можно?

Это оказались какие-то мои фантомные воспоминания... Перечитал еще раз всю инфу про SоunDrive - да, v.1.51 умеет перехватывать обращения к портам COVOX'а (как #FB, так и #DD) но про автоматическое стерео ничего там нет.

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


щас набегут, скажут давай больше
255 папок, по 255 файлов в каждой.. это еще наконвертировать нужно столько)

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


Оптимизировать в других местах можно,
а если использовать R8FAT? или наоборот будет медленнее работать?

LW
05.01.2024, 18:01
а если использовать R8FAT?
скорости не хватит, особенно если читать в 3е окно
плюс во время чтения сектора идёт вывод в ковокс, а это вообще исключает применение функций теневика

Xela
05.01.2024, 18:11
скорости не хватит,

вообще исключает применение функций теневика

понил...

izzx
05.01.2024, 19:41
при мультисекторном чтении нет нужды читать регистр состояния после чтения каждого сектора
драйвер сейчас после каждого сектора читает порт FFBE и проверяет бит 7. Это можно выкинуть? А если у человека старый медленный винт?


умеет перехватывать обращения к портам COVOX'а (как #FB, так и #DD)
то есть особого смысла добавлять порт FB нет? Если будут пожелания - добавлю. И максимум файлов в папке могу сделать, скажем, 1024. Но это надо немножка поправлять код.
Главное бы улучшить звук. В эмуляторе сейчас звучит лучше, чем в реальности.

LW
05.01.2024, 20:50
драйвер сейчас после каждого сектора читает порт FFBE и проверяет бит 7. Это можно выкинуть?
Тогда уж проверять еще и DRQ, после сброса BSY.

А если у человека старый медленный винт?
Но если винт настолько старый, что даже спектруму придется ждать, то наверное пора такой винт поменять.

Всё сугубо ИМХО

Xela
05.01.2024, 20:55
то есть особого смысла добавлять порт FB нет?
если вернуть поддержку .ZXV то смысл есть. .ZXV - это же обычные 6912? в таком случае привязки к Скорпиону уже нет, и такие ролики можно будет играть на любом Спектруме с картой по стандарту Zcontroller + Covox. Как-то так.