Автор Тема: [SMD] Просмотр Видео на Sega Mega Drive  (Прочитано 4466 раз)

0 Пользователей и 8 Гостей просматривают эту тему.

Оффлайн bgr

  • Пользователь
  • Сообщений: 618
    • ВКонтакте
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #30 : 08 Май 2026, 17:17:23 »
Чет как по мне - глупенькая затея, сеговский проц не даст плавное видео без грамотной оптимизации, то есть каждый кадр в ручную вводить и задавать перемещение объекта.
Для того и юзают Сегу сиди, чтобы и с аудио не париться и получить расширенные возможности :shifty:

Оффлайн SegaMark

  • Пользователь
  • Сообщений: 131
  • Пол: Мужской
    • Просмотр профиля
Re: [SMD] Просмотр Видео на Sega Mega Drive
« Ответ #31 : 08 Май 2026, 17:37:45 »
Чет как по мне - глупенькая затея
Мне нравятся такие почти нереальные задачи, которые все таки можно сделать, но очень много усилий надо приложить. Это примерно как Дум портировать на все подряд

Добавлено позже:
сеговский проц не даст плавное видео без грамотной оптимизации
Вот этого в итоге и охота достичь.

Добавлено позже:
то есть каждый кадр в ручную вводить и задавать перемещение объекта.
Ты имеешь ввиду типа как флеш анимация, где задаешь точку А точку Б и обьект перемещается?
Если да то это в планах тоже есть. Очень много таких видеовставок я видел на PC Engine


Добавлено позже:
Для того и юзают Сегу сиди
У меня нет Сеги сиди, так бы конечно попробовал еще и для нее. Все таки охота чтобы это работало на консоли

Добавлено позже:
но это будет требовать каждый раз перерасчета.
А нельзя это как то из кода брать? у тебя тайлсет, тайлмап и палитра это 3 отдельных файла. Где то в коде прописано что именно с чем идет читаешь это и добавляешь просмоторщик бинарных файлов. Должно быть просто :D

Добавлено позже:
система то какая - когда ты разбиваешь на сцены, ну или не разбиваешь, а прям в один набор палитр загоняешь - происходит формирование одного гигантского изображения со всеми кадрами. библиотека вычленяет из него палитры и разбивает на тайлы. если такое делать с одним кадром - то конечно работать будет довольно шустро, но фактически будет отличаться. ибо в этом кадре может быть цветов столько-то. а когда формируется то гигантское изображение - то там цвета уже могут изменится. типа какой-то другой цвет одеяло на себя перетянет.
Как ты описал, так не будет работать, видимо, ты какие-то шаги пропустил. Вот, например, у тебя одно изображение со всеми кадрами, квантинируем до 61 цвета. Каким образом будут цвета по палитрам распределяться? По порядку? И как определить, какому кадру какая палитра соответствует?
Какой смысл разбивать это гигантское изображение на тайлы, не проще ли каждый кадр по тайлам бить?

если такое делать с одним кадром - то конечно работать будет довольно шустро
А что делать то? вывести одно изображение на экран? или покадрово видео обрабатывать?
Короче тут миллиард вопросов.
но все их можно свести к одному

Как программа создает четыре палитры и как определяет какому кадру какая соответствует?

Добавлено позже:
сделать свой аудиодрайвер на 16кбс. типа качества звука чуть подтянуть
Вот это хорошая тема. Сообщишь если получиться. так как звук это последнее за что я возьмусь

Добавлено позже:
чтобы не рожало сотню файлов, а делало один большой файл. просто в таблице потом добавлять плюсом к смещению. типа:
Идея имеет место быть, но тогда будет сложно отлаживать. Например, захочешь посмотреть какой-то определенный кадр, а нужно будет его в этом большом файле искать. Как вариант можно создать программу которая разбирает этот большой файл и дает возможность каждый кадр в нем посмотреть.

Добавлено позже:
вот про полный размер я и говорил что второй кадр начинает налазить на тайловую карту.
Так второго кадра вообще нет. Я не понимаю, почему, когда изображение маленькое, не используется двойная буферизация, это какую-то галочку надо поставить или в программе условие зашито: если изображение больше Х, то используй.

Добавлено позже:
обновлятся информация не успевает и будет видно мерцание
Я видел примеры где изображение было на полный экран со звуком и ничего не мерцало
« Последнее редактирование: 08 Май 2026, 19:03:27 от SegaMark »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2889
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #32 : 08 Май 2026, 19:04:30 »
ты не понял. эта либа не выбирает какая одна палитра относится к какому-то одному кадру. она разбивает изображение на тайлы так, что цвета в этом тайле должны будут относится к какой-то одной из четырех палитр. я ж говорю магия там творится. если прям ооооочень хочется разобраться - там ссыль есть на гитхаб товарища Айкку и там сурсы этой либы. может там тебе что-то станет понятней... ну или можно оригинальные штмльные ява скрипты посмотреть. я ни тот ни другой неасилил. все эти квантования... и прочая многобуквенная фигня - слишком сложно :) мне бы попроще. чтоб прям вообще как для детского сада. берем картинку. берем цвет первый. пишем сюда-то. берем цвет второй... но если есть готовая дллка, то проще взять готовую. хотя правильней все-таки было бы вникнуть в процесс на глубоком уровне, чтобы самому понимать как это происходит.

суть запиливания одного большого изображения в том, чтобы родить, так сказать, совместимую палитру для всех этих кадров в сцене. ведь палитра, пусть и занимает всего... эээ... 32 или 64 байта? я забыл. 128? все забыл... если каждому кадру рожать отдельную палитру, то мы опять таки потеряем экономию в весе - ром станет больше. это один момент. момент номер два - главный - ты посмотри то видео соника. эээ... по моему даже с СД версии. вот прям внимательно посмотри. некоторые кадры там простреливают либо с яркой палитрой, либо еще чего... иными словами проблема там именно что палитру там рожали каждому кадру. поэтому цвета могуть плыть при просмотре. в моем же случае проблема тоже иногда проскальзывает, но не глобально на весь кадр, как в сонике - а может на тайле где-то покрасить тайл чуть темнее или чуть светлее. по моему в Шреке на титрах чаще всего такое вылазит. но это не так заметно, как в случае с соником.

для создания своей палитры каждому кадру - ты можешь свое видео разделить на сцены. то есть каждому кадру создай свою сцену. тогда система создаст каждому кадру свою отдельную палитру. точнее набор палитр - 1-4 смотря сколько ты выставил для видео. попробуй сделай. сравни размеры ромов на выходе. пусть не на много - но уникально-палитровый будет больше размером.

Добавлено позже:
Так второго кадра вообще нет. Я не понимаю, почему, когда изображение маленькое, не используется двойная буферизация, это какую-то галочку надо поставить или в программе условие зашито: если изображение больше Х, то используй.
для маленького изображения тоже используется. присмотрись внимательней. прям в Генс открой вдп и смотри что там творится. сначала верхняя часть памяти обновится, потом чуть ниже. потом опять верх, потом низ, потом верх... и так до конца видоса будут скакать.

Оффлайн SegaMark

  • Пользователь
  • Сообщений: 131
  • Пол: Мужской
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #33 : 08 Май 2026, 19:09:15 »
Тай мне еще объяснял про некую DMA
Можешь процитировать что он сказал

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2889
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #34 : 08 Май 2026, 19:09:40 »
Я видел примеры где изображение было на полный экран со звуком и ничего не мерцало
я тоже видел. не помню кто-то присылал песню невер гона гив ю ап... где-то этот ром должен лежать. но деталей уже не помню. посему пришлось идти своим путем. и по моему там даже фпс крутой. ноооо это не точно :) хотя гляну личные сообщения. может там осталось...

Оффлайн SegaMark

  • Пользователь
  • Сообщений: 131
  • Пол: Мужской
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #35 : 08 Май 2026, 19:13:22 »
эта либа не выбирает какая одна палитра относится к какому-то одному кадру. она разбивает изображение на тайлы так, что цвета в этом тайле должны будут относится к какой-то одной из четырех палитр.
Тогда это еще странней. Насколько знаю, к ОДНОМУ тайлу нельзя прицепить палитру. Можно либо ко всему слою, или к спрайту. Но, возможно, я не совсем прав и есть какие-то секретные штуки. Про что-то такое я находил статью, но я не уверен, что там про разные тайлы на одном слое говориться.

Добавлено позже:
если прям ооооочень хочется разобраться - там ссыль есть на гитхаб товарища Айкку и там сурсы этой либы. может там тебе что-то станет понятней
Видел. как нибудь подробно изучу

Добавлено позже:
хотя правильней все-таки было бы вникнуть в процесс на глубоком уровне, чтобы самому понимать как это происходит.
Я это и пытаюсь сделать, вплоть до того как работают кодеки

Добавлено позже:
некоторые кадры там простреливают либо с яркой палитрой, либо еще чего...
Я кстати этого не заметил. Еще раз тогда пересмотрю

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2889
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #36 : 08 Май 2026, 19:26:39 »
да как нельзя палитру тайлу определить? вот тебе встречный вопрос! распиши мне двухбайтовый параметр для тайловой карты. что он в себе содержит. квест кароче :) прям по битам распиши.

а Рика Эстли не нашел... где-ж он был то блин...

Добавлено позже:
зато ютуб подсовывает. в комментах пишут что китайцы с алика это продают гыгыгыгы:
https://www.youtube.com/shorts/nu4VUsx7VRk

Добавлено позже:
во... какой-то из вариантов этой песни нашелся. смотри там в описании есть ссылки на три рома - сбалансированный, с упором на звук и с упором на видео.
https://www.youtube.com/watch?v=6uFDSUFRkPk
« Последнее редактирование: 08 Май 2026, 20:09:59 от SeregaZ »

Оффлайн SegaMark

  • Пользователь
  • Сообщений: 131
  • Пол: Мужской
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #37 : 08 Май 2026, 20:15:41 »
зато ютуб подсовывает. в комментах пишут что китайцы с алика это продают гыгыгыгы:
https://www.youtube.com/shorts/nu4VUsx7VRk
Я вроде даже где то РОМ находил

Добавлено позже:
да как нельзя палитру тайлу определить?
Мне проще у ИИ спросить, чем перерывать кучу статей. Она говорит, что ты прав. Ну даже если так, я не знаю, как это сделать ни в ассемблере, ни в каком-нибудь SGDK. Но мне больше интересует, что у тебя, и что-то мне подсказывает, что там именно так, как я говорю.

Добавлено позже:
распиши мне двухбайтовый параметр для тайловой карты. что он в себе содержит.
если ты про это:
tile index
priority
flip X/Y
palette select (2 бита)

то я их называю 2 слова у спрайта

Добавлено позже:
Рика Эстли
Я сначала не понял кто это. Его чаще Рик Роллом называют

Добавлено позже:
во... какой-то из вариантов этой песни нашелся. смотри там в описании есть ссылки на три рома - сбалансированный, с упором на звук и с упором на видео.
Спасибо, даже искать не пришлось
« Последнее редактирование: 08 Май 2026, 20:25:53 от SegaMark »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2889
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Re: [SMD] Просмотр Видео на Sega Mega Drive
« Ответ #38 : 08 Май 2026, 20:27:47 »
Цитата
то я их называю 2 слова у спрайта
да не спрайт это, а тайл! вооот... и смотри ты сам написал - palette select (2 бита) - шо сие означает?

Оффлайн SegaMark

  • Пользователь
  • Сообщений: 131
  • Пол: Мужской
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #39 : 08 Май 2026, 20:52:59 »
да не спрайт это, а тайл!
Мы видимо с тобой в разных школах учились, поэтому у нас знания разняться. Да ты прав. я провел эксперименты и оказалось реально можно задать каждому тайлу разную палитру. Я всегда думал что ты не можешь управлять обычным тайлом, ты сначала его должен загрузить в VDP а потом в sprite pool и уже от туда можешь им управлять.

Добавлено позже:
Пруфы:

313682-0

313684-1

313686-2

313688-3

Добавлено позже:
Тогда у меня еще больше вопросов. А почему в играх так не делают? Например в том же мортале, вместо того чтобы использовать 2 слоя можно было бы использовать один с разными палитрами у тайлов. Я не думаю что это прям сильно память экономит

Добавлено позже:
ты сам написал - palette select (2 бита) - шо сие означает?
Я понял к чему ты клонишь.
« Последнее редактирование: 09 Май 2026, 03:38:00 от ghostdog3 »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2889
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #40 : 08 Май 2026, 22:02:49 »
эта фишка выставляет палитру тайлу только в тайловой карте. с морталом как ты себе представляешь движение персонажей... эээ... внутри экрана :) они сделаны спрайтами. если в тайловой карте тайл можно разместить строго с шагом 8 пикселей. то вот спрайт можно двигать с шагом 1 пиксель. сам спрайт может быть 1х1 тайл, и вплоть до 4х4 тайла (то есть 8х8 пикселей или 32х32 пикселя). поэтому персонажи сделаны через спрайты, а вот фоны - через тайловые карты. спрайту, если он больше одного тайла - тот-же 4х4, или скажем 2х1 - ты можешь задать палитру только сразу всей пачке тайлов внутри спрайта. нельзя сделать так, что спрайт один, а ты хочешь 1 тайлу 1 палитру, 2 тайлу третью поставить, 3 тайлу - вторую, 4 тайлу опять первую. тут или разделять на 4 разных спрайта, или все 4 тайла в этом спрайте могут использовать только одну и ту-же палитру.

кароче берут фотку косплейщицы - режут квадратиками или прямоугольниками, как удобнее - чтобы разместить всю её фигуру в этих квадратиках. после формируют некую таблицу, где указаны координаты спрайта, его тип (1х1 тайл или любой вариант до 4х4 тайла), палитру каждому спрайту. и приоритет наверное... не помню как там у спрайтов. по моему тож самое как и у тайловой карты... зеркала забыл, во! обычно координаты задаются самому первому спрайту в таблице. начиная со второго там уже не координаты положения на экране, а смещение относительно первого спрайта. типа спрайт 1 = 100х100, спрайт 2 = -2х24 (реальные координаты будут 98х124), и так далее. в итоге когда тебе надо организовать движение персонажа, скажем ходьба влево - то тебе достаточно прибавлять координаты только самому первому спрайту - все остальные, так как привязаны к первому - сами сместятся куда надо.

Добавлено позже:
теперь про этого Рика Рола - или точнее как добиться бОльшего количества цветов в одном тайле. как бы физически это будут несколько тайлов, но поскольку они накладываются друг на друга - ты будешь думать что там всего 1 тайл. то есть берется первый слой - режутся тайлы и в тайлах цвета из первой палитры. а те цвета из настоящего кадра, которых нет в 1 палитре - задаются прозрачными. во второй слой пишется новый тайл, в котором уже цвета из 2 палитры, а тех цветов с реального кадра, которых нет во 2 палитре - опять-таки делаются прозрачными. но это только 2 слоя. что делать с другими двумя палитрами? а добивать спрайтами. типа выводить спрайт в нужных координатах поверх экрана, в котором будут цвета из 3 палитры. вот в результате получится слоеный пирог. но это будет дикая стоимость в размере рома. считай он станет в 4 раза больше, чем нежели это был бы один тайловый сет для одного слоя. зато цветность там может быть лучше.
« Последнее редактирование: 08 Май 2026, 22:11:09 от SeregaZ »

Оффлайн SegaMark

  • Пользователь
  • Сообщений: 131
  • Пол: Мужской
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #41 : 09 Май 2026, 06:56:26 »
эта фишка выставляет палитру тайлу только в тайловой карте.
а можно это в каком нибудь эмуляторе посмотреть, какой тайловой карте какая палитра соответствует? или это только в коде находится?

Добавлено позже:
с морталом как ты себе представляешь движение персонажей... эээ... внутри экрана  они сделаны спрайтами.
Понятно, что с персонажами так не получится вообще, имел в виду только экран выбора персонажей, но думаю, что и арены, и меню так же сделаны.

Добавлено позже:
если в тайловой карте тайл можно разместить строго с шагом 8 пикселей. то вот спрайт можно двигать с шагом 1 пиксель. сам спрайт может быть 1х1 тайл, и вплоть до 4х4 тайла (то есть 8х8 пикселей или 32х32 пикселя). поэтому персонажи сделаны через спрайты, а вот фоны - через тайловые карты. спрайту, если он больше одного тайла - тот-же 4х4, или скажем 2х1 - ты можешь задать палитру только сразу всей пачке тайлов внутри спрайта. нельзя сделать так, что спрайт один, а ты хочешь 1 тайлу 1 палитру, 2 тайлу третью поставить, 3 тайлу - вторую, 4 тайлу опять первую. тут или разделять на 4 разных спрайта, или все 4 тайла в этом спрайте могут использовать только одну и ту-же палитру.
Я это знаю. Я тебе про это и пытался сказать.

Добавлено позже:
фотку косплейщицы
Где взять эту фотку :lol:

Добавлено позже:
теперь про этого Рика Рола - или точнее как добиться бОльшего количества цветов в одном тайле. как бы физически это будут несколько тайлов, но поскольку они накладываются друг на друга - ты будешь думать что там всего 1 тайл. то есть берется первый слой - режутся тайлы и в тайлах цвета из первой палитры. а те цвета из настоящего кадра, которых нет в 1 палитре - задаются прозрачными. во второй слой пишется новый тайл, в котором уже цвета из 2 палитры, а тех цветов с реального кадра, которых нет во 2 палитре - опять-таки делаются прозрачными. но это только 2 слоя. что делать с другими двумя палитрами? а добивать спрайтами. типа выводить спрайт в нужных координатах поверх экрана, в котором будут цвета из 3 палитры. вот в результате получится слоеный пирог. но это будет дикая стоимость в размере рома. считай он станет в 4 раза больше, чем нежели это был бы один тайловый сет для одного слоя. зато цветность там может быть лучше.
Ты открывал его. пробовал смотреть как оно работает. Там все не так как ты описал. нет там никакого наложения и спрайты там не используются. там вообще какая то черная магия происходит. Тот алгоритм который ты описал это самый простой способ добиться максимального цвета. однако использовать спрайты очень сложно, а еще из всего 80 штук этого мало на что хватит. Я изначально думал что твоя программа так и работает, но оказалось нет

SeregaZ, Можешь написать код где у тебя каждой карте назначается своя палитра
« Последнее редактирование: 09 Май 2026, 07:30:57 от SegaMark »

Оффлайн SegaMark

  • Пользователь
  • Сообщений: 131
  • Пол: Мужской
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #42 : 09 Май 2026, 07:27:52 »
Вот что в Рик Ролле происходит. Это версия с лучшим видео

313696-0

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2889
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Re: [SMD] Просмотр Видео на Sega Mega Drive
« Ответ #43 : 09 Май 2026, 16:25:46 »
не карте своя палитра - а каждому тайлу в карте своя палитра. то есть в тех самых двух байтах, расшифровку которых я у тебя просил - номер тайла, зеркала, приоритет... иииии ПАЛИТРААААААаааааа!!!111

получается экран рисуешь квадратиками - тайлами 8х8 пикселей. друг за другом. а если тайлы одинаковые - то выкидывает повторяющиеся тайлы, тем самым экономя место в роме.

типа если раньше было:
тайл 1+палитра 2, тайл 2+палитра 3, тайл 3 + палитра 1, тайл 4 + палитра 2
и типа 2 тайл и 3 тайл одинаковые, то тогда берем и выкидываем повтор и тогда становится:
тайл 1+палитра 2, тайл 2+палитра 3, тайл 2 + палитра 1, тайл 3 + палитра 2

Добавлено позже:
а можно это в каком нибудь эмуляторе посмотреть, какой тайловой карте какая палитра соответствует?
сделай дамп VDP после смотри по адресу тайловой карты в этом файле. там будут идти по 2 байта - те самые, в которых вшито и номер палитры и номер тайла, и зеркала, и приоритет.

Оффлайн SegaMark

  • Пользователь
  • Сообщений: 131
  • Пол: Мужской
    • Просмотр профиля
[SMD] Просмотр Видео на Sega Mega Drive
« Ответ #44 : 09 Май 2026, 17:43:15 »
каждому тайлу в карте
Я это и имел ввиду. Думал ты поймешь. в следующий раз буду так и писать

Добавлено позже:
сделай дамп VDP после смотри по адресу тайловой карты в этом файле. там будут идти по 2 байта - те самые, в которых вшито и номер палитры и номер тайла, и зеркала, и приоритет.
У меня складывается впечатление, что про эту штуку никто не знал или мало использовали из-за сложности, примерно как второй процессор Sega Saturn. Почему ни один не догадался логировать это, так сказать, выводить в удобоподобном виде. Чтоб одну кнопочку нажал — и всё вывелось.
Я, конечно, попробую сделать так, как ты написал, чисто чтоб самому убедиться.