Blu-ray + UHD/4K + Streaming

A community for authoring Blu-ray, 4K/UHD and more!

How to maintain the button selection on an HDMV menu when the menu loops

When authoring a looping HDMV 'Always On' menu (using DoStudio EX) we recommended to make sure that the button selection will be maintained when a loop happens. Otherwise the button focus will move to the default selected button as soon as the menu reaches the end and restarts potentially causing confusion for the users.

This task can be accomplished is several ways. Here is one method that is relatively easy to implement.

This authoring technique can be seen in the sample project Resume23, which can be downloaded here.

BD players have status registers that track the selected buttons and pages. It is possible to read the values of these registers called PSR (Player Status Register) and store the values in user-accessible registers (called GPR – General Purpose Registers), which will allow setting the correct button as soon as the loop happens.

By using the following script before loading any new playlist it is possible to store the last selected button as well as the last selected page:

Move [10] {10} //store the value of PSR10 (button ID)

And [10] 0xFFFF // convert the value of PSR10 so that only the ID is returned

Move [11] {11} // store the value of PSR11 (page ID)

And [11] 0xFF // convert the value of PSR11 so that only the ID is returned

Once these two values have been store it is possible to use another script in the first button of the menu that will redirect the button focus on the button that was selected prior to the loop:


SetButtonPage Button:[10] Page(effect:off):[11]


We also recommend making sure GPR 10 and 11 have been set before executing the above script. For example the very first time the main menu is entered these 2 GPR may contain no value. In the sample project Resume23 I used another GPR as a flag to keep track if the main menu is being played for the first time or not (the GPR number can be from any valid GPR):


In the first Movie Object’s code:


Move [101] 0 // this GPR is set to 0 if the menu plays for the first time or 1 if the //menu has been played already


In the first auto-action button of the main menu we use the following code and evaluate GPR[101] :


If [101] == 0 // select default page/button

SetButtonPage Button:0 Page(effect:off):1

If [101] != 0 // select last selected page/button

SetButtonPage Button:[10] Page(effect:off):[11]


Views: 252

Comments are closed for this blog post

Latest Activity

Marc Morris posted a discussion

DoStudio - simplest way to add an "Easter Egg" link?

I've already imported the menus - is there another way to add an easer egg without changing the…See More
Jul 31
Marc Morris replied to Marc Morris's discussion DoStudio - importing Chapters XML from FCPX
"Thanks Rob. Sadly it doesn't open fcpxml files. I purchased XtoCC, but I found a bug in the…"
Jun 13
Rob Aubey replied to Marc Morris's discussion DoStudio - importing Chapters XML from FCPX
"Marc, You could try this tool to see if it will convert the TC of the XML to the correct format.…"
Jun 10
Marc Morris posted a discussion

DoStudio - importing Chapters XML from FCPX

I've recently upgraded from FCP 7 to FCPX, and I had no problem exporting XML chapters from the old…See More
Jun 7

© 2019   Created by Denny and Rob.   Powered by

Badges  |  Report an Issue  |  Terms of Service