How to implement a Play All script using IFOEdit

THE PROBLEM

You have a series of short videos. You want to be able to view them individually or in sequence. However Studio just givs you the option to continue to the next chapter or jump to a menu.

THE SOLUTION

It's possible to do this by authoring the disk image under Studio 8 and then editing the IFO file prior to burning the disc. A DVD is controlled by a simple programming language. There are PRE commands, which are executed before the video, and POST commands which are executed after. The idea is to introduce some additional commands to make the disc do what we want. We will set a value in a register and then check that value later; if it is set we will advance to the next chapter; if not we return to the menu. You will need to download IFOEdit. This is a powerful tool that will allow you to reprogram the IFO file of any DVD. It does NOT contain any code to remove CSS encryption, so is a perfectly legitimate tool.

Begin by creating a sample DVD with a very short title (about 1 second) followed by three short AVIs. Insert a menu template at the start and allow it to create the chapter links. After each chapter - including the title - add an instruction to return to the menu. Create your disc image (select CREATE DISC IMAGE BUT DON'T BURN on the MAKE DISC options.)

Start IFOEdit and press the Open button - bottom left corner. Locate the VTS_01_0.IFO file, which is in the Auxiliary Files folder under [project name]/DVD/Video_ts
IFOedit will probably complain that files are not in upper case; don't worry about that. The tool will deconstruct the IFO file and display the contents in a readable (ish) format.

Select VTS_PCITI - Video Title Set Program Chain Information Table. a + will appear - click it to expand the table. Select VTS_PGC_1. In the lower window scroll down to the PGC Command Table. Look for the first - and probably only - POST command. This will be the instruction to go back to the main menu: CALLSS VTSM. Here's a screen shot:



Select the post command line and press the right mouse button to bring up a menu. Select INSERT COMMAND to introduce a NOP instruction. Then double-click on the NOP to bring up the hex editor. Change the value from 00 00 00 00 00 00 00 00 to 71 00 00 08 00 01 00 00 This is the code to set the content of register 8 to 1. I chose 8 because it wasn't being used anywhere else in the DVD - it's up to you to verify if it's safe to use in yours. Just change the 08 to a different value in this and all subsequent edit commands. Select CALSS VTSM again, bring up the menu and select EDIT COMMAND. Select Jump_VTS_TT and set the Title Number to 2. Press OK.  Now your screen should look like this:



That's the introductory chapter updated. Now we must update the next few chapters. For each chapter except the last add a new first POST command and use the hex editor to set the value to 00 D1 00 08 00 00 00 03 which translates to "If register 8 is non-zero, skip to instruction 3". Then create a third POST command - set it to Jump_VTS_TT to the next title. I'm assuming that your titles are in numerical order but there;s no reason why they have to be.



Finally for the last chapter we need to set the value of register 8 to zero before jumping to the menu - insert a new POST command and edit the hex code to 71 00 00 08 00 00 00 00



That's all there is to it. Now try viewing your disc with a tool such as PowerDVD. Ensure that the navigation works as expected. If all is well you can now burn your DVD using Studio or your preferred DVD writing package.