<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Eiusdemmodi — Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
		<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?id=433</link>
		<atom:link href="http://geedorah.com/eiusdemmodi/forum/extern.php?action=feed&amp;tid=433&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[The most recent posts in Groovy MAME: Installation and quick configuration (2019 guide).]]></description>
		<lastBuildDate>Thu, 04 Mar 2021 12:36:39 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1921#p1921</link>
			<description><![CDATA[<p>I&#039;m afraid it doesn&#039;t allow for now -- it should happen at some point, but not any time soon.</p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 04 Mar 2021 12:36:39 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1921#p1921</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1918#p1918</link>
			<description><![CDATA[<p>Recap thank you SO MUCH for making this guide! Would you consider updating it to the 2021 guide if your time allows?</p>]]></description>
			<author><![CDATA[null@example.com (tonyt76)]]></author>
			<pubDate>Wed, 03 Mar 2021 15:47:27 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1918#p1918</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1585#p1585</link>
			<description><![CDATA[<p>GM 0.216 got a new option (<em>as such</em>) which should be enabled if you&#039;re importing a previous config. file (it&#039;s enabled by default):</p><div class="quotebox"><cite>Calamity wrote:</cite><blockquote><p>About the new <strong>-lowlatency</strong> option.</p><p>MAME now includes the new option -lowlatency (-lolat). This means that some of the modifications that have been part of GroovyMAME&#039;s low latency features are now officially included in MAME. The technical details are explained on MAMEdev&#039;s github site.</p><p>I&#039;d like to thank Oomek for donating one of his prototype G.I.L.T devices for these tests that was essential to prove the effectiveness of this feature.</p><p>If you own a VRR monitor (either Freesync or G-sync), now official MAME&#039;s input latency will be exactly as low as GroovyMAME&#039;s, virtually matching original hardware behaviour in many cases. Unlike -frame_delay, -lowlatency has no performance penalty.</p><p>This new feature won&#039;t change input latency on GroovyMAME at all, compared to previous versions, since it was already included in GM before. You only need to make sure the option -lowlatency is enabled, which is by default in GM&#039;s generated ini. But take care to update at least your old mame.ini, because failing to have this option enabled will indeed cause a latency penalty since now this feature is optional, while before it was always on.</p><p>In the context of non-VRR monitors, the biggest part of input latency is caused by v-sync. VRR monitors don&#039;t need v-sync, so they&#039;re free of this problem. For this reason on VRR monitors, -lowlatency is enough to get latency as low as it gets.</p><p>On the other hand CRT screens and traditional LCDs require v-sync for acceptable results. The latency that&#039;s specific to frame buffering associated to v-sync can&#039;t be removed by the -lowlatency option. In order to remove it, in addition to -lowlatency you need to keep using -frame_delay, as usual. Now, the difference now is that unless you have -lowlatency enabled, -frame_delay won&#039;t have the desired effect, so please pay attention to your setup if you&#039;re upgrading.</p><p>In short, for low latency, use the following:</p><p>- VRR (Freesync or G-sync): official MAME -lowlatency<br />- CRT or traditional LCD: GroovyMAME -lowlatency -frame_delay #</p><p>For VRR, official MAME is simpler to use. You can achieve the same results on VRR with GroovyMAME too, but you need additional config, like this: GroovyMAME -monitor lcd -lowlatency -noautosync (or -nowaitvsync, notriplebuffer, nosyncrefresh).</p></blockquote></div><p><a href="http://forum.arcadecontrols.com/index.php/topic,151459.msg1701937.html#msg1701937">http://forum.arcadecontrols.com/index.p … msg1701937</a></p><p>Even if only for variable refresh rate LCD monitors (which will be the norm in a not-too-distant future, anyway), this is quite an event for MAME itself, which could never be taken too seriously up until now by any player who cared a damn due to the latency/input lag issue. </p><p>Congrats, Calamity!</p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Wed, 27 Nov 2019 18:43:51 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1585#p1585</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1580#p1580</link>
			<description><![CDATA[<p>Added a note to the section about frame delay configuration.</p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Sun, 10 Nov 2019 21:13:00 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1580#p1580</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1557#p1557</link>
			<description><![CDATA[<p>On frame delay -- I&#039;m saving this post by Calamity here explaining the feature, as a reminder:</p><div class="quotebox"><blockquote><p>I&#039;d like to quote schmerzkaufen from other thread, since it&#039;ll help me illustrate something I wanted to clarify:</p><div class="quotebox"><blockquote><p>Garegga has about 3 frames of natural lag iirc, but that one you can&#039;t touch, Groovy can only eliminate the additional lag that&#039;s running on top.</p><p>&nbsp; &nbsp; i.e</p><p>&nbsp; &nbsp; MAME (official) BGFX -&gt; bgaregga 3fr + vsync 5fr = 8 frames<br />&nbsp; &nbsp; MAME (official) d3d -&gt; bgaregga 3fr + vsync 3fr = 6 frames</p><p>&nbsp; &nbsp; Groovy BGFX -&gt; bgaregga 3fr + vsync 3fr = 6 frames<br />&nbsp; &nbsp; Groovy d3d9ex (default) -&gt; bgaregga 3fr + vsync 2fr = 5 frames<br />&nbsp; &nbsp; Groovy d3d9ex w/ frame_delay 1 -&gt; bgaregga 3fr + vsync 1fr = 4 frames<br />&nbsp; &nbsp; Groovy d3d9ex w/ frame_delay 5 -&gt; bgaregga 3fr + vsync 0.5fr = 3.5 frames<br />&nbsp; &nbsp; Groovy d3d9ex w/ frame_delay 9 -&gt; bgaregga 3fr + vsync 1.6ms = 3 frames + 1.6 miliseconds (1/10th of a frame)</p></blockquote></div><p>I think it&#039;s important to clarify, so we can properly interpret oomek&#039;s results in the future.</p><p>When schmerzkaufen says fd 9 equals to 1/10th of a frame of lag, it&#039;s true but *only* if you consider the average value. In my opinion we shouldn&#039;t use average values, or only use them with care, because it leads to confusions.</p><p>Actually, fd 9 means that for 9 out of 10 button presses (90%), the lag is zero (matches original hardware, as jimmer says).</p><p>It&#039;s only for 1 out of 10 button presses (10%), that the lag is 1 frame, since the button press is not catched on time.</p><p>If you average the result, then it&#039;s when you get that 1/10th of a frame of lag, but that would lead to thinking that there&#039;s some lag associated to each button press while this is absolutely false. I.e. even for fd 7, most of the interaction matches the experience with original hardware.</p><p>And even so, this would be in a worst case scenario, where the pcb would poll the switches during vblank. On the other hand, if the pcb would read input let&#039;s say in the middle of the frame, then fd 5 would be enough to match the pcb responsiveness, this means zero lag.</p><p>Unfortunately we don&#039;t know where each pcb polled input, so assuming the worst case scenario is the best we can do. We&#039;d need to test GM against a real pcb to know the actual lag (lag, again, by jimmer&#039;s sense), but it should be equal or less than the one considered by using this method.</p><p>In the same way, the value that oomek provides, e.g. 4.08 ms for fd 9, is telling us the latest button press that GM can catch.</p></blockquote></div><p><a href="http://forum.arcadecontrols.com/index.php/topic,160722.msg1694987.html#msg1694987">http://forum.arcadecontrols.com/index.p … msg1694987</a></p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Wed, 04 Sep 2019 07:48:51 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1557#p1557</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1555#p1555</link>
			<description><![CDATA[<p>Let me add a tiny bit of <em>editorialism</em> right here. It&#039;s more than a decade now that Calamity has been modifying AMD drivers and developing Groovy MAME with the help of the people at the BYOAC subforum. Unlike other developers, he&#039;s humble and discreet and won&#039;t ever say this, but the amount of work to extend the number of supported graphic cards, the cool utilities he&#039;s created for the usage of Windows on 15-kHz displays, and the improvements in MAME he&#039;s made over these years for the expert, non-conforming player is staggering. For properly-emulated pieces and with the right set-up, there&#039;s virtually no difference at all between playing them on their original hardware and doing it on Groovy MAME, and that includes the infamous <em>input lag</em> subject -- Calamity pioneered that with the frame delay feature.</p><p>So if you find his work and this guide useful and feel like thanking him for it at some point, a thread for buying him an imported beer or something is here:</p><p><a href="http://geedorah.com/eiusdemmodi/forum/viewtopic.php?id=36">http://geedorah.com/eiusdemmodi/forum/v … .php?id=36</a></p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:46:40 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1555#p1555</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1554#p1554</link>
			<description><![CDATA[<p><em>&lt;Placeholder&gt;</em></p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:38:26 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1554#p1554</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1553#p1553</link>
			<description><![CDATA[<p>G )&nbsp; &nbsp;E x t r a&nbsp; &nbsp;t i p s</p><p>Calamity also provides us with the following advices for some particular situations:</p><br /><p>G.1) USAGE OF SCALING OPTIONS</p><p>When using super wide resolutions, there are instances where it&#039;ll be convenient enabling fractional scaling on the horizontal axis together with integer scaling on the vertical one. GM uses the following options to control the scaling:</p><p><em>-unevenstretch</em> / <em>-ues</em> -- fractional stretching (default)<br /><em>-nounevenstretch</em> / <em>-noues</em> -- integer scaling<br /><em>-unevenstretchx</em> -- fractional stretching on horizontal axis, integer scaling on vertical axis<br /><em>-intscalex</em> -- horizontal integer scale factor, default is 0 (auto)<br /><em>-intscaley</em> -- vertical integer scale factor, default is 0 (auto)<br /><em>-super_width</em> -- defines the width that triggers the new <em>-unevenstretchx</em> option; used for super resolutions (default value is 2560)<br /><em>-intoverscan</em> -- allows frame cropping when integer scaling is in use</p><br /><p><span class="bbu">Sample case 1</span>: </p><p>A system like the Super Famicom made use of different horizontal resolutions which eventually switch in-game (512 px or 256 px). On the other hand, depending on the game, the video mode can be of 224 or 240 lines (or even 448 interlaced, in some instances), so the vertical resolution is variable as well. Using a super wide resolution mode of 240 horizontal lines will make the in-game switching from 256 to 512 (and viceversa) totally seamless (against an actual mode change) and having fractional horizontal scaling enabled for that is normally required. In the vertical axis, though, we must prevent from any scaling at all to happen, otherwise a 224-lines game would get upscaled to the 240 lines we have defined. So the command in the <em>snes.ini</em> file should be this:</p><div class="quotebox"><blockquote><p>unevenstretchx</p></blockquote></div><p>By forcing integer scaling in the vertical axis like this (no value is typed for this command), there&#039;ll not be scaling at all in this case, since there&#039;s not an integer factor to turn 224 into 240. </p><br /><p><span class="bbu">Sample case 2</span>:</p><p>The Neo Geo platform was a one-resolution hardware which used 320 x 224. Nevertheless (due to compatibility reasons with the consumer market and its need of TV-sets usage), many games on it such as Metal Slug left a predetermined area of the 320 x 224 frame unused, drawing graphics only in an area of 304 x 224 and leaving a border of 8 px-width on each side. This was intended as overscan, an area which should be hidden, and therefore would force us to adjust the monitor settings every time one of these games are launched. </p><p>While defining a CRT range with compensated horizontal porch values in these particular games&#039; INI files is the proper solution, a quick-and-dirty approach is possible by chopping off the borders if you have a 304 x 240 mode available in your system. A <em>mslug.ini</em> with the following parameters is due:</p><div class="codebox"><pre><code>resolution 304x240
noues
intoverscan</code></pre></div><p>By defaut, GM will refuse to launch a game in a resolution smaller than the native one. If you force it to do so, that will trigger fractional scaling, in a desperate attempt to push the whole frame through your smaller resolution. To avoid that, you use <em>-noues</em>. Here in this example, <em>-intoverscan</em> would not really be required, but it&#039;s been added to clarify the concept, since it tells GM its OK to crop if required to keep integer scaling.</p><br /><p><span class="bbu">Sample case 3</span>: </p><p>Forcing 320 x 240 on a 320 x 256 game without subscaling is possible by adding these commands to the <em>machinename.ini</em>:</p><div class="codebox"><pre><code>resolution 320x240
intoverscan</code></pre></div><p>Here <em>-intoverscan</em> is required in order to avoid GM using fractional scaling and make it crop the frame instead.</p><br /><br /><p>G.2) IMPROVING PERFORMANCE ON GAMES WITH SWITCHING RESOLUTIONS</p><p>Windows 7&#039;s video stack adds an absurd overhead to video mode switching -- it&#039;s something you&#039;re not supposed to do so often in normal applications. With regards to games that dynamically witch resolutions, there are some things that can be done to avoid issues:</p><p>- Disable the <em>changeres</em> option in <em>mame.ini</em>. This will leave the game all the time at its default resolution, the one that&#039;s reported by MAME&#039;s XML. There&#039;ll be a single mode change on load, then no in-game mode switching. The problem with this is yhat, very often, the resolution reported is the first one assigned by the hardware initialization, which doesn&#039;t match the main video mode used by the game.</p><p>- Force a given resolution by means of the <em>resolution</em> option. This by itself will disable mode switching (same as <em>nochangeres</em>) but you can specify the main video mode that&#039;s actually used during the game.</p><p>- Use super resolutions. By using super resolutions, most mode changes will be unneeded. Only vertical resolution changes will trigger an actual video mode change. This is ideal for some systems (such as Sega Mega Drive) which change horizontal frequency quite often while leaving vertical unchanged. For systems that also change vertical resolution, the previous method is preferred.</p><p>Besides this, follow these recommendations when possible:</p><p>- Try to keep the mode list as short as possible; this will make mode changes work faster. Super resolutions will be of help here.</p><p>- Only enable the outputs you actually use. Each extra output that&#039;s enabled exponentially increases the time required by certain graphic API calls (e. g. <em>EnumDisplaySettings</em>).</p><p>- Use your frontend as your system shell (instead of <em>explorer.exe</em>). Having the default shell at the background means that upon a mode change, Windows will send messages to all the little things that live on your desktop, asking them to redraw themselves etc., which takes a lot of time.</p><br /><br /><p>G.3) FORCING SINGLE SCAN ON GAMES WITH DOUBLE-SCANNED GRAPHICS </p><p>This comes in handy, for instance, with the systems where MAME mistakenly reports a vertical resolution which doubles the native one. Let&#039;s illustrate this with MSX 2 computer series emulation -- MAME always reports a vertical display resolution of 466 pixels for most MSX2/MSXP games, but, in actuality, MSX 2&#039;s Screen 5~7 modes displayed either, single-scan (233 lines) or interlaced (466 lines), and very few games used the interlaced modality (and those which did, only used it at some very particular moments). So, when emulating these games on a 15-kHz monitor, the correct approach consists in getting progressive modes of 233 lines instead of the interlaced mode at 466 lines, which, if anything, should only be called at those moments to make the change dynamically.</p><p>Until MAME fixes it in the driver&#039;s code, other than with hardware de-interlacing, this can only be achieved by installing a super wide resolution of 233 lines in this case (say, 1088 x 233), setting it through <em>machinename.ini</em>, and the commands that follow:</p><div class="codebox"><pre><code>resolution 1088x233
unevenstretch 1
nochangeres 1</code></pre></div><p>Fractional stretching is forced because we need to apply a fractional scale factor of 0.5 to the vertical axis (integer subscaling is not possible since the minimum possible integer factor is 1). The trick to avoid scaling artifacts is to choose a resolution whose height is the exact half of MAME&#039;s reported resolution (466). The width is not a problem because we have a super wide resolution.</p><p>Using <em>nochangeres 1</em> is recommended too if the emulated system makes constant resolution changes, as these make the emulation too slow.</p><br /><br /><p><em>End of the guide</em></p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:38:22 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1553#p1553</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1552#p1552</link>
			<description><![CDATA[<p><em>&lt;Placeholder&gt;</em></p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:37:28 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1552#p1552</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1551#p1551</link>
			<description><![CDATA[<p>F )&nbsp; &nbsp;S o l v i n g&nbsp; &nbsp;o v e r s c a n&nbsp; &nbsp;a n d&nbsp; &nbsp;g e o m e t r y&nbsp; &nbsp;i s s u e s </p><p>As a previous note, be aware that we always recommend the usage of monitors/TVs with adjustable geometry settings. Most will have them, but for many TV sets it&#039;ll not be easy to get access to the service menu or the devices which control them. Arcade games (and many old PC games) were conceived for monitors with easy-to-control screen geometry, so it wasn&#039;t really important which model or video mode they used and the consequent variations in screen geometry parameters against other samples (position, borders, etc.). Therefore, you can&#039;t expect a universal solution by software which sets a perfectly adjusted visible area on screen for every game in MAME so that you won&#039;t ever need to make monitor tweaks. <em>Super resolutions</em> (and only <em>super resolutions</em>) will essentially get the same horizontal amplitude for all the games, but you&#039;ll need to manually adjust the vertical size if you want to properly display games with different-enough video modes, though we&#039;ll show a way here (<em>two ways</em>, actually) to control the vertical position by software in case you want to leave at least that monitor setting intact.</p><br /><p>F.1) SETTING THE BEST CRT RANGE</p><p>Different monitors require different definitions for the monitor&#039;s specifications through one or more <em>CRT range</em> lines in our system, and it&#039;s the CRT range what determines overall screen geometry. With Video Mode Maker, a CRT range was set in the process of installation; it&#039;s located in the <em>Monitor settings</em> tab, and it can be changed by another preset and even edited at will. It&#039;s likely that with the default preset you don&#039;t get a perfectly centered area under your current/default monitor parameters, so you may start by editing it.</p><p>If you&#039;ll be using the monitor also with devices other than the PC for emulation (say, a game console), a smart approach may be firstly adjusting the monitor parameters to get the best geometry for these devices, given that they&#039;ll normally won&#039;t give you the option to do it internally.</p><p>In order to edit a preset (the one named <em>Arcade 15.7 kHz - standard resolution</em> is generally a good one to use as the basis for 15-kHz monitors, including TV sets), you need to know well what a CRT range line consists of, namely:</p><div class="quotebox"><blockquote><p><strong>crt_range0 </strong></p><p><strong>HfreqMin-HfreqMax, VfreqMin-VfreqMax, HFP, HSP, HBP, VFP, VSP, VBP, HPol, VPol, PLMin, PLMax, ILMin, ILMax</strong></p><p>HfreqMin-HfreqMax -- horizontal frequency range (Hz)&nbsp; </p><p>VfreqMin-VfreqMax -- vertical frequency range (Hz)&nbsp; </p><p>HFP -- horizontal front porch&nbsp; &nbsp;</p><p>HSP -- horizontal sync pulse</p><p>HBP -- horizontal back porch&nbsp; </p><p>VFP -- vertical front porch </p><p>VSP -- vertical sync pulse</p><p>VBP -- vertical back porch</p><p>HPol -- horizontal sync. polarity</p><p>VPol -- vertical sync. polarity</p><p>PLMin -- lower limit of possible lines in progressive modes</p><p>PLMax -- upper limit of possible lines in progressive modes</p><p>ILMin --&nbsp; lower limit of possible lines in interlaced modes</p><p>ILMax --&nbsp; upper limit of possible lines in interlaced modes</p></blockquote></div><p>Usually, you&#039;ll just need to correct the horizontal position, so take a look at this example:</p><p>15625-16200, 49.50-65.00, 2.000, 4.700, <strong>8.000</strong>, 0.064, 0.192, 1.024, 0, 0, 192, 288, 448, 576 (original Arcade 15.7 kHz preset)</p><p>15625-16200, 49.50-65.00, 2.000, 4.700, <strong>6.000</strong>, 0.064, 0.192, 1.024, 0, 0, 192, 288, 448, 576 (edited Arcade 15.7 kHz preset)</p><p>By picking the aforementioned preset in the corresponding field and changing this value with Notepad when clicking the edit button in VMM, you&#039;ll center the picture horizontally according to the demands of most NTSC consoles on many Trinitron TV sets, so you won&#039;t need to enter the TV&#039;s service menu and adjust this setting every time you change from your PC to your consoles and viceversa.</p><p>If, for instance, you also get the image positioned too low, you&#039;ll need to reduce the vertical back porch value:</p><p>15625-16200, 49.50-65.00, 2.000, 4.700, 6.000, 0.064, 0.192, <strong>1.020</strong>, 0, 0, 192, 288, 448, 576</p><p>And so on.</p><p>Given that you can export the defined CRT range directly to Groovy MAME as explained before, you don&#039;t need to also define this in Groovy MAME&#039;s INI file, though you can do it if you want to by finding and editing this line:</p><div class="codebox"><pre><code>monitor                   generic_15</code></pre></div><p>(Yet more presets <a href="http://forum.arcadecontrols.com/index.php/topic,116023.0.html">here</a>.)</p><p>Much like with VMM, it&#039;s possible to set custom values by the monitor&#039;s particular specs. To do that, type <em>custom</em> in place of <em>generic_15</em> and add the values in the <em>crt_range</em> lines accordingly, taking always as a reference one of the given samples and their effect. Check VMM&#039;s tutorial [ <a href="http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=327#p327">&gt;</a> ] for further elaboration.</p><br /><p>F.2) TUNING UP THE SCREEN GEOMETRY IN A PER-GAME BASIS</p><p>Groovy MAME lets us define the modeline(s) in the <em>machinename.ini</em> files, overriding the definitions in MAME&#039;s INI file. This is extremely useful to solve particularly geometry problems, such as the vertical centering derived from the disparity of the vertical scan rates or the <em>overscan-into-underscan</em> issues in quite a few arcade games.</p><p>The easiest way to tweak modelines per-game is:</p><p>1. Run the game with <em>verbose</em> enabled: Start menu, Run, <em>C:\GROOVYMAME\mame64.exe machinename -v</em></p><p>2. Exit Groovy MAME and launch Arcade OSD. You&#039;ll notice the <em>Get mode from clipboard</em> option is enabled, go there. It will launch the last mode used by Groovy MAME, including custom timings.</p><p>3. Make the geometry changes as desired in A-OSD. Remember that you can&#039;t modify the vertical amplitude by software.&nbsp; </p><p>4. When done, select <em>Back</em> and <em>Copy modeline to clipboard</em>. Exit the program.</p><p>5. Open Notepad, press CTRL + V. Now copy to the clipboard the modeline line, not the CRT range line, and paste it in your <em>machinename.ini</em>:</p><div class="codebox"><pre><code>modeline &quot;2560x240_60 kHz Hz&quot; PixelClock, HRes, HSyncStart, HSyncEnd, HTotal, VRes, VSyncStart, VSyncEnd, VTotal, hsync, vsync</code></pre></div><p>6. Save changes and test the game/machine.</p><p>Notes:</p><p>- Regarding the <em>modeline</em> option, the only requirement to use it is having a modeline already installed in your system with the same active width and height. </p><p>- Groovy MAME keeps the video mode specifications if <em>modeline</em> is used, but if the mode is defined with the command <em>resolution</em> instead, Groovy MAME will not use the vertical refresh attending to Arcade OSD, but attending to the emulator&#039;s request for that game, if <em>vsync</em> is not disabled. The picture won&#039;t be scaled if it doesn&#039;t match the defined resolution (black borders and some shift will likely appear).</p><p>- If <em>resolution</em> is used, the video mode displayed in-game through MAME&#039;s menu and splash screen shows the vertical refresh from A-OSD according to that label, which usually won&#039;t be the one in actual use for the reason above.</p><p>- For minor tweaks, MAME&#039;s Slider Controls (reach them also through the <em>TAB menu</em> when running a machine), allows to modify the screen&#039;s horizontal and vertical position.</p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:37:25 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1551#p1551</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1550#p1550</link>
			<description><![CDATA[<p><em>&lt;Placeholder&gt;</em></p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:36:58 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1550#p1550</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1549#p1549</link>
			<description><![CDATA[<p>E )&nbsp; &nbsp;P e r - g a m e&nbsp; &nbsp;c o n f i g u r a t i o n</p><p>To force specific MAME and Groovy MAME settings into one only game/machine (or just the games from a particular MAME driver), a <em>machinename.ini</em> file should be placed in MAME&#039;s INI folder (or a <em>drivername.ini</em> in <em>ini\source</em>, for the MAME driver case). The <em>machinename</em> is the exact name of the particular romset (including the ones for home systems, as their BIOS romsets) in MAME, without the extension. Keep in mind the priority order for INI files, being <em>mame.ini</em> the lowest priority and <em>romname.ini</em> the highest; they work as transparent layers.</p><p>Be aware that the Switchres engine inside Groovy MAME sets several options automatically. Its option setting priority is just above <em>mame.ini</em> and below all other INI files. So bear this in mind when modifying options in <em>mame.ini</em> as your changes may be overridden by Groovy MAME itself. On the contrary, anything you set in any other particular INI file will have preference over Switchres&#039; automatic option setting, as is the case of <em>-syncrefresh</em>, explained above.</p><p>The format for the particular INI files is identical to <em>mame.ini</em>&#039;s. When creating specific game or driver INI files, do never copy the whole <em>mame.ini</em> file, just create a text file only with the option(s) you want to override; failing to do so will result in Groovy MAME&#039;s inability to set options automatically.</p><p>A pretty common case of specific configuration is the <em>-bios</em> option for those arcade games which originally share a mother system (Neo-Geo MVS, ST-V...). The mother system&#039;s BIOS usually determines certain aspects such as the <em>region</em> for every game under this hardware, and MAME comes with a preset BIOS version for every system which needs to be changed attending to the user&#039;s preferences. Therefore, as this is a per-driver option, a <em>drivername.ini</em> file should be created within <em>ini\source</em> folder detailing the <em>-bios</em> value according to the name of the desired BIOS version in MAME. This can be specified in a per-game basis too, in case there&#039;s interest.</p><p>What follows is the video options prone to be specified in a per-game basis, though generally Groovy MAME under VMM&#039;s <em>super resolutions</em> method is preset so that there&#039;s no need for specific configurations with the exception of the frame delay feature. Remember that you can always know the video mode being called by Switchres when you&#039;re running a game by pressing TAB and going to Machine information.</p><br /><p>1. <span style="color: #000000"><em>resolution&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2560x0</em></span></p><p>Groovy MAME tweaks CRT Emudriver&#039;s video modes on the fly in order to create the gamut of refresh rates required for every game, only limited by the display hardware in use, so, in principle, there&#039;s no need to have all those refresh rates predefined in your system. It is necessary, though, that the different resolution modes GM will use (disregarding the refresh, and no matter if <em>super</em> or not) are installed as explained in CRT Emudriver&#039;s installation guide [ <a href="http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1055#p1055">&gt;</a> ].</p><p>Notice that GM also supports dynamic video mode switching for those games programmed to do that. </p><p>The value <em>2560x0</em> denotes that the <em>super resolutions</em> method is being used. Here, a width of 2560 pixels is forced for all games, while the <em>0</em> acts as a wildcard for the vertical resolution (that is, the number of lines), so Groovy MAME will be free to pick the most convenient height from the ones available, applying integer scaling whenever possible. </p><p>Due to the nature of CRT technology, the results with the <em>super resolutions</em> method are in most cases virtually the same as when generating the native modes. However, some visible artifacts may appear in scrolling games due to non-integer horizontal scaling. These are usually hard to notice, but the user may prefer for these cases to force a particular video mode already predefined in his system. For this, a <em>machinename.ini</em> file must be created containing the line:</p><div class="codebox"><pre><code>resolution                XxY</code></pre></div><p>GM will use the optimal vertical refresh by itself, so, again, it doesn&#039;t have to be already installed. If a video mode with the desired values for X and Y isn&#039;t actually installed in the system, the command <em>-modeline</em> can be used for this matter, which is explained in the next section.</p><p>Be aware that using <em>super resolutions</em> not only helps to keep the system with very few video modes (Windows 7 will most likely slow down your system at some point with a long predefined video modes list), it also serves to minimize the need of centering the picture horizontally with every case. Nevertheless, using a <em>super resolution</em> is always more CPU- and GPU-demanding than using the original video mode.</p><p>Remember to never set the desktop to the same resolution you later want to use in-game -- doing this prevents GM from editing its refresh rate, as it becomes read-only.</p><br /><p>2a. <span style="color: #000000"><em>sync_refresh_tolerance&nbsp; &nbsp; 2.0</em></span><br />2b. <span style="color: #000000"><em>autosync&nbsp; &nbsp; 1</em></span></p><p>For those exceptional cases that the desired vertical refresh cannot be achieved due to monitor limitations, controlling how off the obtained refresh must be in order to trigger triple buffering is possible by way of this option. The default value is 2 Hz, but a <em>machinename.ini</em> can include this line with the value desired by the user for that case. Therefore, increasing this value in <em>mame.ini</em> can be used as a general way to enable <em>-syncrefresh</em> even in those cases where the refresh is off (at the cost of reducing the game&#039;s original speed).</p><p>With <em>-autosync</em> enabled (<em>1</em>), <em>-syncrefresh</em> will be activated automatically if the refresh difference is below <em>-syncrefresh_tolerance</em>. If the refresh difference is greater than <em>-syncrefresh_tolerance</em>, <em>-triplebuffer</em> (multithreaded blitting) will be activated. With <em>-autosync</em> disabled (<em>0</em>), <em>-syncrefresh</em> and <em>-triplebuffer</em> will need to be configured manually as explained in the previous section.</p><br /><p>3. <span style="color: #000000"><em>frame_delay&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0</em></span></p><p>This is actually the only option where the Groovy MAME user must really make an extra effort of testing and configure the emulator in a per-game basis in order to get the best possible emulation out of it (particularly, regarding the input lag issue), since this feature is heavily dependent on the computer&#039;s CPU and the usage every emulated game in particular makes of it.</p><p>The frame delay feature actually serves two purposes:</p><p>- Delaying the emulation of a frame in order to get the most up-to-date input state before going into the emulation itself</p><p>- Bypassing a frame queue that&#039;s built in the ATI video drivers when Direct 3-D is used which adds a lag of 2-3 frames by itself</p><p>For actually getting the former, a CPU fast enough to emulate each frame at a fraction of the time that the original hardware did would be required, so this option is implemented in gradual steps from 1 to 9, where <em>1</em> stands for 10 % of a frame period and <em>9</em> stands for 90 %. This way, the user is able to adapt it to get the longer possible delay with the hardware in use. </p><p>Frame delay can be configured either, through the INI file or via GM&#039;s on-the-fly menu accessible by pressing the <em>TAB</em> key during the emulation process, in the Slider controls submenu. Any change made through the latter will permanently be stored in the emulated machine&#039;s <em>.cfg</em> file (<em>cfg</em> folder), and will have priority over any INI definition (which will be understood just as the <em>default</em> value, the one in use if it&#039;s not changed with the Slider submenu, that is).</p><p>Though you can previously check the suggested frame delay value for every machine with the <em>-bench</em> command, the easiest global approach may be to always start with 9 or 8 and decrement it until a stable performance is got (check MAME&#039;s display for emulation speed when running every game with <em>F11</em> key -- it must not be lower than 100 % in any instance, so the tests should be long and through enough). </p><p>In other words, the higher you can set it without causing performance issues, the better input lag figures due to the emulation process itself you&#039;ll get, being essentially negligible with 9 and close enough to that with 7 or 8. Under Windows XP, try to just never leave it at 0 if you care about the subject, anyway.</p><p>Note: For usage of this feature with some particular emulated machines, it may be necessary to set <em>frame_delay</em> in the <em>machinename.ini</em> or <em>drivername.ini</em> file, even if it&#039;s only with the value of <em>1</em> (and then setting it higher through the Slider submenu). You&#039;ll notice this when you only set frame delay through the Sliders submenu and the next time running the emulation, the game/machine&#039;s speed is not correct (check it on the fly with MAME&#039;s <em>show game speed</em> key).</p><br /><p>4. <span style="color: #000000"><em>vsync_offset&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0</em></span></p><p>The V-sync offset feature only makes sense if a tearing effect appears with <em>-frame_delay</em>. Tearing happens with high resolutions, when there&#039;s substantial scaling going on, be it 640 x 480 or 2560 x 240. At high resolutions, the time it takes the GPU to scale a frame starts being longer than the blanking period itself, which may cause static tearing when <em>-frame_delay</em> is used.</p><p>To compensate this issue, <em>-vsync_offset</em> forces the render code to be called a number of lines ahead of time. Ideally, using a proper value realigns the render completion with the end of the blanking period, cleanly removing all tearing, but you&#039;ll need a fairly fast graphics card in order to fully remove tearing. The higher the tearing line appears on the screen initially, the faster your card is, and the more chances of completely hiding tearing through <em>-vsync_offset</em>. The value should be typed as the estimated number of scan lines required to hide the effect for every particular case.</p><p>Notice that it&#039;ll be required to lower the <em>-frame_delay</em> value proportionally to the amount of lines set in <em>-vsync_offset</em>.</p><br /><p>5. <span style="color: #000000"><em>changeres&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1</em></span></p><p>This option controls the video mode auto-switching in those games which dynamically change their resolution. For disabling this feature, type <em>0</em> in place of <em>1</em>.</p><br /><p>6. <span style="color: #000000"><em>interlace&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1</em></span></p><p>This option enables interlaced scanning when necessary. For disabling this feature, type <em>0</em> in place of <em>1</em>.</p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:36:18 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1549#p1549</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1548#p1548</link>
			<description><![CDATA[<p><em>&lt;Placeholder&gt;</em></p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:36:15 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1548#p1548</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1547#p1547</link>
			<description><![CDATA[<p>D )&nbsp; &nbsp;C o n f i g u r i n g&nbsp; &nbsp;t h e&nbsp; &nbsp;P o r t&nbsp; &nbsp;A u d i o&nbsp; &nbsp;o p t i o n s</p><p>These are also done as global settings in <em>mame.ini</em>, though for clarity&#039;s sake, they get their own section here. They&#039;re baseline MAME&#039;s features actually (succeeding Inteall&#039;s ASIO implementation for Groovy MAME, now deprecated), but due to their intimate connection with GM&#039;s philosophy, it&#039;s well worth explaining them here so that every GM user makes use of them without hesitation. Their purpose is reducing the audio latency to the very bare minimum level, virtually indistinguishable from the original hardware&#039;s.</p><p>Find these commands in <em>mame.ini</em> and change their values as follows:</p><div class="codebox"><pre><code>sound                    portaudio
audio latency          0
pa_api                   &quot;Windows WDM-KS&quot;
pa_device                 none
pa_latency                 0.001</code></pre></div><p>Alternatively, you can use these:</p><div class="codebox"><pre><code>pa_api                    &quot;Windows WASAPI&quot;
pa_latency              0.003334</code></pre></div><p>Which one to pick depends on your hardware and system configuration, but under W7 with updated audio drivers and a decent CPU, both should be available and give good results. Try one or the other if you get stuttering or distorted sound when running any game, and/or set a bit higher the <em>pa_latency</em> value (keep in mind they&#039;re measured in seconds and the ones above should be low-enough safe settings, so try, say, 0.00125 instead of 0.001, then 0.01...).</p><p>If you get no sound at all, it may be another application in the background which is using audio, preventing from Port Audio activation.</p><p>Usually the <em>pa_device</em> instruction has to be defined as well, so, in that case or just to make sure, follow these steps:</p><p>1. Go to <em>C:\Windows\System32</em> and double-click <em>cmd.exe</em></p><p>2. Type:</p><div class="codebox"><pre><code>mame64 -sound portaudio -v</code></pre></div><p>and press <em>enter</em></p><p>3. Close the MAME instance (press <em>Esc</em>)</p><p>4. In the command-line window, look near the end of the text for the lines which tell you the output devices for either, WDM-KS or WASAPI; you must note the exact name of one of them, for instance, <em>&quot;Speaker (Realtek HD Audio output)&quot;</em>. </p><p>5. In the <em>mame.ini</em> file, type the device&#039;s name as it is with quotation marks if it&#039;s more than one word, for instance:</p><div class="codebox"><pre><code>pa_device                 &quot;Speaker (Realtek HD Audio output)&quot;</code></pre></div><p>(If there&#039;s still no proper sound and you have an integrated Realtek sound card you might try other listed APIs such as <em>MME</em> or <em>&quot;Windows directsound&quot;</em> in the <em>pa_api</em> instruction.)</p><p>In order to check the results of your configuration, follow the steps 1 to 3 and look for the latency line in the command-line window -- the resulting value will be given in ms.</p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:34:37 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1547#p1547</guid>
		</item>
		<item>
			<title><![CDATA[Re: Groovy MAME: Installation and quick configuration (2019 guide)]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1546#p1546</link>
			<description><![CDATA[<p><em>&lt;Placeholder&gt;</em></p>]]></description>
			<author><![CDATA[null@example.com (Recap)]]></author>
			<pubDate>Thu, 22 Aug 2019 12:34:32 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=1546#p1546</guid>
		</item>
	</channel>
</rss>
