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

Comments are closed for this blog post

Latest Activity

Rob Aubey posted a blog post
Mar 30
Rob Aubey replied to Scott Rossi's discussion DoStudio
"Hello Scott, Unfortunately, DoStudio is not for sale any longer. I would be interested speaking…"
Feb 8
Scott Rossi posted a discussion


I have a customer that wants Disc audio in Pure Audio.  I believe DoStudio was able to do it.  Is…See More
Feb 8
Justin Sevakis replied to Justin Sevakis's discussion UHD Blu-ray playback software
"Uh, well, the most recent patch brought it to v18.0.48757.9505."
Feb 1

© 2019   Created by Denny and Rob.   Powered by

Badges  |  Report an Issue  |  Terms of Service