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: 240

Comments are closed for this blog post

Latest Activity

Matt Stoddart replied to Brad Larson's discussion Will DoStudio Encoder work with Windows 10 Pro?
"Have you tested the authoring part on Windows 10?I had mixed results with DoStudio Indie on Windows…"
Jan 30
Denny and Rob replied to Brad Larson's discussion Will DoStudio Encoder work with Windows 10 Pro?
"Hi Brad, Even though DSE / DoStudio encoder is not fully supported for Windows 10, it may work…"
Jan 29
Brad Larson posted a discussion

Will DoStudio Encoder work with Windows 10 Pro?

We are upgrading equipment and need to know.Thanks!See More
Jan 29
lilian posted a discussion

Global licence ID empty

Hi,I'd like to make a brand new installation of DSA.When I run it, the global licence ID field is…See More
Jan 26

© 2018   Created by Denny and Rob.   Powered by

Badges  |  Report an Issue  |  Terms of Service