nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 17 May 2024 07:55



Reply to topic  [ 122 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6 ... 9  Next
Воспроизведение озвученной анимации с ROM-Дисков 
Author Message
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Однако, получилось!

Данный вариант проигрывателя воспроизводит ролик 64x50@10 + 2 строки (0280-02BF / 02C0-02FF) под "титул" и "статус" на каждые 10 кадров. :kruto:

Теперь буду ждать новый образ ROM-Диска по 10 кадров на страницу с выравниванием 0300-7FFF. 8)

Осталось поработать с перемоткой…
И откроем новую тему с чистого листа с презентацией клипа, не рвушего в клочья уши. :dj:


Attachments:
File comment: Производительный рабочий вариант
VHS-64X50_2@10.RKR.zip [589 Bytes]
Downloaded 11 times
10 Apr 2024 14:40
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22746
Location: Silicon Valley
Reply with quote
А чего со звуком? Надобно каждые 4 символа наверное (16 раз на строку) и может быть даже ещё один отсчет звука записать в последний символ, чтобы покрыть перенастройку стека, что между строками (т.е. всего 17 отсчётов звука в каждой строке)?

P.S. Похоже звук всё также в каждом втором символе?

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


10 Apr 2024 15:11
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22746
Location: Silicon Valley
Reply with quote
Вот 10 кадров на страницу со смещением #300 в каждой странице - плеер VHS-64X50-ALIGN#0300.RKR с бегунком вроде играет (хоть и 7.2 FPS) и VHS-64X50_2@10.RKR чего-то тоже играет, но только 7.74 FPS - может статус и титул слишком много времени жрут (знакогенератор всё равно обрезанный и им толком ничего не напишешь - ну разве что прогресс-бар снизу нарисовать) и 32 отсчёта звука на строку это наверное многовато?...


Attachments:
BadApple128x50-7_74_FPS_TAPE300.zip [655.42 KiB]
Downloaded 10 times

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
10 Apr 2024 22:40
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22746
Location: Silicon Valley
Reply with quote
> ну разве что прогресс-бар снизу нарисовать

Вот с прогрессбаром (архив получился на 90 кило больше):


Attachments:
BadApple128x50-7_74_FPS_TAPE300P.zip [745.25 KiB]
Downloaded 11 times

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
10 Apr 2024 23:44
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22746
Location: Silicon Valley
Reply with quote
В последнем плеере каждая пара символов обрабатывается вот так:
Code:
   LDAX   D ; +7=7
   RLC ; +4=11
   STA   08002H ; +13=24
   ORA   A ; +4=28
   RAR ; +4=32
   MOV   B, A ; +5=37
   INR   M ; +10=47
   LDAX   D ; +7=54
   MOV   C, A ; +5=59
   INR   M ; +10=69
   PUSH   B ; +11=80

7.74 FPS это 129 мс на кадр и при 1.78 МГц и 44% ПДП оно примерно даст 128427 тактов на кадр, в котором у нас 1600 пар символов, что даст 1600*80=128000 тактов на саму картинку и 427 тактов на оверхед (0.33%) или 8 тактов на строку, хотя должно быть как минимум 20 (JNZ+LXI SP) - будем считать это ошибкой округления тормозов от ПДП. Если делать звук не отсчёт на пару символов, а отсчёт на 4 символа, то в каждой второй паре выкинется 25 тактов, т.е. 2 пары теперь дадут 55+80=135 или в среднем 67.5 тактов на каждую пару символов, что даст 67.5*1600=108000 тактов на картинку плюс всё те же 427 оверхеда (примерно), что даст 108427 тактов на кадр, что должно дать 9.18 FPS и это сильно веселее :mrgreen:

P.S. Если я доделаю свой Ethernet+RTC, то там всё будет ещё веселее т.к. WizNet предоставляет режим с автоинкрементом адреса - получается нам надо лишь данные вычитывать не заботясь о постоянном увеличении адресов, поэтому 10-тактовые INR M будут больше ненужны, а вместо 12-тактовой связки LDAX D + MOV reg,A можно задействовать 7-тактовую MOV reg,M (адрес источника теперь может быть в HL вместо DE), что даст экономию в 15 тактов на каждый символ или 30 тактов на пару, что даст 37.5 тактов или 60000 тактов на кадр, что с оверхедом (предположим, что он останется таким же) даст в пределе 16.5 FPS :o

P.P.S. Ксати можно сделать свой собственный квазидиск с автоинкрементом адреса для пущей весёлости...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Apr 2024 00:35
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22746
Location: Silicon Valley
Reply with quote
Почему вариант с INTE был быстрее? Попробуем это выяснить - 1 бит звука вместо 25 тактов в случае использования INTE выполняется за:
Code:
   RAL ; +4=4
   JC CPI_DI+1 ; +10=14
   EI ; +4=18
CPI_DI:
   CPI   0F3h ; +7=25 or +4=18
   ORA   A ; +4=29 or +4=22
   RAR ; +4=33 or +4=26 (avg=29.5)
Но это делалось один раз на каждые 4 пары символов или 55*4+29.5=249.5 делим на 4 и получаем примерно 62.4 такта на пару, что даст 1600*62.4=99800 на картинку плюс оверхед (предположим, что те же 427), что выльется в 9.93 FPS (а в реальности было 9.75 FPS, что близко, но чуть меньше т.к. там кадр не разворачивался - только строка). Если сделать 1 отсчёт на 4 символа, а не на 8, то это будет 55*2+29.5=139.5 делим на 2 и получаем примерно 69.8 тактов на пару, что даст 1600*69.8=111600 и при разворачивании кадра (оверхед 427) это будет 9.05 FPS, но скорость будет плавать в зависимости от наличия-отсутствия озвучки...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Apr 2024 01:03
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Мне кажется или звук стал более качественным?

Если вслушаться, напоминает ситуацию, когда эквалайзер захлёбывается и все значения зашкаливают.
Думаю, если варьировать пороговыми значениями и дать голосу солиста больший приоритет, качество станет ещё выше. :roll:

Вариант с INTE, как Вы заметили выше, на Апогее будет мерцать знакогенераторами.
Тем более, на большинстве РК звук - пьезоизлучателе. тогда как порт магнитофона позволяет играться ручками тембра на внешнем усилителе.

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

Вы предлагаете ухудшить качество звука и повысить FPS?
Или это просто размышления?

Думаю, код уже граничит и балансирует на уровне "приемлемый fps с приемлемым звуком". :roll:
Т.е. не вижу большого смысла ухудшать звук ради долевого выигрыша в кадрах.

Для РК вроде уже всё замечательно и годится для презентаций или заставок к играм:
Можно делать те же рогалики с анимированными вставками, что само по себе уже уникально!
Или тот же "Морской Бой" со сценами потопления кораблей (сохранять статус игры, заполнять память кодом плеера, проигрывать, восстанавливать код игры с ROM-Диска и продолжать дальше).

Как Вы верно заметили, бит звука выводится командой RLC с целым кодом в PC0-3 - код знакоместа попадает в порт.
Если кодер видео адаптировать и подбирать символы соответствующим образом, чтобы и знакоместо не искажать, и все четыре бита в COVOX выводить, можем получить звук более мягче? :idea:

P.S.: Спасибо за участие!
На досуге займусь своим кодером видео.

P.P.S. Кстати, отключив ПДП (код 80 в ячейку B1) можно прослушать реальное звучание на полной производительности. :P
(44% времени на ПДП - не шутки! :x )
То есть, как-то особенно обработать звук - никак не получится!
ПДП диктует свои правила! :roll:


11 Apr 2024 02:03
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Предлагаемый Вашему вниманию проигрыватель позволяет воспроизводить звуковой видеоряд непосредственно с ROM-Диска по схеме Апогея с поддержкой до 256 страниц.

Качество воспроизведения примерно такое:


Перемотка клавишами организована крайне примитивно, так как фактически она не нужна.

P.S.: Особая благодарность Shaos, за конвертацию видео и предоставление образа ROM-Диска! :idea:

P.P.S. Shaos перенёс текст этого сообщения в первый пост топика


Attachments:
File comment: Образ с клипом Bad Apple
BadApple128x50-7_3_FPS_TAPE.zip [754.18 KiB]
Downloaded 11 times
File comment: Video Home System - 86RK
VHS-86RK.RKR.zip [583 Bytes]
Downloaded 13 times
11 Apr 2024 10:01
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Думаю, тему можно почистить и перенести ключевые сообщения в новую тему.
Специально там не выкладывал архив ROM-Диска: Всё-таки, не я его сгенерировал. :P


11 Apr 2024 10:13
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22746
Location: Silicon Valley
Reply with quote
Да выкладывай что уж там - всё равно Bad Apple не нами изначально создан ;)

И плеер не забудь вписать в начало каждой страницы ;)

Да, я предлагаю попробовать чуть ухудшить звук и соответственно улучшить FPS (и убрать титул и статус - на них ПДП ведь тоже тратится, а так там было бы F1 и минус 1% от ПДП) - прогрессбар можно сделать опционально полностью программно (как было в одном из предыдущих плееров)...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Apr 2024 10:26
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Shaos wrote:
Да выкладывай что уж там - всё равно Bad Apple не нами изначально создан ;)

Да, я предлагаю попробовать чуть ухудшить звук и соответственно улучшить FPS (и убрать титул и статус - на них ПДП ведь тоже тратится, а так там было бы F1 и минус 1% от ПДП) - прогрессбар можно сделать опционально полностью программно (как было в одном из предыдущих плееров)...
Отключив ПДП и методом тыка потратив пару часов на замедление воспроизведения потока, я в конце-концов услышал, как могло бы звучать в реальности, если бы ПДП не путался под ногами процессора.

На видео я тупо запускаю два эмулятора: Один без звука воспроизводит изображения, а второй - с отключенным ПДП параллельно проигрывает звук. Мнимый двухпроцессорный комп :lol:
То есть там чётко слышно, как могло бы звучать.

Ухудшение звука - тоже имеет свои нюансы и это не так легко сделать.
Придётся снова генерировать очередной ROM (пф-ффф) с новыми fps.
А у меня пока нормального кода для этого нет.

А так, позже я займусь вопросом ухудшением звука и попробую сделать экспериментальный плеер с указанием параметров, если это будет актуально.

Хотя, это и сейчас можно - директивой M:
  • Ячейка 00EB содержит число PUSH'ей на заполнение строки (у меня - 32)
  • Ячейка 00ED содержит длину одной PUSH-цепочки (у меня - 13)
  • С адреса 01B8 начинается шаблон инструкций
Соответственно, сейчас у меня:
Code:
        ORG     001B8H
        ;;;;;;;;;;;;;;;;;
        LDAX    D       ;  7
        RLC             ;  4
        STA     08002H  ; 13
        ORA     A       ;  4
        RAR             ;  4
        MOV     B,A     ;  5
        INR     M       ; 10
        LDAX    D       ;  7
        MOV     C,A     ;  5
        INR     M       ; 10
        PUSH    B       ; 11#80.13
Вам можно попробовать подправить:
  • Ячейка 00EB содержит число PUSH'ей на заполнение строки (запишите 16)
  • Ячейка 00ED содержит длину одной PUSH-цепочки (запишите 20)
Под код:
Code:
        ORG     001B8H
        ;;;;;;;;;;;;;;;;;
        LDAX    D       ;  7
        RLC             ;  4
        STA     08002H  ; 13
        ORA     A       ;  4
        RAR             ;  4
        MOV     B,A     ;  5
        INR     M       ; 10
        LDAX    D       ;  7
        MOV     C,A     ;  5
        INR     M       ; 10
        PUSH    B       ; 11#80.13
        LDAX    D       ;  7
        MOV     B,A     ;  5
        INR     M       ; 10
        LDAX    D       ;  7
        MOV     C,A     ;  5
        INR     M       ; 10
        PUSH    B       ; 11#135.20
Должно сработать.
Но синхронизацию сорвёт, так как старшие биты уже начнут из звука попадать в атрибуты.


Attachments:
Ухудшение Звука.png
Ухудшение Звука.png [ 35.53 KiB | Viewed 879 times ]


Last edited by Alikberov on 11 Apr 2024 11:28, edited 1 time in total.

11 Apr 2024 11:16
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22746
Location: Silicon Valley
Reply with quote
> Придётся снова генерировать очередной ROM (пф-ффф) с новыми fps.

У меня автоматически генерится меньше чем за минуту :)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Apr 2024 11:26
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 327
Location: Tashkent
Reply with quote
Shaos wrote:
Да, я предлагаю попробовать чуть ухудшить звук и соответственно улучшить FPS (и убрать титул и статус - на них ПДП ведь тоже тратится, а так там было бы F1 и минус 1% от ПДП) - прогрессбар можно сделать опционально полностью программно (как было в одном из предыдущих плееров)...
Кстати, а у Вас на "титуле" и "статусе" звук присутствует?
Там - тот же код и ожидает звук.

Мне говорили, что для качественного воспроизведения звука необходимо обеспечить равномерность циклов ПДП.
То есть, получается, нужно не убирать "титул" и "статус", а заполнить все 60 строк. :roll:

Однако, Вы - правы: Только сейчас понял, что "титул" и "статус", хоть и раз в 10 кадров отображаются, но могут вносить свои искажения в звук, если их игнорировать или учитывать.
(Ещё хорошо проверить, как будет воспроизводиться звук в режиме 78x50 строк "узкий экран", когда циклы ПДП будут равномерными - завтра проверю.)

Попробуйте ухудшить звук по скриншоту (синхронизацию сорвёт, если образ видео не адаптирован: Напоминает мятую VHS-плёнку чем-то).


Attachments:
Ухудшение Звука - Срыв кадров.png
Ухудшение Звука - Срыв кадров.png [ 36.45 KiB | Viewed 869 times ]
Ухудшение Звука.png
Ухудшение Звука.png [ 35.79 KiB | Viewed 869 times ]
11 Apr 2024 11:45
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22746
Location: Silicon Valley
Reply with quote
Может тогда пока откатить "презентацию", если там звук фейковый? :roll:

> Кстати, а у Вас на "титуле" и "статусе" звук присутствует?
> Там - тот же код и ожидает звук.

Нет - я не знал, что надо :(
Но всё равно оно же будет играться один раз на страницу - раз в секунду с хвостиком?
Тогда сложнее будет fps видео и samplerate звука считать - лучше бы пусть всё одинаково и равномерно...

> Мне говорили, что для качественного воспроизведения звука необходимо обеспечить равномерность циклов ПДП.

А ты длину пакета ПДП уменьшал? Можно попробовать без F1 сделать - чтобы весь экран был - без дырок, но менять только средние 64x50 (кстати можно наверное предусмотреть режим когда у каждой строки вначале идёт адрес куда её писать - тогда можно частично меняющиеся кадры передавать меньшим количеством срок)...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Apr 2024 21:07
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22746
Location: Silicon Valley
Reply with quote
У меня возникла гениальная мысль! А что если не сдвигать символы туда-сюда для вытаскивания бита звука, а прямо как есть код символа сувать в #8002? т.е. младший бит кода символа будет задавать звук, что сэкономит аж 12 тактов на отсчёт! :o

Как? Может спросить любопытный читатель - а вот как: если внимательно посмотреть на таблицу соответствия пар яркостей и символов для 5-строчного варианта псевдографики РК:
Code:
00: 0x20        --> #20
03: 0x04        --> #04
05: !*          --> #21
06: '*          --> #27
0C: 0x02        --> #02
0F: 0x06        --> #06
13: /*          --> #2F
14: )* >        --> #3E
15: 1* J        --> #4A
16: I* ]*       --> #5D
22: , : \       --> #5C
23: -* ^        --> #5E
26: +* ?*       --> #3F
27: T Т З       --> #7A
28: 3* Э        --> #7C
30: 0x10        --> #10
32: ( <         --> #3C
33: 0x14 "      --> #22
35: Y*          --> #59
36: 2 7*        --> #37
37: *           --> #2A
3C: 0x12        --> #12
3F: 0x16        --> #16
44: ;*          --> #3B
45: X Х У*      --> #75
46: & =* S* Д           --> #64
47: Z Л         --> #6C
48: 4 9*        --> #39
4A: Я*          --> #71
50: L           --> #4C
52: [*          --> #5B
53: %* C* С*    --> #73
55: G* U* V Ц*          --> #63
56: 6 O* О*     --> #6F
57: $ 5* 8 A* Q* W* А* Ч        --> #7E
59: Ж Ш*        --> #7B
5A: @ Щ*        --> #7D
63: Ь           --> #78
64: K* Г* К*    --> #6B
66: D Ы*        --> #79
67: H N И* Н П          --> #70
68: 0 M* Й М*           --> #6D
69: Ю           --> #60
6B: Ф           --> #66
75: E* F Е*     --> #65
76: P Б Р       --> #72
77: B R В*      --> #77
79: #*          --> #23
C0: 0x01*       --> #01
C3: 0x05*       --> #05
CC: 0x03*       --> #03
CF: 0x07*       --> #07
F0: 0x11*       --> #11
F3: 0x15*       --> #15
FC: 0x13*       --> #13
FF: 0x17*      --> #17
то можно увидеть, что для многих пар есть символы как с нулём в самом младшем бите, так и с единицей (помечены звёздочкой), а там где альтернативного кода нет можно выбрать соседний, где оно есть - получается звуком можно управлять младшим битом (в каждом четвёртом символе), а старший бит в ЛЮБОМ символе может быть полностью отдан под возможный цвет и не потребует танцев с бубнами вокруг звуковых отсчётов, когда мы таки сделаем цветные видосики, т.е. теперь будет так:
Code:
        ORG     001B8H
        ;;;;;;;;;;;;;;;;;
        LDAX    D       ;  +7=7
        STA     08002H  ; +13=20
        MOV     B,A     ;  +5=25
        INR     M       ; +10=35
        LDAX    D       ;  +7=42
        MOV     C,A     ;  +5=47
        INR     M       ; +10=57
        PUSH    B       ; +11=68
        LDAX    D       ;  +7=75
        MOV     B,A     ;  +5=80
        INR     M       ; +10=90
        LDAX    D       ;  +7=97
        MOV     C,A     ;  +5=102
        INR     M       ; +10=112
        PUSH    B       ; +11=123
123 такта на 2 пары символов или в среднем 61.5 на одну пару, что даст 1600*61.5=98400 и с оверхедом 427 выльется ровно в 10 FPS :o

P.S. На самом деле если убрать #F1 в начале кадра и #F3 в конце кадра (для равномерности тормозов) ПДП станет жрать больше чем 44% процессорного времени и FPS в итоге будет несколько меньше - наверное порядка 8.9 FPS (что даст звуковой samplerate 7120 Hz)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Apr 2024 21:32
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 122 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6 ... 9  Next

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.