Работаем и пересобираем в Scenarist BD. часть I

Например в [этом диске](Устаревшая ссылка!) в PopUp Menu имеется сравнение if((GPR)Clip Number[ID:1]==(номер текущего заголовка)) Nop, для того чтобы при (ошибочном) нажатии кнопки вызова этого клипа воспроизведение продолжалось, а не перескакивало на начало. Ну а если номера не совпадают, вызывается соответствующий заголовок.

В документации просто сказано PSR Value 96 to 111 - reserved for BD system use.
Конкретные данные вычислили мои коллеги, каким образом не знаю. Но поскольку практического применения в BDMV тогда не нашлось, они не сохранились.

2 лайка

Про Nop вроде как понял основную мысль.

А вот про регистры эти PSR Value 96 to 111 появились ещё вопросы:

  • их практически как я понял нельзя применить, то есть скажем использовать в командах?
  • о какой документации идёт речь? Уже пересмотрел от Сценариста pdf документ и не вижу даже малейшего упоминание об этих регистрах. Может у вас какой-то особенный мануал, у меня тот что Шувалов кидал в папку от своего проекта, в нём 548 страниц. То есть его релиз на рутрекере.

В BDMV точно нет (разве что при наличии кнопки “Пауза” в PopUp). Наверняка применяется в Java, но тут я не спец.

Куча отдельных PDF файлов Sonic Reference Material (на английском). Куда-то я их задевал, не могу до сих пор найти.

1 лайк

Ну это как я понимаю можно применить не сам служебный регистр, а команду StillOn/Off. Но это не то, меня интересовала именно применение самих регистров от 99 до 111 т.е. if((PSR)название[ID:99] ну и дальше действие.

Теперь окончательно для себя я понимаю, что Тайм-Лайн в HDMV через Паузу должно быть - это утопия.

Наверняка применяется в Java, но тут я не спец.

Ну теоретически не просто наверняка, а прямо должно использоваться. Ведь как-то же программисты делают этот Тайм-Лайн, а это как минимум нужно знать, какая команда при нажатии на ПДУ кнопки Pause посылается плееру и какой регистр на это реагирует. Только так программируется действие, но тут более подробно может сказать нам только CDK, когда реализует этот трюк в своей программе.

Куча отдельных PDF файлов Sonic Reference Material (на английском)

В релизе у Шувалова тоже были отдельные PDFки мелкие, но там я тоже не видел информацию про регистры PSR Value 96 to 111. Что же думаю если кто найдёт их то разместит здесь или в FAQ.

Опять после меня никто не пиал ничего. Ну все такие умные, один я с вопросами. Эххх ладно попробуем :).

Как выглядит система координат для определения выбора нужного фрагмента картинки из общей картинки?

Здесь прошу сказать, в каких файлах нужно искать координаты кнопок от меню явы. Что-то вспоминается это, но как-то слабо, но вроде из местных гуру об этом уже говорили и здесь даже картинки вроде были, а может я чё путаю. Сразу скажу файлов txt и xml у меня на диске нет. Очевидно вся координация в коде файлов class. Ну, а теперь мне бы помощь кто оказал в том, как эта координация выглядит, что искать нужно.

P.S. Кстати, а кто вспомнит про то как координация выглядела в файлах txt или xml, то отпишитесь здесь, надо записать себе в архив, чтобы к этому не возвращаться больше.

Вот так выглядит после ДоСтудии. Рядом с картинками лежит файл - map.txt

4
main.0.png
main.1.png
main.2.png
main.3.png
196
{$ContentFolder}/images/PlayPopUpMenu_2_normal.png
3
948
118
187
59
{$ContentFolder}/images/Subs_Eng_activated.png
3
948
210
186
33
{$ContentFolder}/images/Scene_19_normal.png
2
0
1660
316
166
{$ContentFolder}/images/Scene_4_normal.png

1 лайк

А так это выглядит у Диснея в 00000.jar/gk.class (в моём примере… на другом диске координаты кнопок могут сидеть в другом .class-е)

private void c()
{
cf.a(aQ);
this.aP = cf.a(“GBR_UKR_Composite1.png”);
}

private void d()
{
a = new hx(this.aP, “empty”, 0, 0, 0, 0);
b = new hx(this.aP, “uk_image_textResume”, 0, 0, 540, 115);
c = new hx(this.aP, “uk_image_title”, 540, 0, 224, 207);
d = new hx(this.aP, “uk_button_bonus05_a”, 0, 115, 400, 71);
e = new hx(this.aP, “uk_button_bonus05_n”, 0, 186, 400, 71);
f = new hx(this.aP, “uk_button_bonus05_s”, 764, 0, 400, 71);
g = new hx(this.aP, “uk_button_bonus03_a”, 1164, 0, 371, 70);
h = new hx(this.aP, “uk_button_bonus03_n”, 1535, 0, 371, 70);
i = new hx(this.aP, “uk_button_bonus03_s”, 1164, 70, 371, 70);
j = new hx(this.aP, “uk_button_bonus04_a”, 1535, 70, 342, 71);
k = new hx(this.aP, “uk_button_bonus04_n”, 764, 71, 342, 71);
l = new hx(this.aP, “uk_button_bonus04_s”, 1106, 140, 342, 71);
m = new hx(this.aP, “uk_button_bonus02_a”, 764, 142, 308, 71);
n = new hx(this.aP, “uk_button_bonus02_n”, 400, 207, 308, 71);
o = new hx(this.aP, “uk_button_bonus02_s”, 0, 257, 308, 71);
p = new hx(this.aP, “uk_button_return_a”, 1072, 211, 492, 41);
q = new hx(this.aP, “uk_button_return_n”, 708, 252, 492, 41);
r = new hx(this.aP, “uk_button_return_s”, 1200, 252, 492, 41);
s = new hx(this.aP, “uk_button_bonus07_a”, 1564, 141, 277, 71);
t = new hx(this.aP, “uk_button_bonus07_n”, 308, 278, 277, 71);
u = new hx(this.aP, “uk_button_bonus07_s”, 0, 328, 277, 71);
v = new hx(this.aP, “uk_menu_bonus_a”, 1692, 212, 222, 67);
w = new hx(this.aP, “uk_menu_bonus_n”, 1692, 279, 222, 67);
x = new hx(this.aP, “uk_menu_bonus_s”, 585, 293, 222, 67);
y = new hx(this.aP, “uk_image_headerBonus”, 277, 349, 225, 66);
z = new hx(this.aP, “uk_button_bonus06_a”, 0, 399, 199, 73);
A = new hx(this.aP, “uk_button_bonus06_n”, 807, 293, 199, 73);
B = new hx(this.aP, “uk_button_bonus06_s”, 502, 360, 199, 73);
C = new hx(this.aP, “uk_button_play_a”, 1006, 293, 325, 40);
D = new hx(this.aP, “uk_button_play_n”, 1331, 293, 325, 40);
E = new hx(this.aP, “uk_button_play_s”, 1006, 333, 325, 40);
F = new hx(this.aP, “uk_menu_sneakPeek_a”, 1331, 333, 322, 40);
G = new hx(this.aP, “uk_menu_sneakPeek_n”, 701, 373, 322, 40);
H = new hx(this.aP, “uk_menu_sneakPeek_s”, 1023, 373, 322, 40);
I = new hx(this.aP, “uk_PLAYMOVIE_act”, 708, 213, 348, 36);
J = new hx(this.aP, “uk_PLAYMOVIE_nor”, 1345, 373, 348, 36);
K = new hx(this.aP, “uk_image_textResumeSD”, 1693, 346, 223, 52);
L = new hx(this.aP, “uk_button_setSubs_none_a”, 1693, 398, 161, 71);
M = new hx(this.aP, “uk_button_setSubs_none_n”, 199, 415, 161, 71);
N = new hx(this.aP, “uk_button_setSubs_none_s”, 0, 472, 161, 71);
O = new hx(this.aP, “uk_button_continue_a”, 1345, 409, 265, 41);
P = new hx(this.aP, “uk_button_continue_n”, 701, 413, 265, 41);
Q = new hx(this.aP, “uk_button_continue_s”, 360, 433, 265, 41);
R = new hx(this.aP, “uk_menu_scenes_a”, 966, 413, 251, 40);
S = new hx(this.aP, “uk_menu_scenes_n”, 1217, 450, 251, 40);
T = new hx(this.aP, “uk_menu_scenes_s”, 966, 453, 251, 40);
U = new hx(this.aP, “uk_image_headerScenes”, 400, 115, 140, 71);
V = new hx(this.aP, “uk_menu_setUp_a”, 625, 454, 228, 41);
W = new hx(this.aP, “uk_menu_setUp_n”, 360, 474, 228, 41);
X = new hx(this.aP, “uk_menu_setUp_s”, 1468, 469, 228, 41);
Y = new hx(this.aP, “uk_button_bonus09_a”, 161, 486, 190, 42);
Z = new hx(this.aP, “uk_button_bonus09_n”, 1696, 469, 190, 42);
aa = new hx(this.aP, “uk_button_bonus09_s”, 1217, 490, 190, 42);
ab = new hx(this.aP, “uk_menu_subs_a”, 1407, 510, 168, 42);
ac = new hx(this.aP, “uk_menu_subs_n”, 1575, 511, 168, 42);
ad = new hx(this.aP, “uk_menu_subs_s”, 1743, 511, 168, 42);
ae = new hx(this.aP, “uk_PLAYMOVIE_SMAL”, 853, 493, 251, 28);
af = new hx(this.aP, “uk_image_headerSetUp”, 588, 495, 240, 27);
ag = new hx(this.aP, “uk_button_bonus08_a”, 351, 515, 158, 40);
ah = new hx(this.aP, “uk_button_bonus08_n”, 161, 528, 158, 40);
ai = new hx(this.aP, “uk_button_bonus08_s”, 0, 543, 158, 40);
aj = new hx(this.aP, “uk_image_headerSubs”, 828, 521, 203, 27);
ak = new hx(this.aP, “uk_button_menus_a”, 1031, 521, 132, 40);
al = new hx(this.aP, “uk_button_menus_n”, 1163, 532, 132, 40);
am = new hx(this.aP, “uk_button_menus_s”, 1295, 552, 132, 40);
an = new hx(this.aP, “uk_menu_langs_a”, 1564, 212, 107, 40);
ao = new hx(this.aP, “uk_menu_langs_n”, 1448, 141, 107, 40);
ap = new hx(this.aP, “uk_menu_langs_s”, 1427, 552, 107, 40);
aq = new hx(this.aP, “uk_NEXTPREVIEW_act”, 1217, 413, 124, 34);
ar = new hx(this.aP, “uk_NEXTPREVIEW_nor”, 509, 522, 124, 34);
as = new hx(this.aP, “uk_button_returnSD_a”, 1534, 553, 197, 20);
at = new hx(this.aP, “uk_button_returnSD_n”, 1534, 573, 197, 20);
au = new hx(this.aP, “uk_button_returnSD_s”, 633, 548, 197, 20);
av = new hx(this.aP, “uk_MENU_act”, 853, 454, 112, 34);
aw = new hx(this.aP, “uk_MENU_nor”, 1731, 553, 112, 34);
ax = new hx(this.aP, “uk_button_yes_a”, 1731, 587, 89, 40);
ay = new hx(this.aP, “uk_button_yes_n”, 1820, 587, 89, 40);
az = new hx(this.aP, “uk_button_yes_s”, 319, 555, 89, 40);
aA = new hx(this.aP, “uk_image_headerLang”, 1448, 181, 114, 27);
aB = new hx(this.aP, “uk_button_no_a”, 1854, 398, 59, 40);
aC = new hx(this.aP, “uk_button_no_n”, 1610, 409, 59, 40);
aD = new hx(this.aP, “uk_button_no_s”, 1841, 141, 59, 40);
aE = new hx(this.aP, “uk_NEXTPREVIEW_SMAL”, 199, 399, 73, 14);
aF = new hx(this.aP, “uk_button_menusSD_a”, 1407, 490, 53, 19);
aG = new hx(this.aP, “uk_button_menusSD_n”, 625, 433, 53, 19);
aH = new hx(this.aP, “uk_button_menusSD_s”, 1610, 449, 53, 19);
aI = new hx(this.aP, “uk_MENU_SMAL”, 585, 278, 68, 14);
aJ = new hx(this.aP, “uk_button_yesSD_a”, 588, 474, 36, 19);
aK = new hx(this.aP, “uk_button_yesSD_n”, 1653, 346, 36, 19);
aL = new hx(this.aP, “uk_button_yesSD_s”, 1656, 293, 36, 19);
aM = new hx(this.aP, “uk_button_noSD_a”, 1663, 449, 26, 18);
aN = new hx(this.aP, “uk_button_noSD_n”, 277, 328, 26, 18);
aO = new hx(this.aP, “uk_button_noSD_s”, 319, 528, 26, 18);
}

1 лайк

Ну ребята порадовали меня информацией :smile_ay: . Палыч и Тимоха низкий поклон :smile_bt: спасибо. Что же буду смотреть как там UNIVERSAL устроен.

Скорее всего, если нет текстового файла, то также, как показал tymoxa у Диснея,
где-нибудь в классах нужно искать.

Palych, Мне не везёт чё то :smile_bn: . Переглядел кучу классов и нигде нет подобной информации. Вот засада, то а :frowning: . Видимо, там как-то иначе, что ли реализовано.

Смотришь с помощью jd-gui надеюсь?

1 лайк

tymoxa, Да, я смотрел классы декомпилятором.

Я вообще считаю, что пора бы вступить в дискуссию на тему “Координация кнопок в меню Явы” уважаемому CDK :slight_smile: . Объясню почему. Сегодня я повторно смотрел свой диск и свои класс файлы на предмет поиска координации, которая была предложена здесь, и опять я ничего не нашёл. Тут я решил а дай как я гляну диск который был создан программой от CDK , а именно Высоцкий. Спасибо, что живой. Посмотрел там всю папку JAR и всё что в ней было и тоже не было обнаружено ни какой координации.

Могу сделать такой вывод:

  • либо перед мной была координация вида которого я не знаю.
  • либо координации не существует, а реализация отображения конкретной картинки из общей массы для конкретной кнопки осуществляется как-то иначе.

В связи с этим думаю ответить может на этот вопрос только разработчик :smile_bq:.

Денис Пирожков, в наших дисках координаты находятся в файле *.grin. Это бинарный файл, создаваемый grincomiler из script.show. Если для создания джава-меню кто-то использует свои наработки/движки, то в половине случаев координаты (и другие свойства) кнопок будут лежать в неком отдельном файле, который в половине случаев будет бинарным.

1 лайк

У меня какой-то тяжелый случай. Нестандартная ситуация. Ни в классах ни в бинарниках нет координации. Я понимаю так, что любая координация должна сопровождаться именем файла картинки т.е. имя.png ну а дальше уже пошла схема цифр в виде морского боя. Так вот в моём диске ни в одном файле не упоминается имя файла картинки на котором отображены кнопки, даже имена бинарников и классов не содержат в себе малейшее упоминание на имя файла с картинкой.

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

Думаю, что просто не нашёл… т.е. плохо искал.
Кидай .jar/.png на обменник.

1 лайк

tymoxa, Неужели я проглядел. Я себе этого не прощу при двухкратном просмотре и не найти.

Если найдётся координация, то будет хорошо, а то я уже опечалился с этим диском. Заливаю всю папку JAR целиком так как она была на диске и плюс два файла скриншота сделанные мною для пояснения как выглядит меню, которое мне нужно для нахождения координатов всех кнопок которые там отображены.

По-быстрому - не нашлась.
Это тот случай, когда лучше отрисовать менюшку с нуля (IMO), чем тратить время на ковыряние оригинала.

1 лайк

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

Очередной проблемный диск попался от компании LIONSGATE их характерный ролик знают все:

Честно говоря уже напрягает это ситуация с региональной защитой, куда они её прячут. Самое интересное, что диск то не новинка был авторинг в районе 2010 года. Диск воспроизводится только с регионом А.

В этом файле bluray-project.xml был один текст:

source="Blu-print" source_version="Blu-print 4.4.21" timestamp="11/25/2009 2:03:00 PM

Я так понимаю там говорится о названии программы и дате создания диска.

Есть люди которые работали в подобной программе?

Мне необходимо снять региональную защиту на Яве диске, который был создан этой программой. Все известные мне способы были перепробованы мной и не дали результата. Скажу, что диск не из новых изданий он поступил в продажу с 2010 года, и последние версии AnyDVD и DVDFab не смогли отыскать региональную защиту. Скажу сразу в файле MovieObject нет 20 регистра, поэтому они наверно её прячут в классы.

Ребят прошу помощи найти эту злополучную защиту :frowning: и снять её.

Сколько можно говорить: помочь в решении проблемы такого рода можно только на конкретном примере. Где название фильма, издание, ссылка на исходник или на JAR на крайняк?

1 лайк