Воспроизведение озвученной анимации с ROM-Дисков
Moderator: Shaos
Re: Воспроизведение озвученной анимации с ROM-Дисков
А как быть тем,кто вдохновился идеей и всеже решил собрать себе ром диск для живой ркшки? можно носом ткнуть в материал, как шить что шить чем конвертить? Или я не туда напостил?
Re: Воспроизведение озвученной анимации с ROM-Дисков
Чем конвертить в этом топике пролетало - могу пошаговую инструкцию набросать
Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Воспроизведение озвученной анимации с ROM-Дисков
Итак, архив с конвертером приаттачен к первому сообщению этого топика - vhs5t.zip [11.96 КиБ]
Исходники должны собираться где угодно и чем угодно - это утилиты с интерфейсом командной строки (там правда надо libpng иметь и русские буквы через UTF-8 печатаются):
Пример файла description (это то, что двигается бегущей строкой над видео - причём все буквы будут переведены в верхний регистр):
если такого файла нет, то будет использовано описание по умолчанию:
Получившийся файл romdisk.bin можно положить в подкаталог rk86 эмулятора emu80, в котором в rk86.conf надо поправить размер ромдиска чтобы был по максимуму (8МБ):
и раскомментировать define EXT_ROM_DISK (и закомменить define ROM_DISK если оно было раскомменчено)
Запускать в Emu80 так:
P.S. Повторю описание формата (в 8-мегабайтный ромдиск влезает максимум 5м 41с такого видео 7.5 FPS 128x50 с 1-битным звуком 6 кГц):
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
- 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 (если есть)
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
*/
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...";
Code: Select all
romDisk.sizeMB = 8
Запускать в Emu80 так:
Code: Select all
R,1FF
G
P.P.S. Возможно надо поработать над плеером так, чтобы он детектировал на какой машине он запущен (РК, Микроша или Апогей) и соответствующим образом инициализировал видео...Ромдиск Апогея по схеме 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 сек).
Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Воспроизведение озвученной анимации с ROM-Дисков
Последовательность чёрно-белых PNG-картинок 128x50 из произвольного видео можно получить так (в данном случае из видеофайла ahhhhh.avi вырезается кусок длиной 47 секунд начиная с метки времени 3.0 секунды):
и далее при запуске утилиты конверсии vhs5t-maker имя подкаталога ahhhhh128x50 задаётся вторым аргументом (напомню, что первым аргументом идёт имя RAW-файла звука, который конвертируется отдельно, например с помощью программы Audacity, которая умеет открывать видеофайлы и брать из них звуковую дорожку)
P.S. Наверное можно заморочиться и всё сделать через ffmpeg, но я привык конвертить видосы с помощью mencoder
P.P.S. Забыл упомянуть, что в некоторых случаях ещё требуется с яркостью-контрастностью поиграться, чтобы небыло слишком бело' или слишком черно'...
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
P.S. Наверное можно заморочиться и всё сделать через ffmpeg, но я привык конвертить видосы с помощью mencoder

P.P.S. Забыл упомянуть, что в некоторых случаях ещё требуется с яркостью-контрастностью поиграться, чтобы небыло слишком бело' или слишком черно'...
Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Воспроизведение озвученной анимации с ROM-Дисков
Практически удалось повторить. Под винды вообще конвертер (сборщик) вообще нереально собрать кое кто помог правя иходник и компиля все заново.
Вобщем видос играет, звук вроде тоже гундосит... Но, видео очень отстает от звуковой дорожки. Что не так делаю?
Вобщем видос играет, звук вроде тоже гундосит... Но, видео очень отстает от звуковой дорожки. Что не так делаю?
Re: Воспроизведение озвученной анимации с ROM-Дисков
Кстати да, собранный софт под Windows, может пригодится кому...
- Attachments
- vhs5t_win.zip
- (66.36 KiB) Downloaded 42 times
Re: Воспроизведение озвученной анимации с ROM-Дисков
Возможно звук не ровно подогнан по частоте - оно на входе ожидает (у меня) 44100 Гц МОНО raw-data 8-bit unsignedmaxadler wrote:Практически удалось повторить. Под винды вообще конвертер (сборщик) вообще нереально собрать кое кто помог правя иходник и компиля все заново.
Вобщем видос играет, звук вроде тоже гундосит... Но, видео очень отстает от звуковой дорожки. Что не так делаю?
Либо видео неправильно переведено в 7.5 FPS - померяй с секундомером длительность ролика - оригинального и проигранного на РК - должно быть секунда в секунду
Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Воспроизведение озвученной анимации с ROM-Дисков
Можно наверное сделать плугин в VirtualDub, если очень надо - будет преобразовывать любые avi-шки в видеоролики vhs5tPyk wrote:Кстати да, собранный софт под Windows, может пригодится кому...

Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Воспроизведение озвученной анимации с ROM-Дисков
Да, это проще простого, как способ в этом плане, наверное.Shaos wrote:Можно наверное сделать плугин в VirtualDub, если очень надо - будет преобразовывать любые avi-шки в видеоролики vhs5tPyk wrote:Кстати да, собранный софт под Windows, может пригодится кому...
Мною использовалось всюду, где можно. В частности, отправлял кадры с цветом прямо в TelNet порт.