Pause Screen Rotation

gooch

Member
Supporter
RL Member
I have a cab with screen rotation, so I'm LOVING the new HL/HP option of screen rotation. A few questions/suggestions that I hop I'm not to blind to have seen how to do it.

- Is there a way to set the rotation for a system as rotated within the game, but *not* rotated at the Main Menu? I'm using HyperSpin and the HL Daemon so I can use HyperPause outside of a game, but my Main Menu is horizontal.

- Is there a way to use MAME's built-in awareness of vertical games for the rotation? I use the -autoror option to automatically rotate my MAME games and menu based on game and it works great. I know I can set per-game and it probably wouldn't take more than a few hours to identify the games in my MAME favorites and configure them, but I hope you'd agree software automation would be better for the masses.

- Can screenshots be made aware of the screen rotation? A rotated screen comes out sideways for me.

- Can vertical games utilize a separate set of background/Layer 2/Layer 3/etc graphics? (EDIT: I'm referring to Fade here as well as the in-HyperPause graphics) Not a big deal, it just would look a bit nicer if graphics weren't stretched and squished within HyperPause.

Thanks,

/gg
 

bleasby

RocketLauncher Developer
Developer
Re: HyperPause Screen Rotation

I have a cab with screen rotation, so I'm LOVING the new HL/HP option of screen rotation. A few questions/suggestions that I hop I'm not to blind to have seen how to do it.

Nice to see that some users are already using this. :)
It gave me a good amount of work to implement it (mostly because I wanted to use HL on a pinball cabinet).

- Is there a way to set the rotation for a system as rotated within the game, but *not* rotated at the Main Menu? I'm using HyperSpin and the HL Daemon so I can use HyperPause outside of a game, but my Main Menu is horizontal.

I don't know if I understand this correctly. Do you want to set to draw the menus rotated only for some games?

If that is the case, if I am not mistaken you could use the "game options.ini" file to define this.
Basically, if you have the MAME system and the ikaruga game, set the Screen_Rotation_Angle inside the game options.ini file like the example bellow:
Code:
HyperLaunch\Settings\MAME \Game Options.ini

[ikaruga]
Screen_Rotation_Angle=270

I don't know how this can be done directly from HLHQ. Brolly would have to chime in on that.

- Is there a way to use MAME's built-in awareness of vertical games for the rotation? I use the -autoror option to automatically rotate my MAME games and menu based on game and it works great. I know I can set per-game and it probably wouldn't take more than a few hours to identify the games in my MAME favorites and configure them, but I hope you'd agree software automation would be better for the masses.

You are going to need to do some module editing for that.
Inside the MAME module there is a function called ListXMLInfo if I am not mistaken. This function acquires the game rotation angle info from MAME between other things. You would need to run this function, and use its value to set the screenRotationAngle variable to the correct rotation value.
I don't know if it would be possible to do this before creating the fade screen.

Anyway, the best alternative is to create the game options.ini file that I mentioned above with the info set about all rotated games.
If you know your way around coding, you could use the ListXMLInfo function to give you the orientation on how to create a script for updating the game options.ini file automatically based on the MAME info. Unfortunately, currently I do not have the time for helping you on creating this helper script.

- Can screenshots be made aware of the screen rotation? A rotated screen comes out sideways for me.

Do you want to auto rotate the screenshots taken from inside hyperlaunch?
if that is the case, when I can I will update the code to automatically rotate the screenshots made when the screenRotationAngle variable is different from zero.

- Can vertical games utilize a separate set of background/Layer 2/Layer 3/etc graphics? (EDIT: I'm referring to Fade here as well as the in-HyperPause graphics) Not a big deal, it just would look a bit nicer if graphics weren't stretched and squished within HyperPause.

Every HLHQ field that accepts screen coordinates (like width, height,...) now accepts two values separated by the "|" character. Therefore, if you want to a image to be showed with different widths on the vertical mode (200 pixels for example) versus the landscape mode (300 pixels for example), you just need to set the width field for it with this value "300|200". The first value, 300, will only be applied to the screen when the screen width is higher than the screen height (landscape mode), and the 200 will be applied on the opposite (portrait mode).
I am also introducing some additional options to the fade code to remove any unnecessary image stretch to its components.

These should be enough to support any screen rotation parameters automatically without the need for duplicating any artwork or moving folders.
Anyway, for any game that you want to show a different image, you just need to create the specific folder for the game on the fade media folder. So if you want different assets to be showed on the ikaruga (vertical game example), just move the image to HyperLaunch\Media\Fade\MAME\Ikaruga\layer 3.png.

About HyperPause, I would be glad to see any screenshot that could show which graphics do you see stretched because I was careful to try to avoid that when I introduced the screen rotation code to it.
 

newoski

Member
Supporter
RL Member
Re: HyperPause Screen Rotation

Hi Guys,

How do I enable rotation for HyperPause? Sounds fantastic for Taito!
 

gooch

Member
Supporter
RL Member
Re: HyperPause Screen Rotation

Nice to see that some users are already using this. :)
It gave me a good amount of work to implement it (mostly because I wanted to use HL on a pinball cabinet).

Yes, fantastic for that fringe case of people with rotating monitors and pincabs. Brilliant.


I don't know if I understand this correctly. Do you want to set to draw the menus rotated only for some games?

What I mean is that when I set either a system or a game to rotate, it not only rotates upon game launch for Fade and HyperPause, but it also rotates when I am in the HyperSpin Menu in the context of a system. I would like HyperSpin to and any HL-Daemon-initiated HyperPause menus to be horizontal and then rotate only once the game is launched since that is when my screen rotates. Right now if a game or system is set to rotate within HL and I press my HyperPause button while I'm still in the HyperSpin front end, the HyperPause menu is rotated which is awkward.


You are going to need to do some module editing for that.
Inside the MAME module there is a function called ListXMLInfo if I am not mistaken. This function acquires the game rotation angle info from MAME between other things. You would need to run this function, and use its value to set the screenRotationAngle variable to the correct rotation value.
I don't know if it would be possible to do this before creating the fade screen.

Anyway, the best alternative is to create the game options.ini file that I mentioned above with the info set about all rotated games.
If you know your way around coding, you could use the ListXMLInfo function to give you the orientation on how to create a script for updating the game options.ini file automatically based on the MAME info. Unfortunately, currently I do not have the time for helping you on creating this helper script.

I will give this a try, and that's a fantastic solution solution for creating the helper script so I don't spend a ridiculous amount of time creating all the options.ini I would need to do. If I complete this successfully I'll share with the community either the script or just edited files when I'm done.

Do you want to auto rotate the screenshots taken from inside hyperlaunch?
if that is the case, when I can I will update the code to automatically rotate the screenshots made when the screenRotationAngle variable is different from zero.

Yes please. I think it will add a nice touch, similar to when a phone recognizes its orientation when it stores a photo. (I know smart phones use oscilloscopes and this would be a manual command).

Every HLHQ field that accepts screen coordinates (like width, height,...) now accepts two values separated by the "|" character. Therefore, if you want to a image to be showed with different widths on the vertical mode (200 pixels for example) versus the landscape mode (300 pixels for example), you just need to set the width field for it with this value "300|200". The first value, 300, will only be applied to the screen when the screen width is higher than the screen height (landscape mode), and the 200 will be applied on the opposite (portrait mode).
I am also introducing some additional options to the fade code to remove any unnecessary image stretch to its components.

These should be enough to support any screen rotation parameters automatically without the need for duplicating any artwork or moving folders.
Anyway, for any game that you want to show a different image, you just need to create the specific folder for the game on the fade media folder. So if you want different assets to be showed on the ikaruga (vertical game example), just move the image to HyperLaunch\Media\Fade\MAME\Ikaruga\layer 3.png.

About HyperPause, I would be glad to see any screenshot that could show which graphics do you see stretched because I was careful to try to avoid that when I introduced the screen rotation code to it.

Let me try to give you some screen shots to show my example and I think it will make more sense. Essentially the problem is that is a for example a background graphic is created as 1280x720 and then the screen rotation occurs, it's still the same graphic, just being "squished" horizontally from 1280 to 720 and "stretched" vertically from 720 to 1280. The positioning of progress bars and Zero Dreams info bars is affected as well. I certainly could create specific graphics (Layer 1, Layer 2, Info Bar, etc) and create a game folder to instruct HL to utilize those graphics instead, but that results in many duplicated files since I can't store the overrides once, I'll have to store them for each and every game within MAME that's vertical. Before you spend any time on this whatsoever, let me keep tooling around to try to get things in Fade the way I want them I'm having some other Fade issues since upgrading to HL 3.1.x since I use Zero Dreams that I may need to post to the forum under a separate thread.

Thanks for all your hard work on this!

/gg
 

gooch

Member
Supporter
RL Member
Re: HyperPause Screen Rotation

Hi Guys,

How do I enable rotation for HyperPause? Sounds fantastic for Taito!

The method of rotation is chosen under General Settings > Third Party > Screen Rotation. Whether or not to actually rotate is under Settings > Main Settings > Settings. Individual games can be set to override the System or Global settings by going to Games > System Audit > (Select Game) > Configure Specific Game Options button (wrench).

/gg
 

bleasby

RocketLauncher Developer
Developer
Re: HyperPause Screen Rotation

What I mean is that when I set either a system or a game to rotate, it not only rotates upon game launch for Fade and HyperPause, but it also rotates when I am in the HyperSpin Menu in the context of a system. I would like HyperSpin to and any HL-Daemon-initiated HyperPause menus to be horizontal and then rotate only once the game is launched since that is when my screen rotates. Right now if a game or system is set to rotate within HL and I press my HyperPause button while I'm still in the HyperSpin front end, the HyperPause menu is rotated which is awkward.

Ok. I do understand now. This would for sure require some new setting to be handled or a launch script to be executed. I will take a look if I can figure out the best way for doing this and will get back to you.

Let me try to give you some screen shots to show my example and I think it will make more sense. Essentially the problem is that is a for example a background graphic is created as 1280x720 and then the screen rotation occurs, it's still the same graphic, just being "squished" horizontally from 1280 to 720 and "stretched" vertically from 720 to 1280. The positioning of progress bars and Zero Dreams info bars is affected as well. I certainly could create specific graphics (Layer 1, Layer 2, Info Bar, etc) and create a game folder to instruct HL to utilize those graphics instead, but that results in many duplicated files since I can't store the overrides once, I'll have to store them for each and every game within MAME that's vertical. Before you spend any time on this whatsoever, let me keep tooling around to try to get things in Fade the way I want them I'm having some other Fade issues since upgrading to HL 3.1.x since I use Zero Dreams that I may need to post to the forum under a separate thread.

I will see if I can add support for a vertical folder for fade and background images as a future feature like I already did for the bezel feature. I don't know if this will be difficult to add although, so wait until I can figured out that.

About fade, if you can just wait a few more days because we are working on some changes that will be released on the next days to fix some resizing bugs on the current code.
 

gooch

Member
Supporter
RL Member
Re: HyperPause Screen Rotation

Ok. I do understand now. This would for sure require some new setting to be handled or a launch script to be executed. I will take a look if I can figure out the best way for doing this and will get back to you.

Maybe a check for HyperSpin focus when the HyperPause button is pressed? Or substitute for whatever Front End plugin is active.

I will see if I can add support for a vertical folder for fade and background images as a future feature like I already did for the bezel feature. I don't know if this will be difficult to add although, so wait until I can figured out that.

Yes, similar to the bezels. Thank you, let me know if it turns out to be a pain the @$$.

About fade, if you can just wait a few more days because we are working on some changes that will be released on the next days to fix some resizing bugs on the current code.

Awesome, I'll sit back and wait. I've been going round and round with the two previous Fade incarnations of the beta code and had assumed I was just doing something wrong. Once the new code comes out I'll take another stab at fixing my once-beautiful fade screens. I'll post any issues to the forum.

/gg
 

brolly

Administrator
Developer
Re: HyperPause Screen Rotation

bleasby, regarding the MAME module even though we are reading the game orientation we never send a CLI parameter to MAME for rotating the game screen, so I don't think this is actually working unless the user specifies the parameter in the module settings for each game.

gooch, how are you rotating your MAME games? Are you setting the Params option as -autoror for each vertical game on HLHQ? Because otherwise I think the game screen will never rotate even if HyperLaunch is running in vertical mode, would be very simple to add support this to the module, but like bleasby said to actually rotate the HyperLaunch screens you'd need to know this info earlier in order to be able to rotate the fade screen, so the easiest way is to fill the Game Options.ini file unless you want to do some coding in ahk which would also make the fade screen take longer to show.

The method of rotation is chosen under General Settings > Third Party > Screen Rotation.
Careful that the method of rotation you set here has nothing to do with HyperLaunch/HyperPause rotation, this is the method used for rotating the actual emulator screens on modules that support (and in cases the emulator doesn't have built-in screen rotation) it like the vertical Type X games for instance. HyperLaunch/HyperPause rotation is fully done in code and the only setting you need for it is in Settings > Main Settings > Settings > Screen Rotation Angle.
 

gooch

Member
Supporter
RL Member
Re: HyperPause Screen Rotation

gooch, how are you rotating your MAME games? Are you setting the Params option as -autoror for each vertical game on HLHQ? Because otherwise I think the game screen will never rotate even if HyperLaunch is running in vertical mode, would be very simple to add support this to the module, but like bleasby said to actually rotate the HyperLaunch screens you'd need to know this info earlier in order to be able to rotate the fade screen, so the easiest way is to fill the Game Options.ini file unless you want to do some coding in ahk which would also make the fade screen take longer to show.

I'm using -autoror as a command line option for the MAME module, though I *think* I could have just as easily set the option within my mame.ini. It detects which games are vertical and horizontal and rotates automatically. There's only one game, Super Punch-Out, that it doesn't do it properly so I use -ror for this game specifically. It's important that I do it with these options versus rotating it within the MAME menu because these CLI options also rotate the MAME menu itself.

I'm thinking that if HL needs to know sooner than MAME tells it, maybe HL could check the same file that MAME checks first before it loads Fade. I thought this was catver.ini, but I'm looking at mine now and I don't think it has this information.

Careful that the method of rotation you set here has nothing to do with HyperLaunch/HyperPause rotation, this is the method used for rotating the actual emulator screens on modules that support (and in cases the emulator doesn't have built-in screen rotation) it like the vertical Type X games for instance. HyperLaunch/HyperPause rotation is fully done in code and the only setting you need for it is in Settings > Main Settings > Settings > Screen Rotation Angle.

Whoops, my bad.

/gg
 

djvj

Administrator
Staff member
Developer
Re: HyperPause Screen Rotation

The mame module would have to be changed to check that file for whatever you are looking for in between these lines:
StartModule()
.....check here
BezelGUI()
FadeInStart()
 

brolly

Administrator
Developer
Re: HyperPause Screen Rotation

I'm using -autoror as a command line option for the MAME module, though I *think* I could have just as easily set the option within my mame.ini. It detects which games are vertical and horizontal and rotates automatically. There's only one game, Super Punch-Out, that it doesn't do it properly so I use -ror for this game specifically. It's important that I do it with these options versus rotating it within the MAME menu because these CLI options also rotate the MAME menu itself.
You mean setting the rotate setting to true? Problem with that is that you might end up with the game sideways as this will rotate the game to whatever orientation the original monitor was using, so if the game originally rotated to a different way from your motor it won't work right.
Yes, that's what I meant we can easily add support for rotating the game screen as well. And yeah HL needs to know sooner than MAME since it needs to rotate before the fade screen comes up, you can do it as djvj said, but this will mean your fade screen will take longer to come up since you'll need to parse the XML to find rotation info while if you use Games Options.ini there will be no delay at all since HL will know from the beginning it needs to rotate.
 

bleasby

RocketLauncher Developer
Developer
Re: HyperPause Screen Rotation

bleasby, regarding the MAME module even though we are reading the game orientation we never send a CLI parameter to MAME for rotating the game screen, so I don't think this is actually working unless the user specifies the parameter in the module settings for each game.

I created that code for handling specifically bezel vertical and horizontal screens.

You could always use the same info to support new features if you want.
 
Top