MAME 2014 .152 Questions [Win x64]

I’ve pretty much stopped using standalone MAME and switched to RetroArch MAME mostly because of how well RetroArch shaders look and work, but I have a few MAME specific questions…

I’m hoping I’m explaining this right, but is there any way to remove the refresh rate “throttle”? In MAMEUIFX, I can turn off “throttle” (in the GUI or the mame.ini) and it will solve the problem of “shadow flickering” in games that simulate transparency by alternate diplaying a sprite and making it not appear for the next frame, tying it to the monitors refresh rate (i.e. Neo Geo fighters shadows under the fighters feet, etc…) I think RetroArch FBA does this because I don’t get the sprite transparency shadow flickering, but I do in MAME… (If you aren’t understanding what I’m describing, watch the intro in Samurai Shodown, and see how the lanterns flicker unevenly in the demo, and see the shadows under the fighters feet flicker unevenly in MAME; it doesn’t do this in FBA…

In the current implementation of RetroArch MAME, I can hit ‘tab’ to call up the MAME menu, go to ‘slider options’ and bump up the refresh rate a bit. If I do this, I can get the flickering to go away. (I have vsync set to ‘always on’ in my video card, so I’m assuming this is what’s limiting the game speed)

So can I somehow remove the 'throttle" or stop the game from setting the refresh rate in MAME?

Is there an .ini where MAME specific settings can be made (ala mame.ini)?

My second question is, it seems like in “core options” I can disable the MAME nag screen. (I think it’s called “enable nag patch” or something like that), but I can’t seem to get it to work. I understand MAME needs to be distributed with that nag screen, but is there a way to disable it, or am I doing something wrong?

Thanks for all the hard work that is put into RetroArch.

As for the nag screen, if you compiled for your own personal use you could then change the following code in libretro-mame / src / emu / ui / ui.c from

{
			case 0:
				if (show_disclaimer && disclaimer_string(messagebox_text).len() > 0)
					set_handler(handler_messagebox_ok, 0);
				break;

			case 1:
				if (show_warnings && warnings_string(messagebox_text).len() > 0)
				{
					set_handler(handler_messagebox_ok, 0);
					if (machine().system().flags & (GAME_WRONG_COLORS | GAME_IMPERFECT_COLORS | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_KEYBOARD | GAME_NO_SOUND))
						messagebox_backcolor = UI_YELLOW_COLOR;
					if (machine().system().flags & (GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_MECHANICAL))
						messagebox_backcolor = UI_RED_COLOR;
				}
				break;

			case 2:
				if (show_gameinfo && game_info_astring(messagebox_text).len() > 0)
					set_handler(handler_messagebox_anykey, 0);
				break;
		}

to

{
			case 0:
               break;
				if (show_disclaimer && disclaimer_string(messagebox_text).len() > 0)
					set_handler(handler_messagebox_ok, 0);
				break;

			case 1:
               break;
				if (show_warnings && warnings_string(messagebox_text).len() > 0)
				{
					set_handler(handler_messagebox_ok, 0);
					if (machine().system().flags & (GAME_WRONG_COLORS | GAME_IMPERFECT_COLORS | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_KEYBOARD | GAME_NO_SOUND))
						messagebox_backcolor = UI_YELLOW_COLOR;
					if (machine().system().flags & (GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_MECHANICAL))
						messagebox_backcolor = UI_RED_COLOR;
				}
				break;

			case 2:
               break;
				if (show_gameinfo && game_info_astring(messagebox_text).len() > 0)
					set_handler(handler_messagebox_anykey, 0);
				break;
		}

That’s what I do for my private builds

I guess I’ll have to learn to compile my own builds

:frowning:

After looking at Libretro_MAME on GIT, it looks like you have some “refresh rate on the fly” changes on the to do list

Maybe this will help with the throttling?

For the nagscreen ,

To disable it completly ,only need to put this in line 323 src/emu/ui/ui.c (like SDLMAME_EMSCRIPTEN define ) nothings else.


#ifdef RETRO
	show_gameinfo = show_warnings = show_disclaimer = FALSE;
#endif

It’s was in previous version like lordashram said , but forgoteen in the SVN repo. AndresSM open an issue for this , but I let Square & AndresSM choose if they want to commit it again.

For the throttling ,

have you try to change your mame.ini (or ume.ini if you use ume core ) and set throttle to 0 ? the ini file must reside in retro_system_directory[mame|mess|ume]\ini .


#
# CORE PERFORMANCE OPTIONS
#
autoframeskip             0
frameskip                 0
seconds_to_run            0
throttle                  0

For the on the fly ,

For what i ve read /understand from libretro.h , it’s not very optimized for “on the fly” but good for change resolution when load newgame for example . But maybe things change since , or AndresSM/square have another idea on the subject.

// HIGHLY RECOMMENDED Do not call this callback every time resolution changes in an emulator core if it’s // expected to be a temporary change, for the reasons of possible driver reinit.


#define RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO 32
                                           // const struct retro_system_av_info * --
                                           // Sets a new av_info structure. This can only be called from within retro_run().
                                           // This should *only* be used if the core is completely altering the internal resolutions, aspect ratios, timings, sampling rate, etc.
                                           // Calling this can require a full reinitialization of video/audio drivers in the frontend,
                                           // so it is important to call it very sparingly, and usually only with the users explicit consent.
                                           // An eventual driver reinit will happen so that video and audio callbacks
                                           // happening after this call within the same retro_run() call will target the newly initialized driver.
                                           //
                                           // This callback makes it possible to support configurable resolutions in games, which can be useful to
                                           // avoid setting the "worst case" in max_width/max_height.
                                           //
                                           // ***HIGHLY RECOMMENDED*** Do not call this callback every time resolution changes in an emulator core if it's
                                           // expected to be a temporary change, for the reasons of possible driver reinit.
                                           // This call is not a free pass for not trying to provide correct values in retro_get_system_av_info().
                                           //
                                           // If this returns false, the frontend does not acknowledge a changed av_info struct.


Nice. Thanks for the reply… I didn’t even think to look there for the mame.ini

That should solve my issue

EDIT

There isn’t a mame.ini that I can find anywhere.

In ‘system’ there is a MAME folder with an NVRAM and CFG, but no .ini

I created and placed an .ini in system/mame/ini/ and and in system/mame/

but it doesn’t seem to have any effect…

Is RetroArch looking for a mame.ini?

Am I looking in the wrong place?

Thanks for any and all help

systemdir\mame\mame.ini is correct, it’s not created automatically there is a recent commit that should fix that but you might have to build for the time being

Yes, that’s \system\mame\ini\mame.ini for newest versions. On older version it was working in retroarch/mame.ini for me. (or ume.ini if it’s ume mislabelled as mame)

Can I “mame -cc” from comand prompt like in standalone mame, or is there a better way to create that .ini?

I’ve updated my builds and included the mame.ini, mess.ini & ume.ini files in my dropbox too.

@Rick74 , At the moment the only way to get the ini files is to create them from the mame/mess/ume binaries, so I’ve provided them so everyone who needs them doesn’t have to dl the original binaries just for the ini files.

Thanks, I was able to turn off ‘throttling’ in the mame.ini and bump up the refesh rate in ‘libreto_mame.dll.cfg’. This has removed all the flickering transparencies/shadows in Neo Geo games.

Thanks!

@lordashram maybe you don’t notice it , but you can do it with cmdline enable , just do a retroarch -L ume_libretro.dll “-cc” or " -createconfig" and it will create a ume.ini , same apply to mame /mess and then it will create a mame.ini/mess.ini .

Edit : nothing related but , with current SVN I have trouble with sf2 it just crash and segfault in linux , does it do the same in windows ,or does someone experiment the same with CPS1 game ?

Edit : nothing related but , with current SVN I have trouble with sf2 it just crash and segfault in linux , does it do the same in windows ,or does someone experiment the same with CPS1 game ?

It happened quite a lot to me as well on win7 x64, and then it works if you keep trying (something like the 10th time!). That used to happen a lot on Mame stand-alone as well but with ssf2 (super street). So I’m not sure but I’d say it’s a Mame bug.

Found a good one: try kof98. Seems to be impossible to launch now.

sf2ce worked on the second try, got lucky.

Thanks for reply , on linux sf2 never works even after 10 try , same apply to kof98 !

Btw , i’m playing with -autoboot_script option this why i was trying to load sf2 ( to test sf2-hitboxes.lua ) i have tested it simply with some old computer like cpc6128 and use a autoboot script to run the game .( like emu.keypost(‘run "gamename’) for cpc6128 ) . works great . contrariwise , the option -autoboot_command was failed because of the way we handle for now the parsing of the cmd line ( the backslash double quote are interpreted like end or start of a word) .

edit : I finally managed to start an cpc game using -autoboot_command , syntax with quote are tricky (not use “”" like said in config.txt )


retroarch -L ume_libretro.so -c config/ume_libretro.cfg "cpc6128 -flop1 ume/software/cpc6128/rickdang.dsk -autoboot_command "run\"rick\
" "

edit2: i finally got working sf2 & kof98 , after set verbose to 1 in ini file , i ve noticed that it failed after loading cheat ,i removed cheat.7z and tried again and they load fine now!

maybe your cheat archive was old? needs an update?

Wow you’re right, removing the cheat.7z fixed everything. Never thought it could be that. I’ve got the latest Pugsy cheat archive though…

edit: seems to be a 64bit build issue if what is said here is right.

After a lot of trial and error, I don’t think that ‘core throttle’ is working in libreto_mame via mame.ini. It seems to have no effect whether it’s enabled or disabled…

My thought is that whatever the refresh rate is set through RetroArch takes precedence over what’s in the mame.ini.

In standalone mame, I can completely get rid of any shadow flickering issues by disabling throttle. In RetroArch, I can only get rid of the flickering by pressing 'L2" to bring up the MAME slider menu and then manually bumping the refresh rate up by ‘1’

Any way around this issue? I’d like to see mame.ini settings take precedence over the RetroArch core autoconfigs

The “throttle 0” in mame.ini is working. If you push the spacebar with it on, it will just disable vsync while staying at the game normal speed (and you have to use Inser to go turbo). Pushing spacebar with it off will make the game go as fast as possible.

Then that’s the way retroarch works I think: it always tries to apply a vsync at your detected screen refresh rate. From what I understand you want to always force 60hz in each games without having to manually adjust that in mame GUI. Perhaps it can work with some other settings in mame.ini (all those refresh***/gamespeed/sleep and others).

The “throttle 0” in mame.ini is working. If you push the spacebar with it on, it will just disable vsync while staying at the game normal speed (and you have to use Inser to go turbo). Pushing spacebar with it off will make the game go as fast as possible.

Then that’s the way retroarch works I think: it always tries to apply a vsync at your detected screen refresh rate. From what I understand you want to always force 60hz in each games without having to manually adjust that in mame GUI. Perhaps it can work with some other settings in mame.ini (all those refresh***/gamespeed/sleep and others).[/quote]

Thanks for the help… You are correct; Throttle “0” does work

Maybe you can help me understand, but it seems I cannot get RetroArch MAME to sync to my monitors refresh rate. I understand that different games in MAME have different refresh rates, but games in MAME that rely on your monitors refresh rate for effects such as transparencies always flicker for me in RetroArch MAME.

In FinalBurnAlpha RetroArch, this is not an issue; I haven’t come across any games that have flickering problems. I’m assuming that FBA syncs to your monitors refresh rate…

In MAMEUIFX, when I disable core throttling (‘0’), regardless of what the game’s refresh rate is, it’ll sync to my monitor and I don’t get the flickering.

I haven’t been able to figure out how to set this behavior up in RetroArch MAME. In ‘slider options’ i just bump up the refresh rate by 1 notch and the flickering goes away