Back Forum Reply New

Need help changing a menu link w pgcedit

I am attaching the text file dump from pgcedit.

The menu VTSM/LU1/9 button number 2 ends up playing VTST1,4TTN, cell1
but it should go to
VTST1,3TTN, cell1

I have tried to change this but somehow I'm not finding the right way to do it. Can some one figure out which line I need to change?

trolltuning,
- We can't read your attachment (not approved yet)
- Your explanations are sketchy... Nobody will be able to help you with this little info.
- Is it the original that behaves like this?

You might want to post the PGC info for the menu in question (using PgcEdit) between [code]

jeanl

jeanl


Originally Posted by jeanltrolltuning,
- We can't read your attachment (not approved yet)
- Your explanations are sketchy... Nobody will be able to help you with this little info.
- Is it the original that behaves like this?

You might want to post the PGC info for the menu in question (using PgcEdit) between [code]

jeanl

jeanl

3)Yes it's the original,they made a mistake when they authored it.
2)I'm not sure what additional info you are looking for, but I'll try again in the mean time. First play takes me to the root menu-good. I select button2 and it takes me to
VTSM 1/LU1/PGC 9,PG1,Cell1 VOb ID3, Cell ID1 -good
I select button 2-it takes me to VTST 1,4TTN Title 4 Cell1-wrong. It should have played VTST1, 3TTN 3 Title 3 Cell1.
3)It won't let me post that many characters so I guess we'll have to wait for approval on the attachment.

trolltuning,
There's not straightforward way to fix that, because there's many ways menus buttons are handled. Unless you post the complete PGC info (select the PGC of the menu in PgcEdit, right click and select InfoGC, then paste that here between [code] marks), we won't be able to help. Or you can send me your ifos at jeanldvd at free dot fr and I'll take a look (zip them all up).

To clarify: some menus have specific button commands that set a register then jump somewhere. Other menus have identical button commands for all buttons, but rely on a register that indicate which button was last highlighted to make the correct choice.

If you want to fix it yourself:
- In PgcEdit, look at the button commands for the two buttons. You might be able to modify the wrong one to do what you want.
- If they're identical, then everything happens in the postcommand area (stuff that gets executed when playback exits the menu), and you'll have to debug the code to see why it's not going where you'd like it. But with the info you posted so far, nobody can help you with that...
jeanl

I sent you the whole DVD info file by e-mail but on rereading your instructions I realized the partial info would be short enough to post, but I think this doesn't give you all the post commands?

Code:
VTSM 1 , LU 1 (en) , 9  (0:30)  6b. - Chapters: n/a,  Programs: 1,  Cells: 1

********** pre commands:
[00 00 00 00 00 00 00 00]   1  NOP
[00 00 00 00 00 00 00 00]   2  NOP
[00 00 00 00 00 00 00 00]   3  NOP
[00 00 00 00 00 00 00 00]   4  NOP
[00 00 00 00 00 00 00 00]   5  NOP
[71 00 00 06 00 60 00 00]   6  Set gprm(6) =(mov) 96
[61 00 00 00 00 04 00 00]   7  Set gprm(0) =(mov) gprm(4)
[79 00 00 00 00 3F 00 00]   8  Set gprm(0) amp;=(and) 63
[00 B1 00 00 00 00 00 0B]   9  if ( gprm(0) != 0 ) then { Goto line 11 }
[71 00 00 00 00 01 00 00]  10  Set gprm(0) =(mov) 1
[79 00 00 00 00 3F 00 00]  11  Set gprm(0) amp;=(and) 63
[75 00 00 00 04 00 00 00]  12  Set gprm(0) *=(mul) 1024
[00 00 00 00 00 00 00 00]  13  NOP
[71 00 00 03 00 03 00 00]  14  Set gprm(3) =(mov) 3
[46 00 00 00 00 00 00 00]  15  (SetHL_BTN) Set Highlighted Button =(mov) gprm(0)
[71 00 00 01 00 00 00 00]  16  Set gprm(1) =(mov) 0
********** post commands:
[71 00 00 03 00 00 00 00]   1  Set gprm(3) =(mov) 0
[61 00 00 00 00 88 00 00]   2  Set gprm(0) =(mov) sprm(8:Highlighted button number)
[76 00 00 00 04 00 00 00]   3  Set gprm(0) /=(div) 1024
[00 B1 00 00 00 01 00 08]   4  if ( gprm(0) != 1 ) then { Goto line 8 }
[71 00 00 03 01 02 00 00]   5  Set gprm(3) =(mov) 258
[30 06 00 02 00 C0 00 00]   6  (JumpSS) Jump to VMGM PGC 2
[00 00 00 00 00 00 00 00]   7  NOP
[00 B1 00 00 00 02 00 0C]   8  if ( gprm(0) != 2 ) then { Goto line 12 }
[71 00 00 03 01 04 00 00]   9  Set gprm(3) =(mov) 260
[30 06 00 02 00 C0 00 00]  10  (JumpSS) Jump to VMGM PGC 2
[00 00 00 00 00 00 00 00]  11  NOP
[00 B1 00 00 00 03 00 10]  12  if ( gprm(0) != 3 ) then { Goto line 16 }
[71 00 00 03 01 05 00 00]  13  Set gprm(3) =(mov) 261
[30 06 00 02 00 C0 00 00]  14  (JumpSS) Jump to VMGM PGC 2
[00 00 00 00 00 00 00 00]  15  NOP
[00 B1 00 00 00 04 00 14]  16  if ( gprm(0) != 4 ) then { Goto line 20 }
[71 00 00 03 01 05 00 00]  17  Set gprm(3) =(mov) 261
[30 06 00 02 00 C0 00 00]  18  (JumpSS) Jump to VMGM PGC 2
[00 00 00 00 00 00 00 00]  19  NOP
[00 B1 00 00 00 05 00 18]  20  if ( gprm(0) != 5 ) then { Goto line 24 }
[71 00 00 03 01 06 00 00]  21  Set gprm(3) =(mov) 262
[30 06 00 02 00 C0 00 00]  22  (JumpSS) Jump to VMGM PGC 2
[00 00 00 00 00 00 00 00]  23  NOP
[00 B1 00 00 00 06 00 1C]  24  if ( gprm(0) != 6 ) then { Goto line 28 }
[71 00 00 04 00 01 00 00]  25  Set gprm(4) =(mov) 1
[20 04 00 00 00 00 00 08]  26  LinkPGCN PGC 8
[00 00 00 00 00 00 00 00]  27  NOP
[00 00 00 00 00 00 00 00]  28  NOP
********** cell commands:
[20 01 00 00 00 00 00 01]   1  LinkTopCell

********** menu buttons commands:
VOB ID 3,  Cell ID 1  (First NAV pack LBA=16698)
1 Group  Select button=0,  Action button=0
button  1: [20 01 00 00 00 00 00 0D]  LinkTailPGC
button  2: [20 01 00 00 00 00 00 0D]  LinkTailPGC
button  3: [20 01 00 00 00 00 00 0D]  LinkTailPGC
button  4: [20 01 00 00 00 00 00 0D]  LinkTailPGC
button  5: [20 01 00 00 00 00 00 0D]  LinkTailPGC
button  6: [20 01 00 00 00 00 00 0D]  LinkTailPGC

Playback time:  00:00:30.00 (at 30 fps)PG Playback mode:  sequentialPUOs:           787392 (0x000C03C0)     - TopPG or PrevPG search (0x00000040)     - NextPG search (0x00000080)     - Forward scan (0x00000100)     - Backward scan (0x00000200)     - Still off (0x00040000)     - Pause on (0x00080000)NextPGCN:       0PrevPGCN:       0GoUpPGCN:       1PGC Still Time: 0Subpic stream  1 status: 0x80000000 (streams for 4:3=0, wide=0, letterbox=0, panamp;scan=0)
But-  Prog. Cell  Type  Layer Res-  Still Cell  Playback     End          Entry    First    Last     Last     VOB Celltons              Flags Break tric- Time  Cmd.  Time         Time         VOBU     ILVU     VOBU     VOBU     ID  ID                   ted.                                        sector   End      Start    End
6     1     1     2     yes   no    0     1     00:00:30.00  00:00:30.00  16698    0        23763    23877    3   1First take a look to the precommands in VMGM PGC 2 and look for comparison to gprm(3) because 2 Buttons in your menu use the same command quot;Set gprm(3) =(mov) 261quot; and this value is compared somewhere in the pres of PGC 2.

Note the values in PGC 2 and correct the values in the postcommands of your attached VTS Menu

if ( gprm(0) != 2 ) then { Goto line 12 }
[71 00 00 03 01 04 00 00]   9  Set gprm(3) =(mov) 260
[30 06 00 02 00 C0 00 00]  10  (JumpSS) Jump to VMGM PGC 2
[00 00 00 00 00 00 00 00]  11  NOP
[00 B1 00 00 00 03 00 10]  12  if ( gprm(0) != 3 ) then { Goto line 16 }
[71 00 00 03 01 05 00 00]  13  Set gprm(3) =(mov) 261
[30 06 00 02 00 C0 00 00]  14  (JumpSS) Jump to VMGM PGC 2
[00 00 00 00 00 00 00 00]  15  NOP
[00 B1 00 00 00 04 00 14]  16  if ( gprm(0) != 4 ) then { Goto line 20 }
[71 00 00 03 01 05 00 00]  17  Set gprm(3) =(mov) 261
[30 06 00 02 00 C0 00 00]  18  (JumpSS) Jump to VMGM PGC 2
[00 00 00 00 00 00 00 00]  19  NOP
[00 B1 00 00 00 05 00 18]  20  if ( gprm(0) != 5 ) then { Goto line 24 }
[71 00 00 03 01 06 00 00]  21  Set gprm(3) =(mov) 262
[30 06 00 02 00 C0 00 00]  22  (JumpSS) Jump to VMGM PGC 2
Thanks to both of you. I made the change jeanl e-mailed me amd it worked on the first try. Still trying to understand how that amp; sign works though.

Oh, a amp;= b means that the bits of a and the bits of b are quot;andedquot; together and the result stored in a: the results has bits set where both a and b have bits set. In your case, it was
a amp;= 255.
255 has all 16 first bits set, and all bits above cleared. So a amp;= 255 has all the original lower bits of a (first 16 bits) and all upper bits cleared. So if a = 256*x + y, then aamp;255 = y because 256*y only has bits above the 16th bit.
So.... a amp;= 255 set a to the remainder of a / 256...

jeanl
¥
Back Forum Reply New