<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Eiusdemmodi — 5. Video Mode Maker and Arcade OSD]]></title>
		<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?id=46</link>
		<atom:link href="http://geedorah.com/eiusdemmodi/forum/extern.php?action=feed&amp;tid=46&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[The most recent posts in 5. Video Mode Maker and Arcade OSD.]]></description>
		<lastBuildDate>Sun, 12 Oct 2014 21:57:55 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: 5. Video Mode Maker and Arcade OSD]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=378#p378</link>
			<description><![CDATA[<p><strong>Appendix B: Practical examples.</strong> </p><p><em>Under construction.</em></p>]]></description>
			<author><![CDATA[null@example.com (Eiusdemmodi)]]></author>
			<pubDate>Sun, 12 Oct 2014 21:57:55 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=378#p378</guid>
		</item>
		<item>
			<title><![CDATA[Re: 5. Video Mode Maker and Arcade OSD]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=329#p329</link>
			<description><![CDATA[<p><strong>Appendix A: Defining monitor specifications</strong>.</p><p><span class="bbu">Introduction</span></p><p>You need to be aware that there is a real risk of damaging your monitor if the wrong settings are used here, so it is not a good idea to mess with this unless you really understand what you are doing. However, this is probably the only way to use your monitor to its full potential.</p><p>You can generate video modes for nearly any imaginable monitor specification by means of the use of <em>monitor_specs</em> lines. Each of these lines defines a safe range for horizontal and vertical frequencies which your monitor can work with. Usually you will only need to define one single <em>monitor_specs</em> line to fully configure a standard CRT monitor or TV, but multi-sync monitors are modelized by using more than one <em>monitor_specs</em> lines, each one representing one of the monitor&#039;s work ranges, so a typical 15/24/31 KHz multi-sync monitor would require three <em>monitor_specs</em> lines, numbered consecutively as <em>monitor_specs_0</em>, <em>monitor_specs_1</em>, <em>monitor_specs_2</em>.</p><p>The aim of the <em>monitor_specs</em> line is to provide an exact description of the video signal timing to be generated for a specified frequency range as required by your monitor, as well as a couple of parameters adjustable to the user&#039;s preference, which control how the modeline generator deals with video modes that fall outside the boundaries of the defined ranges.</p><p>You must not mistake <em>monitor_specs</em> with <em>modelines</em>. In a way, <em>monitor_specs</em> can be seen as a template to calculate modelines from. So modifying parameters in <em>monitor_specs</em> will automatically propagate the changes to any modeline calculated after that, making this a very powerful system for controlling video geometry.</p><br /><p><span class="bbu">Format of <em>monitor_specs</em> lines</span></p><p><em>monitor_specs_{0-6} = &quot;HfreqMin-HfreqMax, VfreqMin-VfreqMax, HFrontPorch, HSyncPulse, HBackPorch, VfrontPorch, VSyncPulse, VBackPorch, HSyncPol, VSyncPol, ActiveLinesLimit, VirtualLinesLimit&quot;</em></p><div class="quotebox"><blockquote><p><em>monitor_specs_{0-6} = &quot;HfreqMin-HfreqMax</em> (Hz),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>VfreqMin-VfreqMax</em> (Hz),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>HFrontPorch</em> (µs),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>HSyncPulse</em> (µs),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>HBackPorch</em> (µs),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>VfrontPorch</em> (ms),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>VSyncPulse</em> (ms),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>VBackPorch</em> (ms),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>HSyncPol</em> {0|1},<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>VSyncPol</em> {0|1},<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>ActiveLinesLimit</em> number of lines,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>VirtualLinesLimit</em> number of lines&quot;</p></blockquote></div><p>- <strong>Subindex:</strong> 0 to 6, makes possible defining more than one <em>monitor_specs</em> line. The first subindex should always be 0.</p><p>- <strong>Frequency ranges:</strong> Define the ranges of both horizontal and vertical frequencies that the monitor is capable to work at. At the same time, it specifies the ranges of frequencies where the rest of parameters in each <em>monitor_specs</em> line will be applied.</p><p>&nbsp; <em>HfreqMin-HfreqMax</em>: Minimum and maximum horizontal frequency, in Hz<br />&nbsp; <em>VfreqMin-VfreqMax</em>: Minimum and maximum vertical frequency, in Hz</p><p>- <strong>Horizontal timing settings:</strong> Define the duration of each of the horizontal blanking interval elements. Values in microseconds (µs). All values must be greater than zero. Refer to your monitor&#039;s manual for the minimum required values.</p><p>&nbsp; <em>HFrontPorch:</em> Horizontal front porch period.<br />&nbsp; <em>HSyncPulse:</em> Horizontal sync pulse period<br />&nbsp; <em>HBackPorch:</em> Horizontal back porch period</p><p>&nbsp; Use this settings to adjust horizontal geometry (amplitude and centering).</p><p>- <strong>Vertical timing settings:</strong> Define the duration of each of the vertical blanking interval elements. Values in miliseconds (ms). All values must be greater than zero. Refer to your monitor&#039;s manual for the minimum required values.</p><p>&nbsp; <em>VFrontPorch:</em> Vertical front porch period.<br />&nbsp; <em>VSyncPulse:</em> Vertical sync pulse period.<br />&nbsp; <em>VBackPorch:</em> Vertical back porch period.</p><p>&nbsp; Contrary to the horizontal case, vertical amplitude is usually not adjustable by tweaking these settings, only centering is possible in most cases.</p><p>- <strong>Sync polarities:</strong><br />&nbsp; <em>HSyncPol,VSyncPol:</em> polarities, not in use! defaults to negative.</p><p>- <strong>Line limiters:</strong><br />&nbsp; <em>ActiveLinesLimit:</em> Vertical resolutions until ActiveLinesLimit value included, are generated as progressive, regardless the possibility of obtaining the required vertical refresh value.</p><p>&nbsp; <em>VirtualLinesLimit:</em> Vertical resolutions above <em>ActiveLinesLimit</em> and below <em>VirtualLinesLimit</em> are virtualized, that is, an interlaced resolution bigger that the native one is generated, with the right refresh, and &quot;hardware stretch&quot; is applied. Vertical resolutions above <em>VirtulaLinesLimit</em> are generated as interlaced, without any stretching.</p><br /><p><span class="bbu">Modelizing your monitor by using <em>monitor_specs</em> lines</span></p><p>Basically, <em>monitor_specs</em> lines are used to divide your monitor&#039;s operational range in bands where different settings are applied, which will determine the right picture geometry within that frequency range. All video modes that fall inside a defined band will be calculated using the same timing values, thus minimizing geometry differences between video modes.</p><div class="quotebox"><blockquote><p><em>Definition for a standard arcade monitor:</em><br />monitor_specs_0 = &quot;15625-16200, 49.50-65.00, 2.000, 4.700, 8.000, 0.064, 0.160, 1.056, 0, 0, 288, 448&quot;</p></blockquote></div><p>Monitors which can work at two or more horizontal frequencies are usually referred as <em>multi-sync</em>. Strictly speaking, this actually means that the monitor can synchronize within two or more frequency ranges. If these ranges are relatively narrow and separated among them, we say the monitor has a &#039;banded&#039; design.</p><p>For instance, a 15.75 / 24.60 KHz dual sync monitor will probably work fine within a first range of [15.45 - 16.05] KHz and a second range of [24.30, 24.90] KHz, being those intervals built, in this particular sample, by considering a ±0.3 KHz tolerance around both nominal values (the appropiate tolerance ranges are the ones specified by the manufacturer). So, this dual sync monitor would require two <em>monitor_specs</em> lines to be defined:</p><div class="quotebox"><blockquote><p><em>Definition for Nanao MS9-29 dual-sync arcade monitor</em><br />monitor_specs0&nbsp; &nbsp; 15450.00-16050.00, 55-65, 3.91, 4.70, 6.85, 0.190, 0.191, 1.018, 0, 0, 288, 448<br />monitor_specs1&nbsp; &nbsp; 24300.00-24900.00, 55-65, 2.91, 3.00, 4.44, 0.451, 0.164, 1.048, 0, 0, 480, 768</p></blockquote></div><p>Frequencies not included within these ranges, such as 18.00 KHz or 31.50 KHz, will not be created by using these settings. This minimizes the risk of producing out of range frequencies.</p><p>Some new multi-sync arcade monitors can actually work at any horizontal frequency inside a continuous range from 15 KHz up to 31 or even 38 KHz. Despite of that, you can&#039;t use the same timings through the whole range. The reason is that low resolution video standards such as CGA use much longer line, porch and sync times than higher resolution standards as EGA or VGA, so a monitor designed to deal with different standards needs to readjust itself depending on the input signal. However, there is not a smooth transition from CGA to EGA or EGA to VGA as one could expect, rather than that there&#039;s a critic point somewhere in the middle of both standards from which the monitor will decide to jump to the <em>upper</em> one.</p><div class="quotebox"><blockquote><p><em>Definition for Wells Gardner D9800 multi-sync arcade monitor</em><br />monitor_specs0&nbsp; &nbsp; 15250-18000, 40-80, 2.187, 4.688, 6.719, 0.190, 0.191, 1.018, 0, 0, 288, 448<br />monitor_specs1&nbsp; &nbsp; 18001-19000, 40-80, 2.187, 4.688, 6.719, 0.140, 0.191, 0.950, 0, 0, 320, 448<br />monitor_specs2&nbsp; &nbsp; 20001-29000, 40-80, 2.910, 3.000, 4.440, 0.451, 0.164, 1.048, 0, 0, 384, 576<br />monitor_specs3&nbsp; &nbsp; 29001-32000, 40-80, 0.636, 3.813, 1.906, 0.318, 0.064, 1.048, 0, 0, 576, 768<br />monitor_specs4&nbsp; &nbsp; 32001-34000, 40-80, 0.636, 3.813, 1.906, 0.020, 0.106, 0.607, 0, 0, 576, 768<br />monitor_specs5&nbsp; &nbsp; 34001-38000, 40-80, 1.000, 3.200, 2.200, 0.020, 0.106, 0.607, 0, 0, 600, 768</p></blockquote></div><p>However, truly multi-sync monitors should be capable of synchronizing to any arbitrary horizontal frequency, provided it falls within a continuous range defined by a minimum and a maximum value, such as [31.00 - 50.00] KHz. PC monitors usually belong to this group. There is an industry standard for these monitors known as VESA GTF (Generalized Timing Formula) that defines the exact timing of a video signal at a specific frequency. VESA compliant monitors can accept any signal calculated by the GTF algorithm and automatically center the picture as the size of the borders is a known variable.</p><p>GTF is based on stablishing standard proportions between active video and blanking relative duration. On the other hand, <em>monitor_specs</em> lines use absolute values to define blanking times. Thus, you can&#039;t modelize GTF by means of <em>monitor_specs</em> lines, unless you used a lot of small discrete intervals. Despite of that, PC monitors are usually flexible enough to accept a single specification for the whole range. Of course, there will be geometry variations between different video modes, but you can use your monitor&#039;s OSD to create and save individual adjustments for each of them. </p><div class="quotebox"><blockquote><p><em>Definition for LG Studioworks 57M multi-sync PC monitor</em><br />monitor_specs0&nbsp; &nbsp; 29100-70000, 50.00-80.00, 1.200, 1.200, 3.000, 0.028, 0.044, 0.524, 0, 0, 1024.0, 800</p></blockquote></div><p>Some CRT TVs which are designed to accept multi-standard (PAL/NTSC) RGB signals via SCART, can&#039;t properly deal with all the continuous range of frequencies that spans from PAL frequencies (≈50 Hz) to NTSC frequencies (≈60 Hz). This is the case of many newer sets that mount a digital chasis.</p><p>These sets will happily admit frequencies that are close enough to those standards, and will usually apply some geometry correction adjustments that are specific for the standard they <em>think</em> they are dealing with. On the other hand, frequencies that are somewhat in the middle, like 55 or 57 Hz, will cause all sort of unpredictable behaviours, tipically distorted geometry or just an out of sync display. In this respect, these sets can be treated as <em>banded</em> multi-sync monitors, with two ranges around 50 Hz and 60 Hz respectively, separated by a gap, which width needs to be determined through experimentation. Unfortunately, this gap will for sure include frequencies that are fundamental ones in the arcade realm, making these TV sets unsuitable for fully accurate emulation. However, a compromise setup may usually be possible, by defining two <em>monitor_specs</em> lines.</p><div class="quotebox"><blockquote><p><em>Definition for Loewe CT1170 TV (E3000 chasis)</em><br />monitor_specs0&nbsp; &nbsp; 15625-15734, 50.00-52.40, 2.000, 4.700, 8.000, 0.064, 0.160, 1.056, 0, 0, 288, 448<br />monitor_specs1&nbsp; &nbsp; 15625-15734, 58.00-65.00, 2.000, 4.700, 8.000, 0.064, 0.160, 1.056, 0, 0, 248, 448</p></blockquote></div><p>Using these settings, all video modes above 248 lines will be calculated using the first line (<em>monitor_specs0</em>), thus limiting the vertical refresh value to a maximum of 52.40 Hz. On the other hand, video modes below or equal to 248 lines will be calculated with either interval which defined vertical refresh boundaries result closer to the desired refresh.</p><p>Finally, <em>monitor_specs</em> lines don&#039;t need to represent a physical monitor at all. Instead of that, you can use <em>monitor_specs</em> lines just to define some ranges you want your modelines to be produced. An usual case would be to define a range for standard CGA low resolutions, and a second range for VGA high resolutions. Each of these ranges would be targeted to different physical monitors, though it&#039;s perfectly possible to have the resulting video modes simultaneously present in the system, ready to be used when required, or just calculate them for later use. Of course, if this is the case, it&#039;s the user&#039;s responsibility to direct each video mode to the right monitor.</p><div class="quotebox"><blockquote><p><em>Definition for a dual CGA/VGA setup</em><br />monitor_specs0&nbsp; &nbsp; 15250-15700, 49.5-65, 2.000, 4.700, 8.000, 0.064, 0.192, 1.024, 0, 0, 288, 448<br />monitor_specs1&nbsp; &nbsp; 31500-31500, 50-70, 0.636, 3.813, 1.906, 0.318, 0.064, 1.048, 0, 1, 576, 768</p></blockquote></div><p>In the sample above, the idea is to produce CGA video modes with the first line, and VGA ones with the second.</p><br /><p><span class="bbu">Modeline scoring</span></p><p>For the previous explanation, we have assumed that when multiple <em>monitor_specs</em> lines are defined, only one of them (the most suitable one) will be used to produce the final output modeline for each situation, depending on the target video mode specs. </p><p>Although this is totally true from the user&#039;s point of view, it&#039;s important to explain how the modeline generator ends up deciding which range to use for a particular video mode, as only a deep understanding of how this mechanism works will allow us to create our own <em>monitor_specs</em> definitions with predictable results.</p><p>The basic idea here is that when we request a particular video mode, a viable modeline will be produced for each of the ranges defined. For instance, if we have created three <em>monitor_specs</em> lines, three modelines will be calculated (one for each resulting range). Obviously, producing a viable modeline using unsuitable ranges will require a substantial modification of the original video mode, in order to keep the frecuencies inside the defined ranges. This is achieved by different methods, such as line padding, line doubling, frequency lowering, frequency doubling, etc. including the extreme case where total <em>virtualization</em> of the video mode is required. Each of these modifications introduces an amount of degradation, that the modeline generator uses to compute the modeline score, a value that reflects the degree of degradation of a given modeline. So once the modeline generator has calculated a viable modeline for each of the ranges, it will pick the one with the best score, which should correspond with the most suitable range for the target video mode.</p>]]></description>
			<author><![CDATA[null@example.com (Eiusdemmodi)]]></author>
			<pubDate>Sat, 11 Oct 2014 19:14:02 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=329#p329</guid>
		</item>
		<item>
			<title><![CDATA[Re: 5. Video Mode Maker and Arcade OSD]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=328#p328</link>
			<description><![CDATA[<p>5.2.3. <span class="bbu">Arcade OSD: Tweaking the video modes and screen geometry</span>.</p><p>By means of Arcade OSD, you can further customize the video modes created by VMM in order to manually fine tune the geometry and refresh rate. But before undertaking the daunting task of manually editing several dozes of video modes, please remind this:</p><p>- <span class="bbu">Each time you run VMM, all exiting video modes will be deleted</span>. Bear this in mind in case you plan to do manual adjustments with Arcade OSD, because you can literally loose many hours of work. The easiest way to create a backup of your current video modes and is to use <a href="http://www.geocities.ws/podernixie/htpc/modeline-en.html"><strong>Winmodelines</strong></a>.</p><p>- <span class="bbu">It is usually wiser to work out a custom <em>monitor_specs</em> line</span> that summarizes your monitor geometry and timing requirements rather than manually editing the modelines one by one with Arcade OSD. A properly built <em>monitor_specs</em> line should allow VMM to automatically create modelines that need no further adjustment in terms of geometry. The exception to this is CRT TVs that actively adapt their geometry settings to the incoming signal.</p><p>- <span class="bbu">If you&#039;re using <strong>GroovyMAME</strong>, please understand that adjusting the modelines through Arcade OSD won&#039;t have any effect</span> in the video modes used by the actual games. This is because GroovyMAME already generates its own modelines that will override your manual adjustments. If you disable the modeline generation feature in GroovyMAME, then it will indeed pick the existing modelines as adjusted by you, but this is barely practical in real use cases due to the huge number of modes that are required. You can still force GroovyMAME to pick your adjusted modelines without restrictions, by adding them into the individual game&#039;s .ini using the standarized modeline text format, e.g. <em>modeline &quot;384x240_60 15.73KHz 59.60Hz&quot; 7.800 384 416 456 496 240 246 247 264 -hsync -vsync</em></p><br /><br /><p><span class="postimg"><img src="http://abadiadelcrimen.com/crt/aosd-1.png" alt="http://abadiadelcrimen.com/crt/aosd-1.png" /></span></p><p>Unfortunately, due to the video card&#039;s dotclock granularity, getting the exact vertical frequency defined for every video mode is, most of the times, not possible. Minute differentiations are usual (around 0.02 Hz) and sometimes it&#039;s worth adjusting a bit the modelines so we can get closer to the desired value for a more accurate vertical sync.</p><p><span class="postimg"><img src="http://abadiadelcrimen.com/crt/aosd-2.png" alt="http://abadiadelcrimen.com/crt/aosd-2.png" /></span></p><p>Arcade OSD is used to list every mode created in our system, set them as the desktop&#039;s video mode and also to manually tweak the generated modelines. Double-click <em>Arcade_OSD.exe</em> and a table with all the video modes currently generated in your computer will appear. You&#039;ll notice that every modeline has a <em>label</em> assigned which helps to identify them internally and is also used by the emulator programs, as it will be explained in the corresponding chapter. A label is essentially a simplification of the video mode&#039;s values where the value for the horizontal resolution (<em>Xres</em>) may be slightly altered over the actual one and the value for the vertical frequency (<em>Vfreq</em>) is modified into an integer. As the table is arranged according to the natural order and shows the actual value for the vertical frequency (<em>[Vfreq]</em>), finding any particular video mode should be intuitive enough. Eihter, cursor keys or <em>O</em>, <em>P</em>, <em>Q</em>, <em>A</em> keys, as well as &lt;Enter&gt; are used to navigate troughout the table.</p><p><span class="postimg"><img src="http://abadiadelcrimen.com/crt/aosd-3.png" alt="http://abadiadelcrimen.com/crt/aosd-3.png" /></span></p><p>To tweak any given video mode, select it and press &lt;Enter&gt; (make sure that the chosen modeline is any but the one currently set for the desktop). First off, let the program check the exact generated value for its vertical frequency by pressing &lt;5&gt;. <em>V (Hz)</em> shows now the actual vertical frequency when that video mode is being used. If that value is still a bit too far from the one you want, you can try to get closer by following these steps:</p><p>- Go to <em>Edit Modeline</em> and disable <em>Lock Vfreq</em>.<br />- Go to <em>DotClock</em> and try new values with the cursor keys.<br />- Press &lt;Enter&gt; and then &lt;5&gt; to check the actual vertical frequency for every value.<br />- Save changes when a better <em>DotClock</em> value has been found.</p><p>Keep in mind that changing the dotclock value also modifies the value for the horizontal frequency, which alters the picture&#039;s geometry -- higher horizontal frequency is translated into bigger side borders since the picture gets more compressed horizontally, so it may need more correction from the monitor&#039;s controls for analog scaling.</p><p>Note: Radeon 9250 users may want to take advantage of having a built-in table of measured dotclock values and let VMM to automatically try different dotclock values for every video mode and then pick the most accurate one. To do this, go to the section 3 in <em>VMMaker.txt</em> and change the number of <em>Iterations</em>, up to 5. The higher the number of <em>Iterations</em>, the bigger the accuracy of the vertical refresh obtained (again, normally at the cost of increasing the horizontal frequency strictly required). Users of other video cards can&#039;t properly use this feature since it needs previously measured dotclock values to work.</p><p>Similarly, you can dynamically vary position/geometry aspects of the modeline on the fly, which is especially useful if you get margin issues or don&#039;t have access to the geometry adjustment functions of your monitor. Go to Horizontal/Vertical Geometry and make the adjustments you need from there.</p>]]></description>
			<author><![CDATA[null@example.com (Eiusdemmodi)]]></author>
			<pubDate>Sat, 11 Oct 2014 19:13:45 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=328#p328</guid>
		</item>
		<item>
			<title><![CDATA[Re: 5. Video Mode Maker and Arcade OSD]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=327#p327</link>
			<description><![CDATA[<p>5.2.2. <span class="bbu">Video Mode Maker: Generating video modes</span>.</p><p>VMM is used to generate video mode lists in an automated way, for their use with CRT Emudriver. Although CRT Emudriver already installs a list of common video mode by default, you will probably want to customize it to better fit your particular monitor and set of emulators.</p><p><span class="postimg"><img src="http://abadiadelcrimen.com/crt/vmmaker-1.png" alt="http://abadiadelcrimen.com/crt/vmmaker-1.png" /></span></p><br /><p>VMM is currently a <span class="bbu">console application</span>, so it has no GUI. Using VMM is a simple task that consists on these steps:</p><p>1.- Do the <strong>configuration</strong>. This involves manually editing <em>VMMaker.ini</em>, <em>ReslList.txt</em>, and maybe <em>MameMain.txt</em>.</p><p>2.- Run <strong>VMMaker.exe</strong> (Run as administrator if you&#039;re in Windows 7).</p><p>3.- <strong>Reboot</strong></p><p>Any further configuration can be done by repeating this process. Bear in mind that each time you run VMM, <span class="bbu">all existing modelines will be overwritten</span>. Take care of this in case you had done manual adjustments to the current modelines.</p><p><span class="postimg"><img src="http://abadiadelcrimen.com/crt/vmmaker-2.png" alt="http://abadiadelcrimen.com/crt/vmmaker-2.png" /></span></p><br /><p>VMM uses <span class="bbu">two sources of information</span> as input for the list of video modes it will calculate:</p><p>- <span class="bbu"><strong>XML List:</strong></span> this is used specifically for the MAME/MESS/UME emulators. These can output all the native video modes for their emulated systems in .xml format. VMM can then use this information to automatically create the required video modes.</p><p>- <span class="bbu"><strong>Custom List (ReslList.txt):</strong></span> this is a list in plain text format which the user can freely customize, by adding or removing video modes that will be later created by VMM. Just be careful to follow the format and spacing.</p><p>Both sources can be used simultaneously, and an independent set of options applies to each of them (see below suffixes &quot;_XML&quot;, &quot;_custom&quot;), so you can filter and rationalize the resulting list to your convenience.</p><p>VMM assigns the <span class="bbu">highest priority</span> to the video modes from the <span class="bbu">Custom List</span>, and relegates the ones coming from the <span class="bbu">XML list</span> to lower priority. You can still promote one video mode from the XML list to high priority by adding its source game name to the <em>MameMain.txt</em> list. Priorities are important because usually VMM will need to prune the resulting modelist in order to get it to fit in the driver&#039;s memory. In this situation, low priority modes are dropped first.</p><p>Now we will discuss the different options in <em>VMMaker.ini</em>. You have samples for <span class="bbu">typical use cases</span> in the <span class="bbu">Apendix B</span> of this chapter. <em>VMMaker.ini</em> is divided itself into four main sections, and should be edited as follows:</p><br /><p>1) MAME</p><p><span class="bbu">- MameExe</span>: use this option to enter the full path of your MAME/MESS/UME executable file. E.g.: MameExe =&nbsp; &quot;c:\Emu\MAME\mame.exe&quot;. If you&#039;d like to get video mode information simultaneously from MAME and MESS, use one of the existing combined builds (UME). This option is only required if <em>GenerateXML</em> is enabled.</p><p><span class="bbu">- IniPath</span>: use this option to enter de full path of your MAME .ini folder. E.g: IniPath = &quot;c:\Emu\MAME\ini\&quot;. Mind the ending backslash! This option is only required if <em>GenerateInis</em> is enabled.</p><p><span class="bbu">- ListFromXML:</span> Use this option to enable video information being listed from an XML source. The information is extracted from the emulator program itself, which stores all the modelines used by the games it emulates in an <em>.XML</em> file. For this, you need a version of MAME/MESS/UME previously installed. Keep in mind that these video modes have been defined by the emulator&#039;s coders themselves, and could not be totally accurate depending on the emulation status for every particular game/system. For arcade games in general, there isn&#039;t currently a better video documentation source than MAME, anyway.</p><p><span class="bbu">- GenerateXML:</span> Enable this option to actually retrieve the XML file from MAME/MESS/UME. Because this is a slow process, it is generally fine to do it just once, and then disable this option so the next time you run VMM it can reuse the already generated XML file.</p><p><span class="bbu">- OnlyListMain:</span> By using this option, you can force VMM to only create the video modes from the games contained in <em>MameMain.txt</em>, when the XML file is processed. All other modes from the XML file will be discarded. This is useful in case you&#039;re only interested in emulating a few games.</p><p><span class="bbu">- GenerateInis:</span> enable this option if you want VMM to automatically configure MAME in a per-game basis -- it can create the <em>.ini</em> files the emulator uses for every game, so that you don&#039;t have to set every particular game&#039;s video options for the native video modes. This option is meant for official MAME. The use of individual .ini files has become obsolete since the development of GroovyMAME.</p><p><span class="bbu">- MonitorHorizontal:</span> enable this option if you want vertical games to be rotated so that you can run them on a horizontal monitor. Instead of their native resolution, a suitable rotated video mode will be calculated. Horizontal games will keep their native resolution. If this option is disabled, both horizontal and vertical games will keep their native resolution, meaning that you will need to physically rotate your monitor in order to display the vertical ones.</p><p><span class="bbu">- RotatingDesktop:</span> enable this option if you&#039;re planning to rotate Windows&#039; desktop as well when you physically rotate your monitor. This option only affects the options applied to .ini files, in case these are created.</p><p><span class="bbu">- VerticalAspect:</span> by default, VMM will calculate the resolution of rotated vertical games so that it matches the correct aspect ratio, usually 4:3 (3:4 when rotated). Some users find the correct aspect too &quot;skinny&quot; and prefer a wider picture. This option allows enforcing any aspect ratio for rotated vertical games:</p><p>&nbsp; &nbsp;4:3 (keeps original aspect ratio)<br />&nbsp; &nbsp;3:3 (stretches to square format)<br />&nbsp; &nbsp;3:4 (stretches to full screen)<br />&nbsp; &nbsp;h:v (custom aspect ratio)</p><br /><p>2) MONITOR</p><p><span class="bbu">-MonitorType:</span> Use this option to define the type of monitor in use (since CRT Emudriver is able to work with any type of monitor and not just 15-kHz ones), so that VMM generates the modelines properly for your monitor&#039;s specifications. The following presets are included in VMM:</p><p>- MonitorType = &quot;GENERIC&quot; Standard 15-kHz monitor (15.7 kHz)<br />- MonitorType = &quot;NTSC&quot;&nbsp; &nbsp; &nbsp; Standard 15-kHz-only NTSC CRT TVs<br />- MonitorType = &quot;PAL&quot;&nbsp; &nbsp; &nbsp; &nbsp; Standard 15-kHz-only PAL CRT TVs <br />- MonitorType = &quot;CGA&quot;&nbsp; &nbsp; &nbsp; &nbsp;Standard resolution &quot;CGA&quot; monitor (15.2-15.7 kHz)<br />- MonitorType = &quot;EGA&quot;&nbsp; &nbsp; &nbsp; &nbsp;Medium resolution &quot;EGA&quot; monitor (24.9 kHz)<br />- MonitorType = &quot;VGA&quot;&nbsp; &nbsp; &nbsp; &nbsp;High resolution &quot;VGA&quot; monitor (31.5 kHz)<br />- MonitorType = &quot;MULTI&quot;&nbsp; &nbsp; Multi-sync CRT PC monitors (54-82 kHz)<br />- MonitorType = &quot;D9800&quot;&nbsp; &nbsp; Wells Gardner D9800, D9400 (15-38 kHz)<br />- MonitorType = &quot;D9200&quot;&nbsp; &nbsp; Wells Gardner D9200 (15-38 kHz)<br />- MonitorType = &quot;H9110&quot;&nbsp; &nbsp; Hantarex MTC 9110 (15.6-16.7 kHz)</p><p>By default, <em>MonitorType</em> is set as &quot;CUSTOM&quot;, and a sample <em>monitor_specs</em> line is provided, which should be good enough for the average 15 kHz arcade monitor and CRT TV. Notice that most CRT TVs are actually multi-standard. This means that they will support both PAL and NTSC signals. In this case you&#039;d better leave the default configuration, instead of choosing any of the &quot;PAL&quot; or &quot;NTSC&quot; presets, which are only meant for TVs that require strictly standarized timings.</p><p><span class="bbu">- monitor_specs_0-9:</span> A more technical approach involves keeping the <em>MonitorType</em> line as &quot;CUSTOM&quot; and manually defining the monitor&#039;s specifications by editing the line <em>monitor_specs_0</em>. Though this is the way to get the best performance out of your particular monitor through CRT Emudriver, it requires proper technical knowledge of your monitor and a deeper understanding of how a CRT works, so it&#039;s aimed only at advanced users, therefore we&#039;ll explain the method in a separate subchapter here. Keep in mind, nevertheless, that this method will serve to also solve generalized problems regarding screen geometry and visible area which may appear after generating video modes with any of the monitor presets.</p><p>3) MODELINE GENERATOR</p><p><span class="bbu">- TotalModes:</span> This option defines to maximum number of video modes to be generated. By default it is set to 120, which is a safe value for all CRT Emudriver versions. Only the version based on Catalyst 6.5/32-bit allows up to 200 modes. Remind that <a href="http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=336#p336">Hyperspin</a> frontend will fail to start if too many video modes are defined.</p><p>If processing both the XML and Custom Lists results in the <em>TotalModes</em> value being exceeded, VMM will need to prune the mode list, until it meets the <em>TotalModes</em> value. Discarded video modes are listed in the <em>Droplist.txt</em> output file after the process. The pruning process intends to be intelligent. Modes that are used by few games or are easily substituted for another one in the list with minor issues are dropped first. As explained above, modes from the Custom list have the highest priorty and should be dropped in the last place, as well as the ones belonging to games from <em>MameMain.txt</em>.</p><p>Being able to deal with huge mode lists has been crucial in the past. However, since the development of GroovyMAME, this is not a critical factor anymore.</p><p>The following group is presented as pairs of options, with the suffixes &quot;_XML&quot; and &quot;_Custom&quot;. What you need to understand is that the &quot;_XML&quot;-ending options apply to the video modes from the XML List, while the &quot;_custom&quot;-ending options apply to the ones from the Custom List. This is very important because it allows using different criteria depending on the source.</p><p><span class="bbu">- ModeTableMethod_XML / ModeTableMethod_Custom:</span> these options define the method you want to use when creating the mode table. The values allowed here are the following:</p><p>&nbsp; &nbsp; 0 = <span class="bbu">Static Table:</span> video modes are generated keeping their original vertical refresh rate. This is the method you will usually apply to the modes from the Custom List and also to the XML List in case you use official MAME and .ini files per game.</p><p>&nbsp; &nbsp; 1 = <span class="bbu">Dynamic Table:</span> a table of dummy modes is created using the width and height native values while ignoring the vertical refresh. This method is intended to be applied to the XML List to create a suitable mode table for GroovyMAME. No .ini files are requiered in this case (remind to disable the <em>CreateInis</em> option.</p><p>&nbsp; &nbsp; 2 = <span class="bbu">Magic Table:</span> a table of &quot;magic&quot; resolutions is created, in the form 1234 x height, by ignoring the native width and refresh and only keeping the height. This method drastically reduces the size of the mode list. It&#039;s only supported by GroovyMAME under Windows XP (it won&#039;t work under Windows 7), and is intended as a workaround for the <a href="http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=336#p336">Hyperspin issue</a>.</p><p>When using the <em>Static Table</em> method, care must be taken if you&#039;re defining two instances of a given resolution with different but close refresh rates (closer than 1 Hz). You may run into an issue because the operating system labels the refresh rate with an integer number. For this reason both modeline definitions will overlap. The traditional workaround has been incrementing the logical width of the video mode by one pixel for each refresh variant, and matching each game with the proper variant in its .ini file. VMM does this automatically for you automatically in order to avoid overlapping labels. Unfortunately this workaround no longer works in Windows 7, making the <em>Static Table</em> method mostly unusable for XML sources in practical cases. In this situation, the use of GroovyMAME combined with a <em>Dynamic Table</em> is the only reasonable approach. However, you will still need the <em>Static Table</em> method to deal with the video modes required by other emulators that don&#039;t manage refresh rates by themselves like GroovyMAME does. In these cases, you will need to define the video modes with their exact refresh rates in ReslList.txt, paying attention not to generate cases where the refresh rates would overlap as described above.</p><p>When using the <em>Magic Table</em>, GroovyMAME overwrites the dummy &quot;1234&quot; value with the native width of the emulated game, creating a genuine modeline with the required width. This is actually a hack and may work great in many systems while causing issues in a few. It is strongly recommended to use Direct3D instead of DirectDraw when using this method.</p><p>As an alternative to the <em>Magic Table</em> that is compatible with both Windows XP and 7, you can use <span class="bbu">&quot;super&quot; resolutions</span>. This is a special case of <span class="bbu">Dynamic Table</span>, where the native width is substituted by a super-wide resolution, usually 2560, meant to perform fractional stretching over the horizontal axis, while keeping the native height unmodified. Due to the nature of CRT monitors, provided a high enough horizontal resolution is used this method produces no visual artifacts. A special <em>&quot;ReslList - super.txt&quot;</em> file is provided with instructions to set up &quot;super&quot; resolutions. This method is becoming the rule in the emulation scene, driving the other ones into obsolescence.</p><p><span class="bbu">- XresMin_XML / XresMin_Custom:</span> This option simply sets a minimum value for the horizontal resolution. Lower values will be replaced by this one.</p><p><span class="bbu">- YresMin_XML / YresMin_Custom:</span> Idem but for the vertical resolution. This option is important in order to optimize your mode table. With standard arcade monitors and from a hardware point of view, vertical resolutions below 240 lines are totally equivalent to displaying the same resolution within a 240 line mode and adding black borders as padding above and below the active lines. For this reason, creating those resolutions is redundant and a waste of space in the mode list, so it is recommended to set this value to 240. However this is only true if you use an emulator that is smart enough to center the vertical resolution without stretching it (GroovyMAME is, and official MAME too when used with DirectDraw).</p><p><span class="bbu">- YresRound_XML / YresRound_Custom:</span> Use this option to optimize the resulting mode list. By rounding the height to the next defined multiple VMM will produce a more reasonable mode list, while keeping the visual features intact. These are the allowed values:</p><p>&nbsp; &nbsp; 0 = Leave original value<br />&nbsp; &nbsp; 1 = Round to next 2-multiple<br />&nbsp; &nbsp; 2 = Round to next 4-multiple<br />&nbsp; &nbsp; 3 = Round to next 8-multiple<br />&nbsp; &nbsp; 4 = Round to next 16-multiple</p><p>Bear in mind that some of the values above can prevent common resolutions from being created. E.g. 800x600, when using 16-multiples won&#039;t be created as such, because 600 is not divisible by 16.</p><p><span class="bbu">- DotClockMin:</span> Use this option if your video card can&#039;t support low dotclocks. As a workaround, VMM will duplicate the horizontal resolution of the video mode, whenever the calculated modeline results in a dotclock under the value specified by this option. To make use of this you will need an emulator that is capable of integer scaling on the horizontal axis (any MAME build is). The value must be specified in MHz. E.g. <em>DotClockMin = 7.010</em></p><p><span class="bbu">- Iterations:</span> This option allows increasing the accuracy of the resulting refresh by successive iterations of the modeline generator. Valid values are 0-5. To use this option, a valid look-up table of precalculated dotclocks is required. One sample of this table is provided for the Radeon 9250. Users of this card can benefit from the extra accuracy when using this option. For other cards, this option won&#039;t result in any improvement, so it&#039;s better to keep it disabled.<br />&nbsp; </p><p>4) DRIVER</p><p><span class="bbu">- DisplayName:</span>&nbsp; This option allows VMM to point to the right device when creating modelines. Usually it will be &quot;\\.\DISPLAY1&quot;, unless your system has more than one video card. If that is the case you will need to find out the display number that represents your target Radeon card and edit this option accordingly.</p><p><span class="bbu">- DriverPath:</span> This option sets the path to the driver installation files (&quot;.\Driver\&quot; by default), in order to add the modeline definitions directly into the driver&#039;s .inf files, making it useful for cloning the current setup on further driver installations. Starting from Windows 7, digital signature is required for .inf files, making this feature obsolete.</p><p><span class="bbu">UpdateDriver:</span> This option is used in combination with <em>DriverPath</em> in order actually enable the driver&#039;s files update, as explained above. Same remarks apply.</p><p><span class="bbu">- UpdateRegistry:</span> By enabling this option you allow VMM to install the calculated modelines in the Windows registry. Default value is enabled. You can disable this option if you want to use VMM as a simple modeline calculator, without modifying your current setup. </p><p><span class="bbu"> - AnyCatalyst:</span> By enabling this option you can force VMM to install the calculated modelines even with regular Catalyst drivers (non-CRT Emudriver).</p><br /><p>The <span class="bbu">ReslList.txt file</span> format consists in a simple list of video modes, in the form &quot;<em>width x height @ refresh label</em>&quot;. You must respect the proper spacing just as shown below, otherwise the file parsing will fail:</p><div class="codebox"><pre><code>## Samples ##

 640 x 480 @ 30.000000 desktop1
1280 x1024 @ 60.000000 desktop2
 256 x 224 @ 60.098475 superfam</code></pre></div><p>Finally, you may want to edit the <span class="bbu">MameMain.txt</span> file. VMM makes a selection among the whole XML source attending firstly to the games/drivers defined in the <em>MameMain.txt</em> file, which will get priority only after the modes defined in <em>ReslList.txt</em>.</p><p><em>MameMain.txt</em> can be edited according to the user&#039;s preferences, so you can delete or add the games/drivers corresponding to the video modes you want by following the format (it uses MAME&#039;s romset/driver names), once you know them by way of MAME documentation. You can also use <em>MameMain.txt</em> in combination with the <em>OnlyListMain</em> option explained above, to filter out anything that&#039;s not in this list.</p><p>The entries in <em>MameMain.txt</em> as default have been chosen so that any relevant title gets it&#039;s video mode created, but the list is always susceptible of being modified. A sample of the expected format is shown below:</p><div class="codebox"><pre><code>brkthru,   &quot;Kyohkoh-Toppa&quot;
ninjakd2,  &quot;UPL&quot;
mustang,   &quot;NMK 1989&quot;
snowbros,  &quot;Snow Bros&quot;
bublbobl,  &quot;Bubble Bobble&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Eiusdemmodi)]]></author>
			<pubDate>Sat, 11 Oct 2014 19:13:24 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=327#p327</guid>
		</item>
		<item>
			<title><![CDATA[Re: 5. Video Mode Maker and Arcade OSD]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=326#p326</link>
			<description><![CDATA[<p>5.2.1. <span class="bbu">Installation</span>.</p><p>VMM and AOSD are <em>portable</em> applications which don&#039;t require actual installation -- they&#039;re packed in a self-extracting <em>.EXE</em> file which also contains CRT Emudriver, so simply extract them to any folder in the hard disk drive of the targetted computer and then run from there every time they&#039;re needed. VMM adds modelines to Window&#039;s registry every time it&#039;s run and requires rebooting the computer.</p><p>Before running VMM, make sure you&#039;ve got &quot;Hide the modes which can&#039;t be displayed by the monitor&quot; [?] disabled on Windows -- go to Screen properties (from the desktop), Configuration, Advanced features, Monitor [?] in order to find the setting. It&#039;s recommended to also make a back-up of your MAME configuration, particularly of the <em>.INI</em> folder.</p>]]></description>
			<author><![CDATA[null@example.com (Eiusdemmodi)]]></author>
			<pubDate>Sat, 11 Oct 2014 19:13:04 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=326#p326</guid>
		</item>
		<item>
			<title><![CDATA[Re: 5. Video Mode Maker and Arcade OSD]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=325#p325</link>
			<description><![CDATA[<p><strong>5.2. Usage.</strong></p><p>Video Mode Maker (<em>VMM</em>) and Arcade OSD (<em>AOSD</em>) have been conceived from a user-friendly perspective, in which there&#039;s no need for a deep knowledge about the technicalities involved in the display of a computer-generated picture. However, it is assumed that basic notions, particularly of the concept of <em>video mode</em> and CRTs classification, are already understood by the reader, so refer to the <em>How a CRT works</em> section for explanations on the subject in the case they&#039;re not.</p><p>We should remember that the point of this software is making modern video-rendering hardware for Windows-based PCs behave, display-wise, exactly like old dedicated video-rendering hardware did for proper usage of emulator programs, so the more the user&#039;s familiarity with the native video modes of the emulated systems is, the easier the usage of these tools becomes. For that purpose, we provide with lists of the different known video modes used by the most relevant video-game systems from the 80&#039;s and 90&#039;s in a dedicated chapter <a href="http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=316#p316">here</a>, as well as independent chapters for their particular emulator programs.</p>]]></description>
			<author><![CDATA[null@example.com (Eiusdemmodi)]]></author>
			<pubDate>Sat, 11 Oct 2014 19:12:49 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=325#p325</guid>
		</item>
		<item>
			<title><![CDATA[Re: 5. Video Mode Maker and Arcade OSD]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=324#p324</link>
			<description><![CDATA[<p><strong>5.1. Purpose.</strong></p><p>Video Mode Maker and Arcade OSD are two utility programs for Windows XP and Windows 7, for use in combination with <a href="http://geedorah.com/eiusdemmodi/forum/viewtopic.php?id=27">CRT Emudriver</a> and emulator programs of old video-game systems and computers. They&#039;re essentially the tools to generate custom video modes for the video cards supported by CRT Emudriver, test them, and make per-modeline adjustments to dynamically control both, screen geometry and vertical frequency.</p><p>Additionally, Video Mode Maker can also be used to automatically set the video options of the emulator application MAME for every supported game attending to their native modelines as documented in the emulator itself.</p>]]></description>
			<author><![CDATA[null@example.com (Eiusdemmodi)]]></author>
			<pubDate>Sat, 11 Oct 2014 19:12:36 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=324#p324</guid>
		</item>
		<item>
			<title><![CDATA[5. Video Mode Maker and Arcade OSD]]></title>
			<link>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=323#p323</link>
			<description><![CDATA[<p>5 .&nbsp; &nbsp;V i d e o&nbsp; &nbsp;M o d e&nbsp; &nbsp;M a k e r&nbsp; &nbsp;a n d&nbsp; &nbsp;A r c a d e&nbsp; &nbsp;O S D</p><p>5.1. Purpose.</p><p>5.2. Usage.<br />&nbsp; &nbsp;5.2.1. Installation.<br />&nbsp; &nbsp;5.2.2. Video Mode Maker: Generating video modes.<br />&nbsp; &nbsp;5.2.3. Arcade OSD: Tweaking the video modes and screen geometry.</p><p>Appendix A: Defining monitor specifications.</p><p>Appendix B: Practical examples.</p>]]></description>
			<author><![CDATA[null@example.com (Eiusdemmodi)]]></author>
			<pubDate>Sat, 11 Oct 2014 19:12:21 +0000</pubDate>
			<guid>http://geedorah.com/eiusdemmodi/forum/viewtopic.php?pid=323#p323</guid>
		</item>
	</channel>
</rss>
