2COOL
4th April 2003, 09:37
Disabling/Bypassing Unwanted Titles (Version 2)
Courtesy of 2C:cool::cool:L
Whichever DVD I do, there’s always something unwanted to be bypassed. Whether it may be the FBI warnings, company logos, movie ratings, and even those long string of trailers prior to menu. It’s easy to bypass those if they resided in a Menu in my Menu Language Unit(MLU) section. Then, all I have to do with them it just to a “Delete Playback”. But, sometimes they don’t reside in a MLU but in a Title.
A Title can consist of a single Program Chain (PGC) or multiple PGCs. A Title is commonly used to store an entire movie or any items of content that can stand on their own.
Before you start this guide, you need to find out your unwanted Title number is, which Title Set it resides in, and the VTS_PGC_# in which you will do your edits.
Read Steps 1 and 2 in my previous Disabling/Bypassing Unwanted Titles (Version 1) (http://forum.doom9.org/showthread.php?s=&threadid=48566) guide to get your Title and Title Set number. Then go to that Title Set’s IFO / VTS Overview and you will get the PGC_#. To confirm you are at the right PGC_#, double left click on a chapter and preview in VTS_*_0.IFO / VTS overview / PGC_# (program chain). Hopefully, you got your unwanted PGC_# and we will now proceed with this guide. Sorry if this guide seems lengthy but I wanted to ensure that you understand the logic in your edits. This guide is split in two with step 5 in next post.
_____________________________________________________
1. Go to your VTS_*_0.IFO / VTS_PGCITI and click on the VTS_PGC_# that contains your unwanted Title.
_____________________________________________________
2. Now go to it’s PGC Command Table / Pre Commands. You’re going to have 3 scenarios here.
There is no “Break” instances in your Pre Commands. Go to Step 3
If-then Command(s) containing “Break” is/are present in your Pre Commands. Go to Step 4
There is a solid “Break” command in your Pre Commands. Go to Step 5 (next post)
_____________________________________________________
3. In your PGC Command Table of your VTS_PGC_#, we need to edit the “Number of Pre Commands” with a new value. Here’s the formula using the original values:
Number of Pre Commands = Number of Pre Commands + Number of Post Commands
Double left-click on Pre Command Value and enter new value using formula above. Below is the before and after results.
BEFORE
Number of Pre Commands.....5
Number of Post Commands....2
AFTER
Number of Pre Commands.....7
Number of Post Commands....2
By doing this, all your Post Commands will be shifted up and changed to Pre Commands. You will now be executing what was originally your Post Commands after your original Pre Commands. Your DVD won’t get a chance to play your PGC video segment.
Option: If you don't have any Cell Commands present, it's okay to change your Number of Post Commands to "0". This cleans it up a little.
That’s it for bypassing this PGC Title. You can repeat this step for other PGC Titles that fall into this scenario. If none, then save your IFO and preview to test it out.
_____________________________________________________
4. If you encounter a Compare (If-Then) command containing “Break” in a Pre Command area and it is TRUE, the player will terminate the execution of any remaining Pre Commands and start to display the video content stored in the PGC. If it is false, navigation will proceed with the next consecutive Pre Command.
Here are some common examples of what you might have. The examples are pretty much the same except for the Compare symbols. If you don’t know what they mean then here are the definitions.
==...equal to
!=...not equal to
>=...greater than or equal to
>....greater than
<=...less than or equal to
<....less than
Examples in Pre Commands
If GPreg<3> == (cmp-val)<1><’ then Break............[00 a2 00 03 00 01 00 00]
If GPreg<3> != (cmp-val)<1><’ then Break............[00 b2 00 03 00 01 00 00]
If GPreg<3> >= (cmp-val)<1><’ then Break............[00 c2 00 03 00 01 00 00]
If GPreg<3> >..(cmp-val)<1><’ then Break............[00 d2 00 03 00 01 00 00]
If GPreg<3> <= (cmp-val)<1><’ then Break............[00 e2 00 03 00 01 00 00]
If GPreg<3> <..(cmp-val)<1><’ then Break............[00 f2 00 03 00 01 00 00]
In translating the first example, If GPreg<3> == (cmp-val)<1><’ then Break, this is what is means in plain talk: If GPreg (General Parameter Register) #3 is equal to the value of 1 then bypass all remaining Pre Commands and play the video content in stored in the PGC (Program Chain).
Now, what we need to do is edit the “Number of Pre Commands” with a new value. Here’s the formula using the original values:
Number of Pre Commands = Number of Pre Commands + Number of Post Commands
The following PGC Command Table examples are the BEFORE and AFTER editing the “Number of Pre Commands” value.
BEFORE
PGC Command Table:
Number of Pre Commands...........3................................[0003]
Number of Post Commands..........1................................[0001]
Number of Cell Commands..........0................................[0000]
Size of Command table in bytes...39...............................[0027]
1.Pre Command....Set GPreg<1> mov (set-val)<0>....................[71 00 00 01 00 00 00 00]
2.Pre Command....Set GPreg<2> mov (set-val)<0>....................[71 00 00 02 00 00 00 00]
3.Pre Command....If GPreg<3> == (cmp-val)<1><' then Break.........[00 a2 00 03 00 01 00 00]
1.Post Command...(CallSS VMGM) Call VMG PGC: 9 [Resume Cell: 1]...[30 08 00 09 01 c0 00 00]
AFTER
PGC Command Table:
Number of Pre Commands...........4................................[0004]
Number of Post Commands..........1................................[0001]
Number of Cell Commands..........0................................[0000]
Size of Command table in bytes...39...............................[0027]
1.Pre Command....Set GPreg<1> mov (set-val)<0>....................[71 00 00 01 00 00 00 00]
2.Pre Command....Set GPreg<2> mov (set-val)<0>....................[71 00 00 02 00 00 00 00]
3.Pre Command....If GPreg<3> == (cmp-val)<1><' then Break.........[00 a2 00 03 00 01 00 00]
4.Pre Command...(CallSS VMGM) Call VMG PGC: 9 [Resume Cell: 1]....[30 08 00 09 01 c0 00 00]
1.Post Command...NOP..............................................[01 00 02 00 00 00 00 00]
Option: If you don't have any Cell Commands present, it's okay to change your Number of Post Commands to "0". This cleans it up a little.
Do you see Post Command #1 shift up and become Pre Command #4? If Pre Command #3 was true, we would bypass Pre Command #4. We don’t want that. What we want is instead of a “then Break”, we want a “then Goto line# 4” since it was originally our first Post Command. It’s easy to hexedit this. Now, the only values highlighted in RED below are the only ones we need to be concerned about.
3.Pre Command...If GPreg<3> == (cmp-val)<1><' then Break..........[00 a2 00 03 00 01 00 00]
See the value “a2”? By changing the 2 to a 1 will change our Command from a “Break” to “Goto line#”. Now see the value 00? This is the hex value of the line# we need to jump to and that should be #4, according to our above example.Before we do any edits in your IFOs, it is a good practice to backup your all your IFOs into a separate folder so that we can always go back to our original settings if we edited wrong.
To hexedit your hex values, double-left click on line and your HexEdit Module window will appear. Below is what I see with my example Pre Command #3.
00000000 00 A2 00 03 00 01 00 00 ........
Place your cursor in the module and click on any hex value in blue. You only do this once since you can now just move your cursor with your keyboard arrow keys. Type in the values that you need to change and press OK to exit HexEdit Module if you’re confident in your edit. To refresh, your new edit Pre Commands, click outside of your VTS_PGC_# and click back to check. Below is what we should have and this is the new result we want.
OLD > 3.Pre Command...If GPreg<3> == (cmp-val)<1><' then Break..........[00 a2 00 03 00 01 00 00]
NEW > 3.Pre Command...If GPreg<3> == (cmp-val)<1><' then Goto line# 4...[00 a1 00 03 00 01 00 04]
And here is the new PGC Command Table
PGC Command Table:
Number of Pre Commands...........4................................[0004]
Number of Post Commands..........1................................[0001]
Number of Cell Commands..........0................................[0000]
Size of Command table in bytes...39...............................[0027]
1.Pre Command....Set GPreg<1> mov (set-val)<0>....................[71 00 00 01 00 00 00 00]
2.Pre Command....Set GPreg<2> mov (set-val)<0>....................[71 00 00 02 00 00 00 00]
3.Pre Command....If GPreg<3> == (cmp-val)<1><' then Goto line# 4..[00 a1 00 03 00 01 00 04]
4.Pre Command...(CallSS VMGM) Call VMG PGC: 9 [Resume Cell: 1]....[30 08 00 09 01 c0 00 00]
1.Post Command...NOP..............................................[01 00 02 00 00 00 00 00]
Courtesy of 2C:cool::cool:L
Whichever DVD I do, there’s always something unwanted to be bypassed. Whether it may be the FBI warnings, company logos, movie ratings, and even those long string of trailers prior to menu. It’s easy to bypass those if they resided in a Menu in my Menu Language Unit(MLU) section. Then, all I have to do with them it just to a “Delete Playback”. But, sometimes they don’t reside in a MLU but in a Title.
A Title can consist of a single Program Chain (PGC) or multiple PGCs. A Title is commonly used to store an entire movie or any items of content that can stand on their own.
Before you start this guide, you need to find out your unwanted Title number is, which Title Set it resides in, and the VTS_PGC_# in which you will do your edits.
Read Steps 1 and 2 in my previous Disabling/Bypassing Unwanted Titles (Version 1) (http://forum.doom9.org/showthread.php?s=&threadid=48566) guide to get your Title and Title Set number. Then go to that Title Set’s IFO / VTS Overview and you will get the PGC_#. To confirm you are at the right PGC_#, double left click on a chapter and preview in VTS_*_0.IFO / VTS overview / PGC_# (program chain). Hopefully, you got your unwanted PGC_# and we will now proceed with this guide. Sorry if this guide seems lengthy but I wanted to ensure that you understand the logic in your edits. This guide is split in two with step 5 in next post.
_____________________________________________________
1. Go to your VTS_*_0.IFO / VTS_PGCITI and click on the VTS_PGC_# that contains your unwanted Title.
_____________________________________________________
2. Now go to it’s PGC Command Table / Pre Commands. You’re going to have 3 scenarios here.
There is no “Break” instances in your Pre Commands. Go to Step 3
If-then Command(s) containing “Break” is/are present in your Pre Commands. Go to Step 4
There is a solid “Break” command in your Pre Commands. Go to Step 5 (next post)
_____________________________________________________
3. In your PGC Command Table of your VTS_PGC_#, we need to edit the “Number of Pre Commands” with a new value. Here’s the formula using the original values:
Number of Pre Commands = Number of Pre Commands + Number of Post Commands
Double left-click on Pre Command Value and enter new value using formula above. Below is the before and after results.
BEFORE
Number of Pre Commands.....5
Number of Post Commands....2
AFTER
Number of Pre Commands.....7
Number of Post Commands....2
By doing this, all your Post Commands will be shifted up and changed to Pre Commands. You will now be executing what was originally your Post Commands after your original Pre Commands. Your DVD won’t get a chance to play your PGC video segment.
Option: If you don't have any Cell Commands present, it's okay to change your Number of Post Commands to "0". This cleans it up a little.
That’s it for bypassing this PGC Title. You can repeat this step for other PGC Titles that fall into this scenario. If none, then save your IFO and preview to test it out.
_____________________________________________________
4. If you encounter a Compare (If-Then) command containing “Break” in a Pre Command area and it is TRUE, the player will terminate the execution of any remaining Pre Commands and start to display the video content stored in the PGC. If it is false, navigation will proceed with the next consecutive Pre Command.
Here are some common examples of what you might have. The examples are pretty much the same except for the Compare symbols. If you don’t know what they mean then here are the definitions.
==...equal to
!=...not equal to
>=...greater than or equal to
>....greater than
<=...less than or equal to
<....less than
Examples in Pre Commands
If GPreg<3> == (cmp-val)<1><’ then Break............[00 a2 00 03 00 01 00 00]
If GPreg<3> != (cmp-val)<1><’ then Break............[00 b2 00 03 00 01 00 00]
If GPreg<3> >= (cmp-val)<1><’ then Break............[00 c2 00 03 00 01 00 00]
If GPreg<3> >..(cmp-val)<1><’ then Break............[00 d2 00 03 00 01 00 00]
If GPreg<3> <= (cmp-val)<1><’ then Break............[00 e2 00 03 00 01 00 00]
If GPreg<3> <..(cmp-val)<1><’ then Break............[00 f2 00 03 00 01 00 00]
In translating the first example, If GPreg<3> == (cmp-val)<1><’ then Break, this is what is means in plain talk: If GPreg (General Parameter Register) #3 is equal to the value of 1 then bypass all remaining Pre Commands and play the video content in stored in the PGC (Program Chain).
Now, what we need to do is edit the “Number of Pre Commands” with a new value. Here’s the formula using the original values:
Number of Pre Commands = Number of Pre Commands + Number of Post Commands
The following PGC Command Table examples are the BEFORE and AFTER editing the “Number of Pre Commands” value.
BEFORE
PGC Command Table:
Number of Pre Commands...........3................................[0003]
Number of Post Commands..........1................................[0001]
Number of Cell Commands..........0................................[0000]
Size of Command table in bytes...39...............................[0027]
1.Pre Command....Set GPreg<1> mov (set-val)<0>....................[71 00 00 01 00 00 00 00]
2.Pre Command....Set GPreg<2> mov (set-val)<0>....................[71 00 00 02 00 00 00 00]
3.Pre Command....If GPreg<3> == (cmp-val)<1><' then Break.........[00 a2 00 03 00 01 00 00]
1.Post Command...(CallSS VMGM) Call VMG PGC: 9 [Resume Cell: 1]...[30 08 00 09 01 c0 00 00]
AFTER
PGC Command Table:
Number of Pre Commands...........4................................[0004]
Number of Post Commands..........1................................[0001]
Number of Cell Commands..........0................................[0000]
Size of Command table in bytes...39...............................[0027]
1.Pre Command....Set GPreg<1> mov (set-val)<0>....................[71 00 00 01 00 00 00 00]
2.Pre Command....Set GPreg<2> mov (set-val)<0>....................[71 00 00 02 00 00 00 00]
3.Pre Command....If GPreg<3> == (cmp-val)<1><' then Break.........[00 a2 00 03 00 01 00 00]
4.Pre Command...(CallSS VMGM) Call VMG PGC: 9 [Resume Cell: 1]....[30 08 00 09 01 c0 00 00]
1.Post Command...NOP..............................................[01 00 02 00 00 00 00 00]
Option: If you don't have any Cell Commands present, it's okay to change your Number of Post Commands to "0". This cleans it up a little.
Do you see Post Command #1 shift up and become Pre Command #4? If Pre Command #3 was true, we would bypass Pre Command #4. We don’t want that. What we want is instead of a “then Break”, we want a “then Goto line# 4” since it was originally our first Post Command. It’s easy to hexedit this. Now, the only values highlighted in RED below are the only ones we need to be concerned about.
3.Pre Command...If GPreg<3> == (cmp-val)<1><' then Break..........[00 a2 00 03 00 01 00 00]
See the value “a2”? By changing the 2 to a 1 will change our Command from a “Break” to “Goto line#”. Now see the value 00? This is the hex value of the line# we need to jump to and that should be #4, according to our above example.Before we do any edits in your IFOs, it is a good practice to backup your all your IFOs into a separate folder so that we can always go back to our original settings if we edited wrong.
To hexedit your hex values, double-left click on line and your HexEdit Module window will appear. Below is what I see with my example Pre Command #3.
00000000 00 A2 00 03 00 01 00 00 ........
Place your cursor in the module and click on any hex value in blue. You only do this once since you can now just move your cursor with your keyboard arrow keys. Type in the values that you need to change and press OK to exit HexEdit Module if you’re confident in your edit. To refresh, your new edit Pre Commands, click outside of your VTS_PGC_# and click back to check. Below is what we should have and this is the new result we want.
OLD > 3.Pre Command...If GPreg<3> == (cmp-val)<1><' then Break..........[00 a2 00 03 00 01 00 00]
NEW > 3.Pre Command...If GPreg<3> == (cmp-val)<1><' then Goto line# 4...[00 a1 00 03 00 01 00 04]
And here is the new PGC Command Table
PGC Command Table:
Number of Pre Commands...........4................................[0004]
Number of Post Commands..........1................................[0001]
Number of Cell Commands..........0................................[0000]
Size of Command table in bytes...39...............................[0027]
1.Pre Command....Set GPreg<1> mov (set-val)<0>....................[71 00 00 01 00 00 00 00]
2.Pre Command....Set GPreg<2> mov (set-val)<0>....................[71 00 00 02 00 00 00 00]
3.Pre Command....If GPreg<3> == (cmp-val)<1><' then Goto line# 4..[00 a1 00 03 00 01 00 04]
4.Pre Command...(CallSS VMGM) Call VMG PGC: 9 [Resume Cell: 1]....[30 08 00 09 01 c0 00 00]
1.Post Command...NOP..............................................[01 00 02 00 00 00 00 00]