Вход

Просмотр полной версии : Видео-фильтр для Unreal Speccy



E.Sokol
26.10.2005, 11:45
Давно пытаюсь въехать, как сделать свой фильтр в Unreal, но никак не могу разобраться в коде:( Может, товарищ SMT даст пару подсказок? Интересуют режимы 320x240x32 и 640x480x32.

SMT
26.10.2005, 17:26
если новый режим, то посмотри, как сделаны profi/atm. фильтр читает данные из спектрум-памяти и по ним рисует в видеобуфер картинку. используется куча вспомогательных таблиц, но тебе надёжнее завести свои таблицы и заполнить их, чем разбираться в существующих

если именно новый фильтр, чтобы уж со строчкой в настройках, то просто добавить запись в массив renders[] в файле dx.cpp с флагами RF_32|RF_2X для 32bit 640x480 или RF_32 для 320x240x32 и написать функцию прорисовки

SMT
26.10.2005, 17:28
собирался как-то сделать что-то похожее на фильтры directShow, чтобы составлять произвольные цепочки, но что-то никак времени нет заняться :(

E.Sokol
28.10.2005, 07:30
А нельзя ли чуть поподробнее? Уж больно хитро там всё завязано.
1. За один вызов рендерной функции рисуется весь экран или только его часть?
2. Как рисуются полоски на бордюре?
3. По какому указателю обратиться к экранной памяти спектрума?
4. По какому указателю писать в видеопамять?

Сорри за глупые вопросы.

SMT
28.10.2005, 17:20
А нельзя ли чуть поподробнее? Уж больно хитро там всё завязаносудя по вопросам, ты даже не пытался. всё просто, как 2+2


За один вызов рендерной функции рисуется весь экран или только его частьвесь экран


Как рисуются полоски на бордюреесли в твоём режиме нужен мультиколор+бордюр, используй массив rbuf - там пары байтов (байт данных/атрибут к нему), оттрасированные по ходу луча со всеми эффектами. атрибуты не спектрумовские, а верхний полубайт - цвет "0" битов данных, нижний - цвет "1" битов данных. строки в rbuf лежат подряд, каждая строка занимает MAX_WIDTH_P = 128 байт, правые части не заполняются. если делать режим типа ATM/PROFI/PENT512, то рисуй серединку сам, а для бордюра вызывай готовые функции rend_frame_*


По какому указателю обратиться к экранной памяти спектрумаmemory - начало памяти. memory+5*0x4000 - начало 5-й страницы, где лежит экран zx-128 (чистого 48-го режима в unreal нет, только 128-й с блокировкой порта #7FFD битом 5)


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

E.Sokol
31.10.2005, 11:49
Спасибо

SMT
31.10.2005, 12:40
расскажешь, какие идеи появились по новым режимам?

E.Sokol
01.12.2005, 12:12
Идеи (скриншоты) выкладывал в другой ветке, про эмуляцию телевизора
http://www.zx.pk.ru/showthread.php?t=442&page=3&pp=10