1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Кодерский уголок

Тема в разделе "Мастерская", создана пользователем Dimouse, 10 сен 2006.

  1. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.133
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

    Что здесь не допускается:
    - беспорядочный флуд на всевозможные темы, в том числе общие обсуждения языков программирования без конкретики (карается по статье "флуд и оффтопик" *),
    - разжигания на темы "что лучше, Си или Си++ и чем они отличаются?", "какой язык программирования лучше X или Y?" и т.п. (карается по статье "флейм и участие в холиварах" *),
    - мерение пиписьками в стиле "я лучше программирую" или "ты не умеешь программировать" (карается по статье "оскорбление участников и их взглядов" *).

    Всё это допускается в специально созданной теме "Беседка для программистов или «Бутерброд с кодом».

    * по усмотрению модератора также возможно применение блокировки в данной теме.

    Оригинальное сообщение
     
    Последнее редактирование модератором: 24 ноя 2014
    CY8R4Y нравится это.
  2.  
  3. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Bato-San, увы, я не настолько бычу в ++, не говоря уже про DDraw, чтобы навскидку разобраться и тем более повторить. Можешь склеить (или выдрать откуда-то) цельную мини-библиотечку с двумя сишными (!) функциями в интерфейсе - нарисоватьстроку( координаты, шрифт, строка) и убратьстроку( координаты)?
     
  4. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    fraps/bandicam же показывает картинку поверх досбокса, ловить обращение досбокса к нужным файлам и выводить поверх текст.
    На vogons подсказывают, что fps плавает, как-то тут подумать, может быть фиксировать частоту. Предположить, что проца достаточно.
    Дурацкий пример. Брать текущий фпс из шапки досбокса и учитывать его при выводе текста. Для всех почти игр фпс в видео фиксированный. Определить фпс и выводить текст.
    Формат да типа - смещение в файле который мы ждем, строка для вывода, координаты вывода и время показа текста.

    вот кусочек чтения видео из харвестера:
    procmon log

    Я вижу последовательное чтение файла блоками по 4к. Предполагаем нужный фпс и подгоняем вывод текста.
     
    Последнее редактирование: 19 янв 2014
  5. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Хм. Насколько я всё-таки бычу в ++, это таки ++.

    Значит, библиотечку склеить/выдрать не можешь. Фигово. :-(

    ---------- Сообщение добавлено в 21:50 ---------- Предыдущее сообщение размещено в 21:44 ----------

    Не получится - эти 16К прочитались за меньше миллисекунды. А даже если бы было размазано на секунды - всё равно был бы не fps, а в лучшем случае bps. :-(
     
  6. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Рыжий Тигра, нет, в харвестере досбокс читает файл и тут же его воспроизводит, лого-видео началось по моему времени в

    23:52:47,1279655 dosbox.exe 3748 ReadFile C:\games\harv_cd\GRAPHIC\FST\VIRGLOGO.FST SUCCESS Offset: 0, Length: 4096, Priority: Normal

    затем последовательно 590 вызовов ReadFile с блоком 4096 байт, пока весь файл на 2366 кб не прочитается.

    и закончилось закрытием файла
    23:52:58,5365083 dosbox.exe 3748 CloseFile C:\games\harv_cd\GRAPHIC\FST\VIRGLOGO.FST SUCCESS

    Итого 11 секунд, совпадает с длительностью видео.
     
    Последнее редактирование: 20 янв 2014
  7. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Ага. Тогда тем более можно забить на расчёт fps'а и базировать субтитры об смещение чтения файла. Технически: выводить строку прямо из перехватчика чтения (либо "по Bato-San'у" из перехватчика вывода кадра, а в перехватчике чтения только подставлять строку для последующего вывода).
    Сможешь такое (включая перехват вывода кадра) написать на Си? Я пас. :-( Но зато могу обформить в виде библиотеки, отладить и вообще довести до ума.
     
  8. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Рыжий Тигра, нет у меня достаточно знаний сделать такое.
    Мне думается, что в случае именно с досбоксом ничего хукать не надо, исходники есть. Найти место где он делает чтение файла, вставить туда функцию проверки имени файла, считать смещение чтения и делать вывод поверх изображения.
     
    Последнее редактирование: 20 янв 2014
  9. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Ууу, опять плюсплюс... :-(((((((
     
  10. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Отписался везде до кого дотянулся. На краклабе, автору dosbox svn daum. Если не откажут, поглядим во сколько оценят доработку досбокса.

    А тут нет хардорных си плюсовцев ?
     
    Последнее редактирование: 22 янв 2014
  11. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.133
    Val07og, quazatron и Steel Rat нравится это.
  12. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Taewoong Yoo (dosbox svn daum) ответил, что идея отличная, но он её сделать не сможет из-за сложности. Он прям расстроил меня очень, на него у меня была надежда.
    Еще теплится надежда, что товарищ с краклаба дотянет идею до прототипа, чтобы было что затестить.
    Вывод текста он собирается пока сделать в отдельное свое окно.
     
  13. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    угу... хотя смысл совсем не в этом. Это Рыжий Тигра и сам прекрасно сделать может. Мельчает краклаб...
     
  14. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Bato-San, да я попросил Рыжий Тигра сделать прототип на основе его разработки, вывод пока к себе в окно. Надо проверить как оно работает.
    Еще нужен парсер внешних титров, в котором будет указано имя файла и таблица смещений и текстов, чтобы было с чем поиграться.
     
  15. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Могу. Но скучно. Надо непосредственно поверх игры.
     
    Bato-San нравится это.
  16. daemolisher

    daemolisher

    Регистрация:
    2 дек 2009
    Сообщения:
    1.704
    имхо, не следует пытаться воткнуть текст поверх окна, объясню почему

    DoxBox же использует разные способы рендера изображения:
    surface, overlay, opengl, openglnb, ddraw

    - так понимаю это означает, что при запуске окно соответствующим образом инициализируется
    люди могут выбирать разные настройки и трудно предсказать - как это скажется
    у меня Fraps выводит fps только когда выбран OpenGL для вывода в DosBox
    и не выводит fps в других режимах,

    а значит методы из Fraps не пригодны

    в тоже время это означает, что DosBox формирует кадры программным путём
    то есть:
    программно рисует в текстуру на процессоре, после уже выводит текстуру на экран
    и выводит разными способами (в случае OpenGL - рисуется квад и на него натягивается текстура)

    получается:
    существует такой момент, когда текстура полностью сформирована, но ещё не отправилась на отрисовку

    в этот момент необходимо дорисовать в неё текст субтитров

    P.S.
    это если что предположения, в сорсы как-то не хочется заглядывать)
     
  17. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    daemolisher, ты не в ту сторону поехал... и, как результат, сделал неверные выводы на основе верных данных. В случае с DosBox всё намного проще, надо просто доработать эмуляцию видеооборудования в сорцах DB и откомпилировать его, получив специализированную сборку для интеграции с игрой. А не заниматься перехватом его окна левыми хукерами.
     
  18. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Логично.
    А одно с другим не связано.

    ---------- Сообщение добавлено в 10:17 ---------- Предыдущее сообщение размещено в 10:11 ----------

    Кстати, WC4 (для которого мне эта мулька тоже нужна) работает аналогично: полностью формирует картинку сам, а потом отдаёт её на вывод. Поэтому кто сделает рисовалку субтитров на готовой картинке (или адаптирует какую-то готовую) - делитесь со мной. Вполне устроит сишный вызов вида нарисоватьтекстповерхкартинки( картинка, текст, координаты).
     
  19. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Тысячи спасибо уходит Vicshann с краклаба за реализацию идеи субтитров для досбокса.
    Мои мысли такие. Раньше память очень экономили, поэтому видео читалось-декодировалось-и-тут-же-показывалось, возможен только небольшой временной лаг.

    По такому принципу в итоге удалось создать тестовые титры для игра Harvester, что уже немало.
    Работает с выводом в досбокс = direct3d.
    Я доволен. :yahoo:
    В архиве хукер и исходники.
    Пример.
     

    Вложения:

    • SubsFull.7z
      Размер файла:
      221,4 КБ
      Просмотров:
      38
    Последнее редактирование: 5 мар 2014
    Val07og, SAS, Dimouse и 4 другим нравится это.
  20. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Кто знает, как из win32'шной программы (a) выяснить и (b) переключить язык клавиатуры?
     
    Dimouse нравится это.
  21. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
  22. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    MisterGrim, thnx!
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление