Воспроизведение озвученной анимации с ROM-Дисков

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

Post Reply
maxadler
Writer
Posts: 10
Joined: 30 Jan 2024 16:12

Re: Воспроизведение озвученной анимации с ROM-Дисков

Post by maxadler »

А как быть тем,кто вдохновился идеей и всеже решил собрать себе ром диск для живой ркшки? можно носом ткнуть в материал, как шить что шить чем конвертить? Или я не туда напостил?
User avatar
Shaos
Admin
Posts: 24020
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Воспроизведение озвученной анимации с ROM-Дисков

Post by Shaos »

Чем конвертить в этом топике пролетало - могу пошаговую инструкцию набросать
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24020
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Воспроизведение озвученной анимации с ROM-Дисков

Post by Shaos »

Итак, архив с конвертером приаттачен к первому сообщению этого топика - vhs5t.zip [11.96 КиБ]

Code: Select all

Archive:  vhs5t.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
     3650  2024-04-15 18:07   vhs5t.asm
      439  2024-04-15 18:07   vhs5t.bin
    14063  2024-04-15 18:07   vhs5t.lst
      449  2024-04-15 18:07   vhs5t.rkr
     7492  2024-04-15 18:07   vhs5t-maker.c
     6885  2024-04-14 01:34   rk-pgraph.c
     1024  2024-04-14 01:34   sgr.bin
---------                     -------
    34002                     7 files
Исходники должны собираться где угодно и чем угодно - это утилиты с интерфейсом командной строки (там правда надо libpng иметь и русские буквы через UTF-8 печатаются):
  • rk-pgraph.c конвертирует каждый кадр (чёрно-белый PNG 128x50) в бинарное представление с использованием 5 линий стандартного знакогенератора (sgr.bin)
  • vhs5t-maker.c собирает все кадры вместе (способ запуска: vhs5t-maker raw-audio.r8u frames-subfolder):
    • вызывая предыдущую программу для каждого кадра (кадры FPS 7.5 начинаются с файла 00000001.png и т.д. в подкаталоге задаваемом вторым аргументом)
    • добавляя однобитный звук 6кГц, получаемый из звукового RAW-файла (1-канальный PCM 8-бит без знака 44100 Гц), имя которого задаётся первым аргументом
    • вставляя бинарный плеер в начало каждой страницы (vhs5t.rkr - есть исходник)
    • и используя описание видео из файла с именем description (если есть)
Краткая инструкция по английски есть в самом исходнике vhs5t-maker.c:

Code: Select all

/*
 vhs5t-maker.c - maker of VHS5T videos for RK86 by Shaos

 This code is PUBLIC DOMAIN! Use it on your own RISK!!!

 Build: gcc vhs5t-maker.c -lpng -o vhs5t-maker

 Usage: ./vhs5t-maker [raw-audio.r8u [frames-subfolder]]

 Must have vhs5t.rkr and rk-pgraph binary with sgr.bin in current directory

 Raw file for audio must be mono 8-bit unsigned 44100 Hz

 Frames must have 8-digit name and start with 00000001.png

 You also may have text file description with content for running title

 http://www.nedopc.org/forum/viewtopic.php?f=93&t=22417

 07-APR-2024 - started coding converter for "Bad Apple"
 14-APR-2024 - universal version publicly released
 15-APR-2024 - added optional description for title
*/
Пример файла description (это то, что двигается бегущей строкой над видео - причём все буквы будут переведены в верхний регистр):

Code: Select all

VITAS / SEVENTH ELEMENT / on Radio-86RK Intel 8080 1.777 MHz 128x50 7.5FPS & 1-bit sound 6kHz...
если такого файла нет, то будет использовано описание по умолчанию:

Code: Select all

char description[1024] = "VIDEO ON RADIO-86RK (INTEL 8080 1.777 MHZ) 128X50@7.5FPS & 1-BIT SOUND 6KHZ...";
Получившийся файл romdisk.bin можно положить в подкаталог rk86 эмулятора emu80, в котором в rk86.conf надо поправить размер ромдиска чтобы был по максимуму (8МБ):

Code: Select all

romDisk.sizeMB = 8
и раскомментировать define EXT_ROM_DISK (и закомменить define ROM_DISK если оно было раскомменчено)

Запускать в Emu80 так:

Code: Select all

R,1FF
G
P.S. Повторю описание формата (в 8-мегабайтный ромдиск влезает максимум 5м 41с такого видео 7.5 FPS 128x50 с 1-битным звуком 6 кГц):
Ромдиск Апогея по схеме vinxru делится на страницы по 32 килобайт каждая - в одну такую страницу влезает 10 кадров 64x50 (3200) один за другим, со двигом к концу, чтобы освободить первые 768 байт страницы под плеер (0x0000...0x027F) и 2 спец.строки - статус (0x0280...0x02BF) и титул (0x02C0...0x02FF). Строки располагаются последовательно друг за другом, но каждая строка записана задом-наперёд т.к. копирование в экранную область происходит через указатель стека с помощью команды PUSH. Каждый четвёртый символ своим старшим битом задаёт значение сэмпла звука, который будет послан в магнитофонный выход. В пределах кадра получается 800 сэмплов звука или 8000 сэмплов на страницу плюс ещё 32 сэмпла записаны в строках титула и статуса - т.е. всего 8032 в странице или в среднем 803.2 сэмпла на кадр. Текущая версия плеера выдаёт порядка 7.5 FPS видео (и 6 кГц 1-битного звука), что позволяет записать в 8 мегабайтный ромдиск до 341 секунды (5 мин 41 сек).
P.P.S. Возможно надо поработать над плеером так, чтобы он детектировал на какой машине он запущен (РК, Микроша или Апогей) и соответствующим образом инициализировал видео...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24020
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Воспроизведение озвученной анимации с ROM-Дисков

Post by Shaos »

Последовательность чёрно-белых PNG-картинок 128x50 из произвольного видео можно получить так (в данном случае из видеофайла ahhhhh.avi вырезается кусок длиной 47 секунд начиная с метки времени 3.0 секунды):

Code: Select all

mencoder ahhhhh.avi -ss 3.0 -endpos 47 -o ahhhhh128x50.avi -vf scale=128:50 -nosound -ovc lavc -lavcopts gray:vcodec=mpeg4:vbitrate=2000:keyint=5 -ffourcc DIVX
mkdir ahhhhh128x50
ffmpeg -i ahhhhh128x50.avi -vf format=gray -an -qscale 1 ahhhhh128x50/%08d.png
и далее при запуске утилиты конверсии vhs5t-maker имя подкаталога ahhhhh128x50 задаётся вторым аргументом (напомню, что первым аргументом идёт имя RAW-файла звука, который конвертируется отдельно, например с помощью программы Audacity, которая умеет открывать видеофайлы и брать из них звуковую дорожку)

P.S. Наверное можно заморочиться и всё сделать через ffmpeg, но я привык конвертить видосы с помощью mencoder :lol:

P.P.S. Забыл упомянуть, что в некоторых случаях ещё требуется с яркостью-контрастностью поиграться, чтобы небыло слишком бело' или слишком черно'...
Я тут за главного - если что шлите мыло на me собака shaos точка net
maxadler
Writer
Posts: 10
Joined: 30 Jan 2024 16:12

Re: Воспроизведение озвученной анимации с ROM-Дисков

Post by maxadler »

Практически удалось повторить. Под винды вообще конвертер (сборщик) вообще нереально собрать кое кто помог правя иходник и компиля все заново.
Вобщем видос играет, звук вроде тоже гундосит... Но, видео очень отстает от звуковой дорожки. Что не так делаю?
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 11:08
Contact:

Re: Воспроизведение озвученной анимации с ROM-Дисков

Post by Pyk »

Кстати да, собранный софт под Windows, может пригодится кому...
Attachments

vhs5t_win.zip
(66.36 KiB) Downloaded 42 times

User avatar
Shaos
Admin
Posts: 24020
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Воспроизведение озвученной анимации с ROM-Дисков

Post by Shaos »

maxadler wrote:Практически удалось повторить. Под винды вообще конвертер (сборщик) вообще нереально собрать кое кто помог правя иходник и компиля все заново.
Вобщем видос играет, звук вроде тоже гундосит... Но, видео очень отстает от звуковой дорожки. Что не так делаю?
Возможно звук не ровно подогнан по частоте - оно на входе ожидает (у меня) 44100 Гц МОНО raw-data 8-bit unsigned

Либо видео неправильно переведено в 7.5 FPS - померяй с секундомером длительность ролика - оригинального и проигранного на РК - должно быть секунда в секунду
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24020
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Воспроизведение озвученной анимации с ROM-Дисков

Post by Shaos »

Pyk wrote:Кстати да, собранный софт под Windows, может пригодится кому...
Можно наверное сделать плугин в VirtualDub, если очень надо - будет преобразовывать любые avi-шки в видеоролики vhs5t ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 15 Oct 2019 01:10
Location: Tashkent
Contact:

Re: Воспроизведение озвученной анимации с ROM-Дисков

Post by Alikberov »

Shaos wrote:
Pyk wrote:Кстати да, собранный софт под Windows, может пригодится кому...
Можно наверное сделать плугин в VirtualDub, если очень надо - будет преобразовывать любые avi-шки в видеоролики vhs5t ;)
Да, это проще простого, как способ в этом плане, наверное.
Мною использовалось всюду, где можно. В частности, отправлял кадры с цветом прямо в TelNet порт.
Post Reply