|
楼主 |
发表于 20-4-24 21:37
|
显示全部楼层
本帖最后由 filmfans 于 20-4-24 21:45 编辑
今天花了一整天的时间折腾,反复修改,已经找到最核心的代码,理论上如果修改对了,所有问题都解决了,但是尝试了各种方法来改,都没成功,说白了,还是功力太浅!现整理一下思路,精读了《Magnolia Pictures-狩猎-BD_BDJ-菜单修改》这篇教程,最后反复琢磨,定位到了TitleChangeImplement.class Title切换-具体实现类
如果把进入每个title播放的关键代码lu.a(#playlist ID)去掉,虽然可以跳过播放,但会导致链式播放中断,即播放当前playlist完毕,系统要知道当前播放的#playlist ID,否则系统无法继续往下继续播放,仔细看了lu.a的代码,播放前要设置np.s=#playlist ID,告诉系统当前播放的是哪个playlist,所以屏蔽lu.a同时,加上一行np.s=#playlist ID,但测试结果还是不成,界面黑屏停留不动,我估计还是我修行不够,思路对,代码改的可能有问题
另外的问题:按照版主nnezyj 《BD-J 的 Scenarist 工具重编译及重签名.chm》教程编译TitleChangeImplement.java,试用所有能找到的大金版本,都会导致编译虽然没有提示错误,而且编译成功,但通过反编译工具jd-gui完全无法逆向,软件提示一堆错误,但象nnezyj 之前修改的gy.java 这种代码量很少的 我这里也顺利编译,并且正确逆向、执行,不知道什么原因,光这个就折腾很久,还是不行,最后都是直接修改字节码,与编译效果都是一样的。只能采取这种下策了
if (n == 2) { <== 进入title#2执行的代码,可以看到仅是播放logo
if (np.C && np.a.getState() == 600) {
np.p();
}
if (is.b(11) == 0) {
lu.a(505);
is.a(10, 0);
bs.a(false);
}
else {
np.c(505);
is.a(10, 0);
bs.a(false);
}
}
else if (n == 3) { <== 进入title#3执行的代码,可以看到仅是播放警告
if (np.a.getState() == 600) {
np.p();
}
if (!ja.c()) {
lu.a(514);
}
else {
lu.a(507);
}
}
else if (n == 4) {
if (np.C && np.a.getState() == 600) { <== 进入title#4执行的代码,可以看到仅是播放trailer
np.p();
}
if (!np.C) {
np.c(513);
}
else {
lu.a(513);
}
}
else if (n == 5) {
if (np.a.getState() == 600) { <== 进入title#5执行的代码,可以看到仅是播放最后一个广告
np.p();
}
lu.a(508);
}
else if (n == 6) { <== 进入title#6执行的代码,最后一行执行feature(正片)之前的DTS演示
if (np.C && np.a.getState() == 600) {
np.p();
}
bd.a(false);
Label_0975: {
if (aa.a()) {
fd.a(true);
lu.a(f.q);
np.e(3);
aa.a(false);
}
else if (pl.b()) {
pl.a();
}
else {
if (ai.b()) {
v.d();
if (!bs.b()) {
fd.a(true);
ai.a(false);
lu.a(f.q, ai.a());
break Label_0975;
}
}
else {
if (on.c()) {
on.a(false);
lu.a(on.a(), on.b());
break Label_0975;
}
if (v.f()) {
v.d();
v.c();
break Label_0975;
}
if (is.b(105) != 0) {
is.a(105, 0);
final long b = ij.b();
final int c = ij.c();
int d;
if ((d = ij.d()) == 3) {
d = 1;
}
final int e = ij.e();
final boolean f = ij.f();
fd.a(true);
np.c(c);
np.a(new Time(b));
np.e(d);
np.f(e);
np.c(f);
ij.a();
is.a(11, 0);
bs.a(true);
break Label_0975;
}
if (is.b(101) != 0) {
final long b2 = ij.b();
final int c2 = ij.c();
final int d2 = ij.d();
final int e2 = ij.e();
final boolean f2 = ij.f();
fd.a(true);
np.c(c2);
np.a(new Time(b2));
np.e(d2);
np.f(e2);
np.c(f2);
ij.a();
is.a(11, 0);
bs.a(true);
break Label_0975;
}
if (ij.g() && is.b(11) == 500) {
fw.a(0, 0, 1920, 1080, new Color(0, 0, 0, 255));
fw.a(0, 0);
de.a(0, 0, 1920, 1080);
fw.d();
final long b3 = ij.b();
final int c3 = ij.c();
final int d3 = ij.d();
final int e3 = ij.e();
final boolean f3 = ij.f();
fd.a(true);
np.e(d3);
np.f(e3);
np.c(f3);
np.c(c3);
np.a(new Time(b3));
break Label_0975;
}
if (ij.g() && is.b(1015) != 0) {
is.a(1015, 0);
final long b4 = ij.b();
final int c4 = ij.c();
final int d4 = ij.d();
final int e4 = ij.e();
final boolean f4 = ij.f();
fd.a(true);
lu.a(c4, b4);
np.e(d4);
np.f(e4);
np.c(f4);
ij.a();
is.a(10, 500);
bs.a(true);
break Label_0975;
}
if (bs.a()) {
fd.a(true);
lu.a(f.q);
break Label_0975;
}
}
fd.a(true);
lu.a(509);
}
|
|