Jump to content

All my products and services are free. All my costs are met by donations I receive from my users. If you enjoy using any of my products, please donate to support me. Thank you for your support. Tom Speirs

Patreon

On the fly bezel generation


bkenobi

Recommended Posts

So I was sitting there watching TV with my arcade going along in screen saver mode when it struck me. I had no idea what game was playing. I knew it was a MAME title, but which one...NO CLUE!? I know there has been a request for Tom to generate an overlay that includes the system and game name, but that could prove very difficult due to the way the graphics drivers are likely used. Well, I had a thought for MAME titles.

Would it be possible to generate a bezel for MAME games on the fly? If so, it could be as simple as adding a black bar to the bottom with the rom name in white. I have no clue how this would be done, but it seems like it shouldn't technically be out of the question, just potentially difficult to do and possibly slow for the system to generate prior to loading the game. I would build a script to do something like this, but unfortunately with all of my programming experience, I have no clue how to accomplish this (apparently I only know useless codes and scripting languages :blink: ).

This thread is intended to generate discussion on the feasibility and implementation techniques that might be required prior to making a formal request. That way, if it isn't realistic, the sticky thread won't get clogged with unnecessary discussion.

Link to comment
Share on other sites

I knew there had been requests to make an overlay of MAME, but I guess I didn't understand what you were suggesting at the time. I've been thinking about it a bit more and realized that this is actually pretty easy for someone with the experience to generate simple graphics in code. I thought initially that it would be a bit complicated, but if you have MAME set up to shrink everything to fit it in the display, you don't even have to get the aspect ratio correct for the bezel. It would just be a matter of building the black rectangle for the top or bottom that is the same width as the game and building a .lay file that locates it correctly.

Link to comment
Share on other sites

I like this idea too, but there are some technical considerations:

- You can overlay text or graphics over pictures easily

- You can overlay text or graphics over video but it will effect frame rate. Every frame has to be grabbed then text drawn onto it.

- You can overlay text or graphics over Mame (or any game) but it's not very reliable. You have to use DirectDraw overlays.

Problems with using DirectDraw overlays:

- Only ATI cards allow colour keying, NVidia cards don't allow it. So only if you have an ATI card can you have a picture over Mame with the background "see through" to the game.

- You have to create the overlay before Mame runs otherwise Mame will lock the Primary surface needed for the overlay. The problem with this is if you use different resolutions in Mame the overlay will need to be re-created to the same resolution. You would have to know the resolution before running the game.

- They are unreliable and have unpredictable results depending on the PC config and video card.

- That being said it would probably be okay to have an overlay as a small rectangle at the bottom of the screen (instead of the overlay being the full size of the screen) displaying the text or marquee. That way changing resolution won't require recreating the overlay, and using an NVidia card means you can still see the game above the overlay rectangle.

Now onto my idea... Before you run the game you show a screen of the bezel and screenshot with the name of the game. But also use MAWS hall of fame to do count downs of the top 10 2d fighter games, or the top 100 Mame games, most played games, favourites etc. I've already made this feature request though.

P.S You can see how Direct Draw overlays work (or not work depending on your video card) using CPWizard :) Only bother if you have an ATI video card and you may need to enable the "force color keying" option. If it does crazy things don't blame me though ;)

Link to comment
Share on other sites

I like your idea HK, but I'm wondering if my initial suggestion was missunderstood...

This will only work with MAME, but it would not require any coding to implement in MAME or reducing any framerates beyond a standard bezel and it will work for ANY video card! Basically, just create a .lay xml file for MAME that points to an on the fly generated layout. This would just be a black rectangle that's a few pixels high and as wide as the game that contains the name. MAME already knows what to do with it, it's just a matter of constructing a black rectangle of the right size in .png format with the right text on it. Then, when MAME is loaded, the bezel location would need to be supplied (which may be a problem since I don't know if it can be passed like the rom location).

I think the overlay that you were talking about would be SWEET, but I was just thinking of something that could be implemented in the scale of minutes to hours rather than days to weeks. Somewhat of an interim step if you will.

Link to comment
Share on other sites

I getcha now, using the bezel file. That's a great idea!

Looks like you can use the -artwork_directory switch to point Mame to use different artwork files.

Give me a bit of time and I will definately write a program to do this. I'll talk to Tom about adding the above switch for attract mode.

So what would you like exactly? The bezel, or the game name? Anyone want to mock up a picture of how they think it should look?

This is a really great idea, BTW :)

Link to comment
Share on other sites

I think it doesnt need any graphics or anything just a black (or some contrasting color) area at the bottom of the screen and then text to display the name of the game.

That was my thought. Do I have it right bkenobi?

Link to comment
Share on other sites

I think HK's picture mockup he did looks great! I'd love to see something like that integrated into the system. Perhaps once the programming has been done, you could add a few lines of code to render the overlay as per user choice. That way the plugin will generate either the large version as per HK's design, or a small 10 pixel high description. Then in GameEx, have an option like this...

Attract Mode Info << [OFF] [sMALL] [LARGE] >>

Link to comment
Share on other sites

This idea has generated some enthusiastic interest from Tom, so we will be working together to integrate this feature into GameEx :)

Now I have some code working so far but there are some issues. Firstly I really like the extra info but it is a little unreadable on some of the lower resolution games. I'll attach some bezels for you all to check out. For now just copy these into your Mame's artwork folder to see what they look like.

Since Tom will be putting this directly into GameEx we can add an option to have different size info bars if you want. For now feedback on the current bezels running in Mame would be appreciated.

AttractBezels.zip

Link to comment
Share on other sites

So, this is just for screensaver, right? How about some transparancy on the black background? Or an option to set the background colour of the overlay so it can match your current theme? If using graphics, skinmakers could even created overlay graphics that match the themes?

Emph

Link to comment
Share on other sites

HK - That's WAY beyond what I had in mind...BUT I LOVE IT!!! I had just thought of a simple black box with the game's name in there, but you expanded on it so it looks really cool! Only problem would be coming up with similar graphics for other games on the fly. I suppose though that if nothing was available, it could just be the title...that would definitely be better than nothing anyway.

Thanks for taking my initial ramblings and running with it :wub:

EDIT: I just downloaded the quick set you made and...WOW. Those kick ass!!!!

Link to comment
Share on other sites

Ok, I tried the "demo" set and, well, from my POV, it's a start. I really like this idea, but for me, it didn't seem to work right. 3 of the games used were vertical games. When I loaded them up, the screen became stretched out of proportion. The bezel was oviously created to fill a 4x3 screen, not a 3x4 one. The bezel itself was in proper aspect ratio but the game was stretched horizontally to reach the edges of the bezel.. and it looked horrible. However, the SF2 game looked great. I know it get's compressed vertically to fit on the screen, but it wasn't as noticable as it was the vertical games.

Also, I like the black->blue gradient, but I gotta say something about the text. If you're going to use BLUE, then the RED has to go. They're too contrrasting and they're difficult to read. The yellow and the stars popped out great and looked fine. Maybe a lighter shade of red would look better, towards the pink side?

One last thing. The improper aspect ratio may be local on my end since this is also the first version of MAME i'm using that I've compiled. I probably have a setting wrong there or something. If so, this may not be an issue after all. Can somebody else report on this and tell me if it's my problem (and if it is, tell me how to fix it? ^_^)?

Link to comment
Share on other sites

Okay most of the groundwork for the initial release has been done. Tom just has to fully integrate the code with GameEx.

Those look sweet! I agree though, that I would only want them to run in attract mode if possible. I would hate to take away from the genuine arcade look and feel when I'm playing a game. My 2 cents.

They will only appear in attract mode, and there will probably be an option to turn them off completely.

Ok, I tried the "demo" set and, well, from my POV, it's a start. I really like this idea, but for me, it didn't seem to work right. 3 of the games used were vertical games. When I loaded them up, the screen became stretched out of proportion. The bezel was oviously created to fill a 4x3 screen, not a 3x4 one. The bezel itself was in proper aspect ratio but the game was stretched horizontally to reach the edges of the bezel.. and it looked horrible. However, the SF2 game looked great. I know it get's compressed vertically to fit on the screen, but it wasn't as noticable as it was the vertical games.

The vertical games have been fixed to correct aspect ratio so there is no stretching anymore.

Also, I like the black->blue gradient, but I gotta say something about the text. If you're going to use BLUE, then the RED has to go. They're too contrrasting and they're difficult to read. The yellow and the stars popped out great and looked fine. Maybe a lighter shade of red would look better, towards the pink side?

The final design is a darker blue, so the red doesn't look so bad. But I'll leave the final design up to Tom, he can easily change the colors. Also the back of the bezel is an image file that you can replace to be anything you like. So you can match it into your theme, or whatever. Maybe Tom will add options to change the text colours I'm not sure.

Attached image shows the default blue gradiant. The GameEx logo's only show when you don't have an icon or marquee for the game.

post-367-1192688103_thumb.png

Link to comment
Share on other sites

The vertical games have been fixed to correct aspect ratio so there is no stretching anymore.

So the stretching that I was seeing WAS a problem with the bezel and not a problem with my MAME setup.. That's a relief! :)

Link to comment
Share on other sites

This is a great folks ! I hope though that this will not affect the GameEX/MAME 'bezel' for vertical games (when you're actually playing a vertical game) cos i really like that.

Cheers,

iano.

:)

Link to comment
Share on other sites

It will NOT affect the bezels for actual game play in MAME...unless you play the game from screen saver of course. If you pick a game and launch it from a menu, it will load with whatever switches you have specified. The only thing different here is that the -bezel option and the -bezel_dir options will be specified to some GameEx directory location (please note that those actual switches are surely wrong, they are just for affect).

Link to comment
Share on other sites

Thanks Bkenobi for getting this on its feet! And HK for getting it put together!

I have a somewhat OT question. What is so special about version 9 that Ive seen posted lately? We are skipping from 8.88 to 9? Or am I missing something?

Link to comment
Share on other sites

heh nothing is special about 9...& no idea about what Tom's update schedule is...just been a target I've been focusing on to get stuff out the door by....tho by and large I've fallen down on nearly everything thus far.

That said generally when the primary number goes up a value new features are generally added...minor numbers generally reflect bug fixes.

So like the DB's you've been working on is a new feature...a big one at that.

The Import INI's I've been working on are a minor update.

Distributed loaders\wrappers medium new feature.

This Bezel feature has long been desired by a number of users...so its a fairly big one as well.

Search which last I checked got the most forum votes will likely been coming out in 9.x which is a major update.

Link to comment
Share on other sites

It will NOT affect the bezels for actual game play in MAME...unless you play the game from screen saver of course. If you pick a game and launch it from a menu, it will load with whatever switches you have specified. The only thing different here is that the -bezel option and the -bezel_dir options will be specified to some GameEx directory location (please note that those actual switches are surely wrong, they are just for affect).

Didn't think it would affect it but was just concerned as i love the GameEX/MAME bezel !

:)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...