Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

  

Author Topic: GroovyMAME 0.227 - Switchres v0.017t  (Read 538718 times)

0 Members and 2 Guests are viewing this topic.

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7448
  • Last login:Yesterday at 06:34:55 am
  • Quote me with care
GroovyMAME 0.227 - Switchres v0.017t
« on: August 06, 2016, 11:10:36 am »
What is GroovyMAME?

GroovyMAME is a M.A.M.E. fork aimed at CRT monitors, with a strong focus on CRT preservation, since this is the only display technology that accurately replicates the genuine video game experience. However you can use GroovyMAME to alleviate some of the annoyances associated to emulation on LCD displays, specially for those models which are capable of refreshing at custom rates.

GroovyMAME's main features as compared to official MAME:

- Improved video and audio synchronization that achieves truly smooth scrolling, tearing-free video and hiccup-free audio.

- Automatic generation of custom video timings for CRT monitors.

- Reduced input latency

While the improved synchronization feature is system independent, you are going to need a special hardware and software setup in order to get the full potential out of GroovyMAME.

Regarding the hardware part, do yourself a favour and grab an ATI/AMD Radeon card, any model from Radeon 7000 to the HD 7xxx family should work, both AGP and PCIe models. As far as we know, there is nothing that can remotely compare to these cards in terms of flexibility.

On the software side of things, you need to be aware that operating systems are not designed to deal with hundreds of video modes as we are going to need here, so some degree of hacking is required. You can use one of these options:

- Windows 7/8/8.1/10-64-bit + CRT Emudriver 2.0 beta (ATI/AMD Radeon HD 2xxx to R9 series).
                   CRT Emudriver download site (ftp courtesy of Abubu)

- Windows XP-32/64-bit, Windows 7-64-bit + CRT Emudriver 1.2x (ATI/AMD Radeon 7000 to HD 4xxx).
                   CRT Emudriver download site (ftp courtesy of Abubu)
                   Download mirror (courtesy of Krick)

- Groovy Arcade Arch Linux distro (ATI/AMD cards supported by the xf86-video-ati driver, Nvidia models supported by the 'nouveau').
                   Groovy Arcade download site

Either one of these operating systems combined with one supported card is the preferred environment to run GroovyMAME in. However, GroovyMAME can also generate custom timings under Windows for virtually any card supported by PowerStrip, by interfacing with Powerstrip's API. Anyway, keep in mind this method is way more limited and unreliable than the standard one.

Download GroovyMAME

         GroovyMAME download site

Setup

For a guide on setting GroovyMAME along with CRT Emudriver (Windows 7), please refer to Recap's  GroovyMAME: Installation and quick configuration.

Basic steps (Windows):
- Download the official GroovyMAME package from our site.
- Unzip the package into a folder of your choice.
- Edit mame.ini with your ROM paths and monitor type (in the SwitchRes section).
- Run mame64.exe

Reporting problems. How to create a log

If you're experiencing any problem or odd behaviour regarding GroovyMAME, please create a log and post it when reporting the problem. This will provide us with critical information beforehand and will save us from asking you to post a log. Bug reports without a proper log will be ignored.

Steps to create a log:

- Run GroovyMAME like this:
Code: [Select]
c:\mame_folder>groovymame.exe romname -v >romname.txt- Upload romname.txt as an attachment to your post. Please don't paste it inside the edit box as it makes things unreadable.

Compiling notes (v0.227)

Go to our GitHub site, and download the most recent release source package. If you're a git user, you'll likely prefer cloning the repository locally, and checkout the most recent GroovyMAME's branch (e.g. groovymame0224).

Alternatively, you can download GroovyMAME's patch, and apply it over MAMEdev's source package, this way:

Code: [Select]
c:\mame_source>patch -p1 <0227_groovymame_017t.diff
c:\mame_source>make


What's new in Switchres v0.017t (January 2021)

- Slider enhancements (as requested by schmerzkaufen):

  * Increased vsync_offset slider limit to 1024
  * Added 1-decimal precision to CPU overclock slider


What's new in Switchres v0.017s (October 2020)

- (github) Added script for automatic builds (Substring).

- Re-added -black_frame_insertion features from v0.017q, that had been accidentally removed.

- (Linux) Hide v-sync offset slider (not implemented yet)


What's new in Switchres v0.017r (September 2020)

- (Windows) Added v-sync offset slider. Used for removing static tearing when using frame delay. Valid values: 0-512.


What's new in Switchres v0.017q (June 2020)

- Improved black frame insertion, as per Blur Busters request. Option -black_frame_insertion (-bfi) now takes an integer that means the number of black frames to insert after the visible frame:
  - For 120 Hz, use -bfi 1
  - For 180 Hz, use -bfi 2
  - etc.


What's new in Switchres v0.017p (November 2019)

- Updates code since some of the low latency modifications have now been pushed to baseline. There's a new option -lowlatency, enabled by default in GM, that is required by -frame_delay to work.

- (Windows) Dropped modification introduced in v0.017o to reduce input latency in BGFX, because it causes speed issues on Windows 7.


What's new in Switchres v0.017o (August 2019)

- Reduced input latency for the BGFX video backend with vsync enabled. Measured latency is now 2 frames lower on Windows (not tested on Linux yet). Using DwmFlush() on Windows for vsync. [oomek/Calamity]


What's new in Switchres v0.017n (January 2019)

- (Windows) Fixed bug that caused HLSL to crash with the Direct3D9ex renderer.

- (Windows) Improved version detection of regular AMD drivers.

- (Windows) Changed package naming policy, now the plain Direct3D build becomes groovymame64...win-xp, while the Direct3D9Ex one becomes groovymame64...win-7-8-10, as per Krick's suggestion. Hopefully this hint will route users to the proper build based on their operating system's version.


What's new in Switchres v0.017m (December 2018)

- Added feature to autosave UI sliders to make frame delay in-game adjustments non-volatile.

- (Windows) Added capability to toggle frame delay from the UI.

- (Windows) Preliminar work on modifications to the frame delay implementation to improve its accuracy.

- (Windows) Temporarily dropped BFGX support due to upstream overhaul.


What's new in Switchres v0.017l (November 2018)

- Fixed issue where 4K pixel clocks caused an overflow in the modeline engine. Now Switchres can properly pick 4K video modes. However, AMD drivers will still reject custom 4K timings so, until this gets fixed, use the -nomodeline_generation in GroovyMAME when running on 4K monitors.


What's new in Switchres v0.017k (November 2018)

- Modeline generation now possible from 15 kHz up to 8K fulldome. Bandwidth limitations imposed by drivers still apply.


What's new in Switchres v0.017j (October 2018)

- Attempt at fixing mode selection issues on LCD monitors caused by a mismatch where Windows reports modes as interlaced but AMD drivers return progressive timings.


What's new in Switchres v0.017i (August 2018)

- Attempt at fixing random crashes when save states are used. Experimental confirmation needed.

- Improved selection of video modes based on refresh rate when option -modeline_generation is disabled.


What's new in Switchres v0.017h (March 2018)

- Added slider control for frame delay [intealls]

- Added speed statistics to the -bench command to estimate the right value of frame delay for a specific game [intealls]


What's new in Switchres v0.017g (February 2018)

- Fixed D3D9ex windowed mode.

- Fixed multimonitor (D3D9ex only).


What's new in SwitchRes v0.017f (November 2017)

- (Windows) Fixed bug that caused GM to crash with Direct3D9Ex when no suitable video mode mode was found.

- Added new monitor preset for 15.7/31.5 kHz dual-sync monitors (arcade_15_31).


What's new in SwitchRes v0.017e (August 2017)

- Some code changes in response to the ongoing overhaul in baseline options system.


What's new in SwitchRes v0.017d (June 2017)

- (Linux) Fixed bug affecting the "lcd" monitor preset, that caused a wrong 0x0 resolution to be used [Doozer].

- (Linux) Fixed long-standing bug that prevented DRM-based v-sync from working at all  [Calamity].


What's new in SwitchRes v0.017c (March 2017)

- (Windows) Fixed bug that caused newer video cards to be incorrectly detected as legacy ones. Make sure to match with CRT Tools beta 10+.


What's new in SwitchRes v0.017b (February 2017)

- (Linux) xrandr system executions replaced by libxrandr calls for modeline manipulation. Improved X error handling. Fixed in-game video mode switching [Doozer].


What's new in SwitchRes v0.017a (February 2017)

- Added support for lots of new AMD GPUs & APUs, check CRT Emudriver's site for the required driver update.


What's new in SwitchRes v0.016 final (January 2017)

- Increased granularity of integrated audio resampler, to avoid or reduce over-/underruns due to the use of -syncrefresh with the new PortAudio implementation for low latency audio [intealls].


What's new in SwitchRes v0.016 alpha 6 (January 2017)

- Attempt at fixing broken spinner/trackball devices while preserving low latency for keyboards and joysticks. Experimental confirmation needed. Confirmed.


What's new in SwitchRes v0.016 alpha 5 (December 2016)

- Now scaling options are properly re-applied after a resolution switch, for instance when rotating the screen from the internal user interface.

- Dropped the set_focus fix as it's no longer required since SDL 2.0.5 [Doozer].


What's new in SwitchRes v0.016 alpha 4 (December 2016)

- Full implementation of dynamic mode switching on the BGFX renderer (D3D11 backend). Now it shouldn't crash when launching games from the internal UI. Games that switch video modes dynamically now work.

- Improved dynamic mode switching for -video bgfx (D3D11) and -video d3d (D3D9/D3D9Ex*). Now transitions should be smoother, and the desktop shouldn't flash on the background anymore. There should be comparative advantage here for D3D9ex (and D3D11) over plain D3D9 since the former doesn't need to destroy and recreate resources upon a mode switch.

- Attempt at reducing input latency, now it should be on a par with previous versions of GM (0.171). Experimental confirmation needed. Confirmed!

* Re-added D3D9Ex support, now as a separate build. Remind using -video d3d even for the D3D9ex build, instead of the old deprecated setting -video d3d9ex.


What's new in SwitchRes v0.016 alpha 3 (October 2016)

- Attempt at fixing erratic speed issue on Windows XP, by replacing std::chrono::high_resolution_clock by std::chrono::steady_clock.


What's new in SwitchRes v0.016 alpha 2 (September 2016)

- Attempt at fixing bug that caused -unevenstretchx to be always forced even if full fractional stretching was required when the -super_width condition was met.


What's new in SwitchRes v0.016 alpha 1 (August 2016)

- Project relicensed as GPL-2.0+.

- (Windows 7+) Real full screen support for BGFX renderer (Direct3D 11 backend). Still experimental, dynamic resolution switching may crash on some systems. Latency reduced by the SetMaximumFrameLatency method.

- New option -autosync:
     * With -autosync enabled, -syncrefresh will be activated automatically if the refresh difference is below -syncrefresh_tolerance. If the refresh difference is greater than -syncrefresh_tolerance, -triplebuffer (multithreaded blitting) will be activated for Windows builds, while -nosyncrefresh will be used for SDL builds.

     * With -autosync disabled, -syncrefresh (and -triplebuffer for Windows builds) will be configured manually, either from command line or ini files.

- New option -super_width. Defines the width that triggers the new -unevenstretchx option (fractional scaling on horizontal axis, integer scaling on vertical axis). Used for super resolutions. Default value is 2560.

- Dropped option -cleanstretch. Not required any more since official MAME now supports integer scaling.

- Dropped Direct3D 9ex support. LCD owners who used -video d3d9ex in order to enjoy reduced latency are suggested to move to -video bgfx, which now implements the same latency reduction method (SetMaximumFrameLatency).


Older threads:

GroovyMAME 0.171 - SwitchRes v0.015m
GroovyMAME/GroovyUME 0.149 SwitchRes v0.014b
GroovyMame for arcade monitors version 0.146u4_013f


« Last Edit: January 11, 2021, 08:10:56 am by Calamity »
Important note: posts reporting GM issues without a log will be IGNORED.
Steps to create a log:
 - From command line, run: groovymame.exe -v romname >romname.txt
 - Attach resulting romname.txt file to your post, instead of pasting it.

CRT Emudriver, VMMaker & Arcade OSD downloads, documentation and discussion:  Eiusdemmodi

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7448
  • Last login:Yesterday at 06:34:55 am
  • Quote me with care
Previous versions
« Reply #1 on: August 06, 2016, 11:12:20 am »
What's new in SwitchRes v0.015m

- (Windows 7+) Preliminar support for the new BGFX renderer (currently only DirectX 11). Mode setting is implemented. Dynamic resolution switching may be buggy yet. Frame delay not implemented yet.

- (Linux) New implementation of the SDL 2.0.4+ input fix (Doozer).

- (AMD ADL) Fix for refresh value being shown incorrectly on internal UI. (Reported by haynor666).


What's new in SwitchRes v0.015l-final (cumulative fix)

- Added support for AMD HD 5000/6000/7000 series. You'll need CRT Emudriver 2.0 for Windows 7/8/10.

- ATI legacy cards (HD 2000/3000/4000): fixed halved refresh of interlaced modes on vsync with Direct3D (only if sync polarity is set to positive, details below).

- Removed frogger/galaxian patch. As suggested by haynor666.

- (fix 1-2) Correcty assign sync polarity to ATI legacy cards. This reverts initial 0.015l attempt to fix issue related to halved refresh of interlaced modes with Direct3D on Windows 7+. Now, manually forcing positive vertical sync polarity (+vsync) will effectively bypass the problem, although because most arcade monitors and TVs require negative sync polarity, this method won't work in most cases (out of sync video). However, if you use a device that properly handles the sync signals between the video card and the monitor, such as the UMSA, this method will work great.

- (fix 3) Solves crash affecting AMD HD 5000+ cards.

- (fix 4-5) (Linux) Fixes input for SDL 2.0.4 (Doozer). Caused by MAME window not receiving input focus in the absence of a window manager.

- (fix 5) (Windows) Fixes Powerstrip support.

- (fix 6) (Linux) Fixes bug with SDL build where GroovyMAME would freeze at the combination of -nomodeline_generation and -monitor lcd (reported by RobertJ)

- (fix 6) (Windows) Properly tell apart system modes.

- (fix 6-7) (Windows, AMD 5000+) Fixes crash caused by GroovyMAME attempting to switch the interlace feature of a given modeline in the same session, when using Direct3D 9ex (reported by intealls).

- (fix 7) (Windows, AMD 5000+) Correctly assing sync polarity to AMD HD 5000+ cards. Because AMD documentation is wrong, GroovyMAME/VMMaker where assigning the polarities the wrong way. This must be the direct cause of most out-of-sync issues reported till now. What happened is that GM assigned positive sync instead of negative, and vice versa. This is fixed now, but you'll need to update your crt_range definitions, both in VMMaker and GroovyMAME. By default, negative sync (0) is what should be used in most cases. Thanks to intealls for doing proper checks with an oscilloscope and R-Typer for double-checking.

- (fix 7) Use 6 decimal figures for refresh values (Doozer).

- (fix 7) (Linux) Disable -syncrefresh when DRI can't be accessed (suggested by Doozer).

- (fix 7) (Windows) Properly report the refresh when using Powerstrip with a -ps_timing string (reported by sean_skroht).

- (fix 7) (Windows) Fixes bug preventing -nomodeline_generation from working (reported by Cisek).

- (fix 7) (Windows) Fixes issue with Attract-Mode front-end loosing focus on GroovyMAME exit (intealls).


What's new in SwitchRes v0.015k

- Improved audio/video synchronization [intealls]: now the audio update code is called per frame, right after the video update, instead of being scheduled based on an alien timer. This is important for time-critical audio implementations such as ASIO.

What's new in SwitchRes v0.015j

- Direct3D9ex support [koopah, intealls] (new option: -video d3d9ex): now GroovyMAME supports Direct3D9ex, which is present in all versions of Windows starting with Vista. This allows the application to take control of the frame latency and force it to the minimum allowed by the driver, avoiding the dreaded frame queues. This is specially useful in the situations where frame_delay can't be used reliably without tearing (LCDs, high resolutions). Besides, Direct3D9ex seems to perform better for certain hardware (Nvidia, Intel), so it may be preferred to plain Direct3D9 in general.

- Frame delay (improved) [intealls, Calamity]: now frame_delay polls the video driver for absolute scanline values, totally bypassing the default vertical synchronization functions. Some of the advantages are:
  • Improved stability of the vertical synchronization mechanism, that finally makes it possible to extend GroovyMAME's audio/video synchronization to the frame delay use case.
  • Awareness of the raster position and notification of missed retraces.
  • Allows for anticipating the vertical retrace accurately (see vsync_offset, below).

- Vsync offset [intealls] (new option: -vsync_offset): forces render to happen a certain number of lines before the vertical blank (e.g. -vsync_offset 200). At high resolutions (LCD, etc.), the time it takes the GPU to scale a frame starts being longer than the blanking period itself. This is specially true when HLSL is used. This appears as static tearing when frame_delay is used. To compensate this issue, vsync_offset 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, even on LCDs with frame_delay and HLSL enabled. In practice, you need a fairly fast 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 -vsync_offset. Notice that you'll need to lower your frame_delay value proportionally to the amount of lines you set in -vsync_offset.

What's new in SwitchRes v0.015i

- Fixed broken mouse/trackball in SDL (VeS).
- Disabled prescale settings for vector games in SDL (now Windows and SDL builds behave the same).
- Fixed logging of option settings in SDL.

What's new in SwitchRes v0.015h

- Forced prescale value to 1 when using HLSL and GLSL filters. Avoids warnings and problems.

What's new in SwitchRes v0.015g

- Added support for video mode switching with the OpenGL renderer in Windows (-video opengl). Notice that in order to get any vertical synchronization through the OpenGL renderer, the WGL_EXT_swap_control extension must be present in the system, otherwise the emulation will run unthrottled. This seems to be totally driver dependent. Not a real alternative to Direct3D at the moment.

What's new in SwitchRes v0.015f

- Fixed bug in modeline scoring system that caused incorrect mode selection when running 60.606 Hz games (e.g. frogger) at their native orientation using certain monitor presets.

What's new in SwitchRes v0.015e

- Starting from this version hiscore.dat must be placed in the same folder where mame.exe is, instead of inside the .\hi directory as before. This is to avoid confussion to new users. Please make sure to move hiscore.dat to the right place if you're upgrading from previous versions.

- Now GroovyMAME code relies on a simplified osd-independent version of MKChamp's hiscore patch. It's purpose is to make it easier to update both patches on the new update schedule, by keeping their entanglement as shallow as possible.

What's new in SwitchRes v0.015d

- Frame_update method slighty reorganized to improve -frame_delay efficiency. Should fix previous issues with analog controls.

What's new in SwitchRes v0.015c

- Support for rotated desktops (Windows & Linux).
    - E.g. if you have your desktop rotated 90º, launch GroovyMAME like this: groovymame.exe 1942 -monitor vertical -aspect 3:4
      ("Magic" resolutions won't work with rotated desktops. If you're still using them we encourage you to move to "super" resolutions).

- Finally proper support for "super" resolutions (Windows & Linux):
    - Fix for modeline scoring to properly select the best available "super" resolution.
    - Fix for blank UI due to wrong scaling when in rotated mode and using "super" resolutions.
    - Fix for vector games that didn't show when using "super" resolutions.

- Moved our official build to SDL2 (Linux):
    - Fix for SDL2 broken waitvsync feature, now we perform vsync through DRM.
    - Fix for SDL2 broken mode switching feature while in fullscreen.
    - Added support for asynchronous rendering (equivalent to -triplebuffer in Windows).

- Full logs back in working order.

What's new in SwitchRes v0.015b

- New fix for Windows 7 progressive/interlaced mode switching with DirectDraw, now also works with ArcadeVGA 3000 (thanks to Sledge & sean_skroht).
- Fix in the modeline scoring system so that it properly accounts for the refresh rate when -nomodeline_generation is used (reported by Haggar).

What's new in SwitchRes v0.015a

- Change that makes the built in UI useful for selecting games with a joystick. Now all games in the directory are listed in alphabetical order (patch by cools).
- Fix for mouse devices that stopped working properly since a previous change (reported by Endprodukt & sean_skroht).
- Fix for SDL Linux to allow dynamic refresh switching even when resolution doesn't change, required for variable refresh capable LCDs (patch by eldiau)
- Now the -prescale settings are not applied with HLSL on, this fixes previous video issues (suggested by lettuce).
- Now when using interlaced modes in Windows 7 -video ddraw is automatically selected, in order to avoid the refresh rate being halved.

What's new in SwitchRes v0.015

- Automatic modeline generation now can be enabled/disabled (new option -modeline_generation): now GroovyMAME can pick your installed modelines as use them as read-only (-modeline_generation 0), or update them dynamically with its automatic modeline generation engine (-modeline_generation 1). In all cases, modelines are evaluated to check their frequencies against your defined monitor working ranges. This option is meant for users who have customized their modelines by using external software like Arcade_OSD, and want GroovyMAME to pick their modelines and only their modelines.

- User defined modelines (new option -modeline): now you can pass a raw modeline to GroovyMAME and it will use it! This makes full control of video timings possible for advanced users. Just add a line like this in your game or driver .ini file:

Code: [Select]
modeline "320x240_60 15.91KHz 60.05Hz" 6.62 320 344 376 416 240 244 247 265 -hsync -vsync
The only requirement is to have a modeline already available in the system with the same active width and height. Note that magic resolutions also work here, so it's enough to have a magic resolution with the proper height available. Warning: user defined modelines frequencies are NOT checked. Use it at your own risk. This option is provided to allow full freedom for advanced users. Your monitor settings will be overridden and a custom monitor range will be created on the fly to accommodate your modeline. As suggested by rCadeGaming.

- Cleanstretch feature (improved): now the -cleanstretch option admits these values:
  * 0 (in mame.ini) = auto, this value allows GroovyMAME to decide whether to use integer scaling.
  * 0 (in specific .ini or command line) = force fractional scaling.
  * 1 = force integer scaling in both axis.
  * 2 = fractional scaling for x-axis, integer scaling for y-axis. This option is manual only (can't be selected automatically). As suggested by Cools.

- Resolution masks (new): now you can specify resolution wild cards like this: -resolution 640x0 or -resolution 0x480, where '0' is a wild card value. As suggested by Dr.Venom.

- Changeres (improved): now dynamic resolution switching inside games only happens if the resulting modeline actually changes. Scaling options, on the other hand, are dynamically updated. This feature, in combination with resolution masks, makes possible to use "super-resolutions" to achieve seamless resolution switching for systems that change the active width frecuently, like the Megadrive. As suggested by Dr.Venom.

- Frame_delay (improved): reduced input latency thanks to improved -frame_delay option, check this thread for more information: http://forum.arcadecontrols.com/index.php/topic,133194.0.html

- Audio latency now admits fractional values (e.g.: -audio_latency 1.5): this makes it possible to find the optimal system specific glitch-safe audio latency value with finer granularity. As suggested by Dr.Venom.

- Black frame insertion (new option -black_frame_insertion): enables black frame insertion, to eliminate eye-tracking motion blur for both CRT and LCD monitors (more information: http://www.blurbusters.com/). It requires a 120 Hz capable display. You need to define either a 120 Hz monitor preset in mame.ini or use a 120 Hz desktop resolution. Then set "black_frame_insertion 1" in mame.ini, this will allow GroovyMAME to enable black frame insertion when required.

- Multi-monitor support: SwitchRes can only target one single monitor at a time, defined by index #0 of the per-window options (screen/aspect/resolution/view). But now, you can have two or more full screen displays at once: SwitchRes will operate on screen #0, and the other screens will be handled by default MAME video functions.

Code: [Select]
groovymame.exe orunners -numscreens 2
- LCD marquee support: as a consequence of multi-monitor support, now you can use GroovyMAME with an LCD secondary monitor for marquees. You have to set "use_marquees 1" in mame.ini, use a layout that contains marquee artwork, and these options:

Code: [Select]
groovymame.exe 1942 -numscreens 2 -view1 marquee
- Video timings now saved in .cfg: now GroovyMAME saves the modeline used in the game's specific .cfg file. This feature, combined with GroovyMAME now accepting modelines from .ini files, will allow future third party applications to interface with GroovyMAME's video timing configuration.

- New monitor presets:
  * pc_31_120: a preset for 120Hz capable PC CRT monitors, at 31kHz (VGA). Designed for hardware scanlines by frequency doubling. Black frame insertion recommended.
  * pc_70_120: same as pc_31_120, but for monitors capable of up to 70kH (SXGA).
  * r666b: Rodotron 666B-29 (by rock145).

- General re-adjustment of existing monitor presets (specifically line boundaries between 24 and 31 kHz ranges).

- New option -ps_timing. By using this option you can pass GroovyMAME a Powerstrip timing string, which GroovyMAME will pass to Powerstrip unmodified. This is meant to use modes that have been manually pre-adjusted with Powerstrip. One possible use of this feature is to allow ArcadeVGA 3000 users customize each mode, even have many instances of them with different refresh rates.

To get a timing string, select the mode in Powerstrip, and in "Advance Timing Options", click the copy to clipboard button, on the bottom right part of the window. This will copy this information to the clipboard:

Code: [Select]
PowerStrip timing parameters:
1366x768=1366,36,48,42,768,3,5,6,69840,518

Generic timing details for 1366x768:
HFP=36 HSW=48 HBP=42 kHz=47 VFP=3 VSW=5 VBP=6 Hz=60

VESA detailed timing:
PClk=69,84 H.Active=1366 H.Blank=126 H.Offset=20 HSW=48 V.Active=768 V.Blank=14 V.Offset=3 VSW=5

Linux modeline parameters:
"1366x768" 69,840 1366 1402 1450 1492 768 771 776 782 -hsync -vsync

The line we're interested in is the first one. Just grab the row of numbers after the "=", and use it to fill in the ps_timing option in mame.ini, like this:

Code: [Select]
powerstrip 1
ps_timing 1366,36,48,42,768,3,5,6,69840,518


What's new in SwitchRes v0.014b

- First version with native Windows 7 support, getting things ready for the advent of CRT Emudriver for Windows 7.
- Workaround for progressive/interlaced mode switching in Windows 7 and DirectDraw.
- Changed DirectDraw to use flipping surfaces with -waitvsync too, to allow bilinear filtering in Windows 7. Also fixes the problem of -waitvsync resulting in double speed in Windows 7. However, it may cause tearing on LCD displays when using DirectDraw, so make sure to use Direct3D with LCD monitors.
- Fixed crash on exit for 32-bit builds on Windows 7.

What's new in SwitchRes v0.014a

- Fixed bug that made some games appear mirrored or upside-down.
- Fixed incorrect monitor presets: ms2930, k7000
- Added two new settings for the -orientation option: rotate_r, rotate_l. Use either one of those in case you have a vertically mounted monitor so to specify its correct rotation direction.
- Improved filtering of system resolutions to avoid triplicated enumeration in some systems.
- Now the GroovyMAME version is prompted after the main version so we no longer create conflicts with frontends which grab the version of MAME from the credits text.

What's new in SwitchRes v0.014

- Fully rewritten modeline engine. Redesigned algorithm for resolution picking, now each resolution reported by the system is evaluated individually according to your monitor specs.

- Full PowerStrip integration, so at least in theory many more cards are now supported (i.e NVidia).

- Support for VESA generalized timing formula (GTF), this is to provide quick support for multisync PC CRT monitors (not for the ancient fixed-frequency ones!). Use the monitor presets labeled as "vesa".

- New monitor presets added. Check the most suitable for you:

Code: [Select]
custom Define your own custom by means of -crt_range lines
pal PAL TV - 50 Hz/625
ntsc NTSC TV - 60 Hz/525
generic_15 Generic 15.7 kHz
arcade_15 Arcade 15.7 kHz - standard resolution
arcade_15ex Arcade 15.7-16.5 kHz - extended resolution
arcade_25 Arcade 25.0 kHz - medium resolution
arcade_31 Arcade 31.5 kHz - high resolution
arcade_15_25 Arcade 15.7/25.0 kHz - dual-sync
arcade_15_25_31 Arcade 15.7/25.0/31.5 kHz - tri-sync
m2929 Makvision 2929D
d9200 Wells Gardner D9200
d9400 Wells Gardner D9400
d9800 Wells Gardner D9800
k7000 Wells Gardner K7000
k7131 Wells Gardner 25K7131
m3129 Wei-Ya M3129
h9110 Hantarex MTC 9110
polo Hantarex Polo
pstar Hantarex Polostar 25
ms2930 Nanao MS-2930, MS-2931
ms929 Nanao MS9-29
vesa_480 VESA GTF
vesa_600 VESA GTF
vesa_768 VESA GTF
vesa_1024 VESA GTF

Note: labels are no longer case sensitive

- New format for defining custom monitor specs, now the -crt_range0-9 options are used. This is the most important change in this version from the user's point of view, as the existing custom definitions will need to be modified. Not big deal however, but make sure you understand how this works as it will guarantee your success with GroovyMAME. The usual timing values remain the same, but the line limiters are replaced by four values: ProgressiveLinesMin, ProgressiveLinesMax, InterlacedLinesMin, InterlacedLinesMax. These are used to easily define the upper and lower limits of the total logical resolutions GroovyMAME should allow, both for the progressive and the interlaced range. You may leave either one of the two ranges set as zero in case you do not want progressive or interlaced modes to be generated. So the current format is as follows:

Code: [Select]
-crt_range 0-9 HfreqMin-HfreqMax, VfreqMin-VfreqMax, HFrontPorch, HSyncPulse, HBackPorch, VfrontPorch, VSyncPulse, VBackPorch, HSyncPol, VSyncPol, ProgressiveLinesMin, ProgressiveLinesMax, InterlacedLinesMin, InterlacedLinesMax
- Automatic LCD timings generation. This is useful in combination with PowerStrip. Your current timings will be read from PowerStrip and used to recalculate modelines from them. You just need to define the range for the vertical refresh your monitor supports:

Code: [Select]
-lcd_range VfreqMin-VfreqMax
- Improved rotation detection, now you can rotate the screen from the internal UI and the video mode will be recalculated properly.

- New priority system for option setting. GroovyMAME will set most of its required options automatically (-syncrefresh, -triplebuffer, -resolution, etc.), overriding the values in mame.ini. However, any other ini you create (rom, driver, orientation, etc.), as well as command line settings, will have higher priority than GroovyMAME's option setting, so you can always force something different if you feel GroovyMAME is not doing things right.

- Resolution forcing. As opposite to previous versions, now you can force the resolution that GroovyMAME picks. GroovyMAME will do its best to acommodate the game's resolution into the one you suggest.

- SwithRes video mode is shown in the Game Information screen. You're gonna love this.

- Automatic syncrefresh/triplebuffer selection. If you leave both options disabled in mame.ini, GroovyMAME will decide which one to use automatically. If the target refresh is achieved, GroovyMAME will select -syncrefresh. On the other hand, if we cannot achieve the desired refresh, due to monitor limitations, triplebuffer is used instead, so that speed is kept at 100% rennouncing to smooth scrolling. You can control how off the obtained refresh must be in order to trigger triplebuffering, by means of the new option -sync_refresh_tolerance. The default value is 2 Hz.

- Frequency scaling. Now GroovyMAME can use a multiple of the target vertical refresh if allowed by the monitor. This can be used in combination with PC CRT monitors which allow frequencies of 120 Hz, in order to achieve low resolution modes with true hardware scanlines. You need to create a custom crt_range for this. By now, -triplebuffer is used automatically for this mode. However, in order to achieve perfect scrolling you will need to use -syncrefresh in combination with -frame_delay 5, provided your system can deal with it.

- Interlace/doublescan modes can now be effectively disabled by means of their respective options. Be aware that SwitchRes does not support doublescan modes in Windows.

- Positive/negative sync polarity support under Windows.

- New option -lock_system_modes for mode filtering. In order to limit the possibility of selecting a potentially dangerous mode, the new option -lock_system_modes will prevent any mode not created by us from being picked. This will enforce GroovyMAME to use custom modes previously generated by CRT_EmuDriver. For non-ATI cards this option will block all modes actually since none of them is recognized as custom. This is the case of NVidia cards in combination with PowerStrip, or the ArcadeVGA 3000, where its custom modes are actually reported by the system as standard modes. So for these cases you should disable this option.

- New option -lock_unsupported_modes. You should only disable this option if you are possitive your system, based on your monitor's EDID, is filtering some modes that you actually created. Otherwise leave it enabled. This option only has effect in combination with -video ddraw.

- New option -refresh_dont_care. The new algorithm will filter resolutions that are out of your monitor specs. Old versions of the ArcadeVGA, as well as the Soft-15kHz program, label all resolutions as 60 Hz. This means that if this value were to be taken seriously, resolutions above 240 lines would be out of range for most arcade monitors. This option is provided in order to cope with this peculiarity, and it basically tells the algorithm to ignore refresh for range checking.

- New option -frame_delay. Delays the start of the emulation of each frame by an amount of time defined in tenths of the frame period length (0-9), in order to give a chance to the emulator to have the most possible updated input for that frame, as an attempt to minimize input lag. A value of 0 corresponds to standard behaviour. This option is experimental, and is known to produce tearing in LCD screens.
« Last Edit: January 25, 2017, 08:23:21 am by Calamity »
Important note: posts reporting GM issues without a log will be IGNORED.
Steps to create a log:
 - From command line, run: groovymame.exe -v romname >romname.txt
 - Attach resulting romname.txt file to your post, instead of pasting it.

CRT Emudriver, VMMaker & Arcade OSD downloads, documentation and discussion:  Eiusdemmodi

lettuce

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1900
  • Last login:December 31, 2021, 01:46:10 pm
  • Make It So!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #2 on: August 06, 2016, 12:50:28 pm »
Its BACK!!!!, good news Calamity.

Is one version of windows regarded to be better than any other where CRT EMU is regarded, would using windows 10 give the exact same experience if using windows 7?

Say now that MameUIFX is dead is there any chance you could add a UI feature much like MameUIFX did??, also has there been any development on an alternative to ASIO for reduced audio lag?
« Last Edit: August 06, 2016, 12:55:46 pm by lettuce »

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1508
  • Last login:Today at 10:57:59 am
  • retro maniac
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #3 on: August 06, 2016, 02:34:46 pm »
Fantastic news Calamity, too bad "I have to" go for week of vacation with my family :D

EDIT. I have whole evening so I decided to test new version under XP x32. Problem is I cannot get constant speed. Mame speed meter now show for example with game Argus either 98 % or 104 %. Sound also changes pitch all the time. Not compatible with XP anymore ? :/
« Last Edit: October 15, 2016, 06:41:19 am by haynor666 »

keropi

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 161
  • Last login:December 28, 2022, 11:06:35 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #4 on: August 06, 2016, 05:36:35 pm »
excellent news!

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7448
  • Last login:Yesterday at 06:34:55 am
  • Quote me with care
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #5 on: August 06, 2016, 05:43:21 pm »
Problem is I cannot get constant speed. Mame speed meter now show for example with game Argus either 98 % or 104 %. Sound also changes pitch all the time. Not compatible with XP anymore ? :/

Please download the binary again. I've seen the same issue here. I've sort of fixed it. It's due to a change in baseline, timing is now based on the std::chrono library (C++ 11) which doesn't seem to work properly on XP. I've reverted that change on the new builds and it seems to work fine now.
Important note: posts reporting GM issues without a log will be IGNORED.
Steps to create a log:
 - From command line, run: groovymame.exe -v romname >romname.txt
 - Attach resulting romname.txt file to your post, instead of pasting it.

CRT Emudriver, VMMaker & Arcade OSD downloads, documentation and discussion:  Eiusdemmodi

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1508
  • Last login:Today at 10:57:59 am
  • retro maniac
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #6 on: August 06, 2016, 06:34:40 pm »
After short tests - constant speed and stable sound again, thanks :)

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1508
  • Last login:Today at 10:57:59 am
  • retro maniac
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #7 on: August 22, 2016, 02:13:37 pm »
Another problem under windows XP - games that uses resolution autoswitching crash - I get error in Direct3D. I'm pretty sure I've seen some posts about this previously but I cannot find those right now.

keropi

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 161
  • Last login:December 28, 2022, 11:06:35 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #8 on: August 22, 2016, 05:52:26 pm »
I upgraded from GM 0.171 and I noticed that at least 496i games now don't fill the whole screen:

GM 0.171 :



GM 0.176 :




I have no idea how to fix that, maybe it's related to the new mame BGFX renfering (forcing d3d does not help) or maybe there is a new option I don't know or it's because GM 0.176 is in alpha stage?   :)
These are obviously vertical games running in interlaced mode in a horizontal monitor, so hopefully it's just a bug.


I also noticed that F10 (speed throttle) does nothing for my setup (typical G3258 with ati6450) and that the Gauntlet Dark Legacy and Legends games behave at full speed - like F10 is pressed.
Anyone noticed these things as well?

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1508
  • Last login:Today at 10:57:59 am
  • retro maniac
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #9 on: August 22, 2016, 05:58:57 pm »
Probably due unevenstretch set to 0 and new options integer stretch. Set unevenstretch to 1.

Sledge

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 495
  • Last login:September 25, 2022, 05:22:55 am
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #10 on: August 22, 2016, 06:08:25 pm »
So.. is there any real need to upgrade to the new version yet?
Or wait a few versions until bugs are ironed out?

Doozer

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 498
  • Last login:June 12, 2023, 09:19:49 am
  • Z80 ERROR
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #11 on: August 23, 2016, 02:13:58 am »
Another problem under windows XP - games that uses resolution autoswitching crash - I get error in Direct3D. I'm pretty sure I've seen some posts about this previously but I cannot find those right now.

I have posted about the same issue under Linux. I was still using SDL and not BGFX video backend.

Doozer

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 498
  • Last login:June 12, 2023, 09:19:49 am
  • Z80 ERROR
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #12 on: August 23, 2016, 02:16:25 am »
So.. is there any real need to upgrade to the new version yet?
Or wait a few versions until bugs are ironed out?

Because the version 0.176 is alpha. I would recommend to stay with version 0.171 until at least a beta is released or another upcoming groovy patch is made available by Calamity.

keropi

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 161
  • Last login:December 28, 2022, 11:06:35 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #13 on: August 23, 2016, 04:00:19 am »
Probably due unevenstretch set to 0 and new options integer stretch. Set unevenstretch to 1.

Unfortunately that did not help, I also tried messing with the keepaspectratio/unevenstretchx options but made no difference...
About the crash in resolution change in games, what game does that so I can test if it happens to 7/x64 as well?

Doozer

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 498
  • Last login:June 12, 2023, 09:19:49 am
  • Z80 ERROR
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #14 on: August 23, 2016, 05:37:28 am »
Probably due unevenstretch set to 0 and new options integer stretch. Set unevenstretch to 1.

Unfortunately that did not help, I also tried messing with the keepaspectratio/unevenstretchx options but made no difference...
About the crash in resolution change in games, what game does that so I can test if it happens to 7/x64 as well?

This picture behaviour was indeed an issue with the first release of the patch. It has been updated in the meantime but I don't know if Calamity has rebuild the binaries. If you have a build environment in place, you can compile mame against the latest patch available on the google drive.

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1508
  • Last login:Today at 10:57:59 am
  • retro maniac
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #15 on: August 23, 2016, 08:16:05 am »
About the crash in resolution change in games, what game does that so I can test if it happens to 7/x64 as well?

Violent Storm, Escape Kids, any game in drivers: qix,zn,stv,sega32

RobeeJ

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 124
  • Last login:Today at 03:41:06 am
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #16 on: August 23, 2016, 08:23:40 am »
I had to recreate my config file (and make the usual changes to it), and sort out the new hiscore plugin, but other than that, I've had no issues so far with GroovyMAME.

Thanks Calamity!

(Built from source on Arch Linux last weekend)

Doozer

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 498
  • Last login:June 12, 2023, 09:19:49 am
  • Z80 ERROR
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #17 on: August 23, 2016, 09:27:09 am »
I had to recreate my config file (and make the usual changes to it), and sort out the new hiscore plugin, but other than that, I've had no issues so far with GroovyMAME.

Thanks Calamity!

(Built from source on Arch Linux last weekend)

Please, can you test tekken2 rom? The game will normally crash after the colour bar initialisation screen due to a resolution switch.

tom5151

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 110
  • Last login:September 16, 2023, 09:21:11 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #18 on: August 23, 2016, 02:39:39 pm »
Thanks for this release  :applaud:

Just to be sure, we need to replace these parameters with plugins ?
hiscore_directory         hi
disable_hiscore_patch     1
disable_nagscreen_patch   0
disable_loading_patch     0

And what about this parameter ? Is it still relevant ?
multithreading            0

@Doozer FYI, indeed it crashes with tekken 2 :(

@keropi: could you give the name of this game

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1508
  • Last login:Today at 10:57:59 am
  • retro maniac
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #19 on: August 24, 2016, 03:48:26 am »
Actually groovymame it's not crashing but switching resolution during game causing error in Direct3D and switching from full screen to window mode. Strangly groovymame mame window is minimalized.

The same problems are with multimonitors games and switching between views.

keropi

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 161
  • Last login:December 28, 2022, 11:06:35 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #20 on: August 24, 2016, 05:27:09 am »
@Doozer
ah, so you say that this is a base mame problem... I would love to be able to compile GM myself (now that Calamity said he won't put any extra patches in it like the no-nag one) but I don't know what environment I need to install on my windows machines. I have a functional environment to grab SVN sources and build the XT-IDE BIOS but there was a tutorial on how to do that. If there is something similar for MAME please do tell as I am very interested in doing that :)

@haynor666
just tried Violent Storm and Virtua Fighter Kids, both work fine (win7/x64, 6450 gpu)

@tom5151
the game is called "DoDonPachi Dai-Fukkatsu Ver 1.5" , a glorious shooter


edit: is this a good guide to follow on how to compile mame? http://forum.attractmode.org/index.php?topic=348.0
« Last Edit: August 24, 2016, 05:43:58 am by keropi »

Doozer

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 498
  • Last login:June 12, 2023, 09:19:49 am
  • Z80 ERROR
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #21 on: August 24, 2016, 05:55:09 am »
@keropi

It is not a stock mame issue, but something that must be fixed inside groovymame. The patch is only at alpha stage. Even Calamity considers that a lot of work is needed to get it ready, especially with the new bgfx rendering method to be worked out. RC version might only come with later mame releases.

It is possible to have mkchamp patch installed (for hiscore) and groovy patch together. First install mkchamp hi.diff and then apply the groovy patch. There is only one manual fix to perform due to the exact same insert location for both of them. Not a big deal.

Under windows, I know that the compilation is done via MingGW with complete explanations given here https://github.com/mamedev/buildtools
It explains how to get a mame development environment under Windows.

keropi

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 161
  • Last login:December 28, 2022, 11:06:35 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #22 on: August 24, 2016, 06:24:34 am »
^ thanks for that
I started compiling with the info on the link I posted above, first applied MK's patch and then the GM one - did not make any other manual fix though since I had no idea... it's been ~10mins now and the program still compiles - using my office pc (Q9300/8GB ram) - any estimate how long the process takes?

So I suspect it will fail at some point because I did not make that fix, right?

edit:

yep it failed  ;D

Quote
Compiling src/devices/cpu/mcs96/i8xc196.cpp...
Compiling src/devices/cpu/mcs96/mcs96.cpp...
Archiving liboptional.a...
makefile:959: recipe for target 'windows_x64' failed
make: *** [windows_x64] Error 2
« Last Edit: August 24, 2016, 07:14:14 am by keropi »

Doozer

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 498
  • Last login:June 12, 2023, 09:19:49 am
  • Z80 ERROR
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #23 on: August 24, 2016, 07:58:46 am »
Check the following file ./src/emu/emuopts.cpp , the goovy section to add is the following (must be applied manually):

Code: [Select]
--- src/emu/emuopts.cpp 2016-07-27 10:58:06.000000000 +0200
+++ src/emu/emuopts.cpp 2016-08-06 19:23:59.000000000 +0200
@@ -201,6 +203,39 @@
        { OPTION_PLUGIN,                                    nullptr,     OPTION_STRING,     "list of plugins to enable" },
        { OPTION_NO_PLUGIN,                                  nullptr,     OPTION_STRING,     "list of plugins to disable" },
        { OPTION_LANGUAGE ";lang",                           "English",   OPTION_STRING,    "display language" },
+
+       // Switchres options
+       { nullptr,                                              nullptr,        OPTION_HEADER,     "CORE SWITCHRES OPTIONS" },
+       { OPTION_MODELINE_GENERATION ";ml",                  "1",         OPTION_BOOLEAN,    "Automatic generation of modelines based on the specified monitor type" },
+       { OPTION_MONITOR ";m",                               "generic_15",OPTION_STRING,     "Monitor type, e.g.: generic_15, arcade_15, lcd, custom, etc." },
+       { OPTION_ORIENTATION ";or",                          "horizontal",OPTION_STRING,     "Monitor orientation (horizontal|vertical|rotate|rotate_r|rotate_l)" },
+       { OPTION_CONNECTOR ";cn",                            "auto",      OPTION_STRING,     "[Linux] video card output (VGA-0|VGA-1|DVI-0|DVI-1)" },
+       { OPTION_INTERLACE ";in",                            "1",         OPTION_BOOLEAN,    "Enable interlaced scanning when necessary" },
+       { OPTION_DOUBLESCAN ";ds",                           "1",         OPTION_BOOLEAN,    "Enable double scanning when necessary (unsupported under Windows)" },
+       { OPTION_SUPER_WIDTH ";cs",                          "2560",      OPTION_INTEGER,    "Automatically apply -unevenstretchx if resolution width is equal or greater than this value" },
+       { OPTION_CHANGERES ";cr",                            "1",         OPTION_BOOLEAN,    "Enable dynamic in-game video mode switching" },
+       { OPTION_POWERSTRIP ";ps",                           "0",         OPTION_BOOLEAN,    "Use Powerstrip API for dynamic setting of custom video timings" },
+       { OPTION_LOCK_SYSTEM_MODES ";lsm",                   "1",         OPTION_BOOLEAN,    "Lock system (non-custom) video modes, only use modes created by us" },
+       { OPTION_LOCK_UNSUPPORTED_MODES ";lum",              "1",         OPTION_BOOLEAN,    "Lock video modes reported as unsupported by your monitor's EDID" },
+       { OPTION_REFRESH_DONT_CARE ";rdc",                   "0",         OPTION_BOOLEAN,    "Ignore video mode's refresh reported by OS when checking ranges" },
+       { OPTION_DOTCLOCK_MIN ";dcm",                        "0",         OPTION_STRING,     "Lowest pixel clock supported by video card, in MHz, default is 0" },
+       { OPTION_SYNC_REFRESH_TOLERANCE ";srt",              "2.0",       OPTION_STRING,     "Maximum refresh difference, in Hz, allowed in order to synchronize" },
+       { OPTION_FRAME_DELAY ";fd",                          "0",         OPTION_INTEGER,    "Delays the start of each frame to minimize input lag (0-9)"},
+       { OPTION_VSYNC_OFFSET,                               "0",         OPTION_INTEGER,        "Offset vsync position by this many lines to prevent tearing with frame_delay and high-resolution displays" },
+       { OPTION_BLACK_FRAME_INSERTION ";bfi",               "0",         OPTION_BOOLEAN,    "Inserts a black frame after each normal frame, intended to reduce motion blur on 120 Hz monitors" },
+       { OPTION_MODELINE ";mode",                           "auto",      OPTION_STRING,     "Use custom defined modeline" },
+       { OPTION_PS_TIMING ";pst",                           "auto",      OPTION_STRING,     "Use custom Powertrip timing string" },
+       { OPTION_LCD_RANGE ";lcd",                           "auto",      OPTION_STRING,     "Add custom LCD range, VfreqMin-VfreqMax, in Hz, e.g.: 55.50-61.00" },
+       { OPTION_CRT_RANGE0 ";crt0",                         "auto",      OPTION_STRING,     "Add custom CRT range, see documentation for details." },
+       { OPTION_CRT_RANGE1 ";crt1",                         "auto",      OPTION_STRING,     "Add custom CRT range" },
+       { OPTION_CRT_RANGE2 ";crt2",                         "auto",      OPTION_STRING,     "Add custom CRT range" },
+       { OPTION_CRT_RANGE3 ";crt3",                         "auto",      OPTION_STRING,     "Add custom CRT range" },
+       { OPTION_CRT_RANGE4 ";crt4",                         "auto",      OPTION_STRING,     "Add custom CRT range" },
+       { OPTION_CRT_RANGE5 ";crt5",                         "auto",      OPTION_STRING,     "Add custom CRT range" },
+       { OPTION_CRT_RANGE6 ";crt6",                         "auto",      OPTION_STRING,     "Add custom CRT range" },
+       { OPTION_CRT_RANGE7 ";crt7",                         "auto",      OPTION_STRING,     "Add custom CRT range" },
+       { OPTION_CRT_RANGE8 ";crt8",                         "auto",      OPTION_STRING,     "Add custom CRT range" },
+       { OPTION_CRT_RANGE9 ";crt9",                         "auto",      OPTION_STRING,     "Add custom CRT range" },
        { nullptr }
 };

keropi

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 161
  • Last login:December 28, 2022, 11:06:35 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #24 on: August 24, 2016, 11:42:11 am »
@Doozer

That's a .diff file you posted right?

So I apply:
a. hi-score/no-nag .diff
b. GM .diff
c. the .diff you posted

correct? Sorry if this seems a simple question but I don't have experience in this  :)

RobeeJ

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 124
  • Last login:Today at 03:41:06 am
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #25 on: August 24, 2016, 04:45:45 pm »
Please, can you test tekken2 rom? The game will normally crash after the colour bar initialisation screen due to a resolution switch.

Tekken 2 works for me, I am using an LCD monitor though. No idea if that helps you or not.

planexcvs

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 55
  • Last login:December 20, 2019, 11:47:57 pm
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #26 on: August 24, 2016, 10:08:16 pm »
Tekken 2 worked for me also, but granted I also tested on a LCD and not on any of my arcade machines yet.

I'm guessing that's the only significant game that's not working right?

I also noticed when applying the patches, I couldn't apply the groovymame diff to the mame source in binary. It always tripped up, so I ended up removing the --binary flag. Seems to have turned out ok.

There was a similar issue with the MKChamp hiscore diff, but I opted to modify the patch to just add no-nag since I want to try out MAME's official hiscore feature.

planexcvs

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 55
  • Last login:December 20, 2019, 11:47:57 pm
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #27 on: August 24, 2016, 10:09:46 pm »
Tekken 2 worked for me also, but granted I also tested on a LCD and not on any of my arcade machines yet.

I'm guessing that's the only significant game that's not working right? Not bad for an alpha build.

I also noticed when applying the patches, I couldn't apply the groovymame diff to the mame source in binary. It always tripped up, so I ended up removing the --binary flag. Seems to have turned out ok.

There was a similar issue with the MKChamp hiscore diff, but I opted to modify the patch to just add no-nag since I want to try out MAME's official hiscore feature.

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1508
  • Last login:Today at 10:57:59 am
  • retro maniac
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #28 on: August 25, 2016, 01:52:58 am »
It will work for LCD because for LCD groovymame does not switch resolutions. It set one (usually the same as desktop) and keep it for whole session.

Problems appear only if You use modes like generic_15 or arcade_15 or any other custom modes. Also if You are using super resolutions then probably switching from 256x240 to 320x240 (in both cases 2560x240 will be used) for example in Genesis won't crash groovymame but switching from 512x240 (using 2560x240) to 512x480 (using 2560x480) will crash groovymame.
« Last Edit: August 25, 2016, 05:46:53 am by haynor666 »

keropi

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 161
  • Last login:December 28, 2022, 11:06:35 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #29 on: August 26, 2016, 02:59:36 am »
Check the following file ./src/emu/emuopts.cpp , the goovy section to add is the following (must be applied manually): [...]


tried to apply that as a .diff and it didn't work, certainly I am doing something wrong....

Quote
[MINGW64] C:\msys64\src>patch --binary -p0 -E <C:\msys64\extra.diff
patching file src/emu/emuopts.cpp
patch unexpectedly ends in middle of line
Hunk #1 FAILED at 201.
1 out of 1 hunk FAILED -- saving rejects to file src/emu/emuopts.cpp.rej

really interested in learning to do this myself, so any help will appreciated  :)

lacanian

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 96
  • Last login:June 06, 2021, 06:59:26 am
  • Go FightCade!
    • forum.arcadecontrols.com/index.php/topic,143714.0.html
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #30 on: August 26, 2016, 04:24:13 am »
@tom5151

I moved from v0.171 to v0.176 tonight. Some configuration options you seen in v0.171 are no longer in/needed in v0.176 mame.ini. For example the MKCHAMP options.

I made the following changes. I am not saying these are the correct changes or all the changes that need to be made. Let me know if I should look at anything else.

skip_gameinfo             1
cheat                     1
monitor                   arcade_15
frame_delay               1

Doozer

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 498
  • Last login:June 12, 2023, 09:19:49 am
  • Z80 ERROR
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #31 on: August 26, 2016, 04:38:47 am »

@keropi

Open the rej file with a text editor. You will see lines starting with '+' character. Those lines must be added to the source file (same name without the ref, here it's src/emu/emuopts.cpp). The lines starting with '-' must be removed from the source file, but none should be present in the current case ;-)

As you can see the lines must be inserted after the LANG option. The rejection is occuring due to mkchamp modifications introduced at the same place. So, just add the missing lines to the file and do not forget to remove the '+' at the beginning. The rest should be straight forward.

keropi

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 161
  • Last login:December 28, 2022, 11:06:35 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #32 on: August 26, 2016, 04:57:59 am »
^ thanks Doozer , I'll edit it manually and try again

btw is it normal to get some warning/rejections when applying the GM.diff after MKCHAMPS's.diff ?  I have a hunch these are the conflicting lines that we need to manually add?

Doozer

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 498
  • Last login:June 12, 2023, 09:19:49 am
  • Z80 ERROR
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #33 on: August 26, 2016, 08:33:35 am »
^ thanks Doozer , I'll edit it manually and try again

btw is it normal to get some warning/rejections when applying the GM.diff after MKCHAMPS's.diff ?  I have a hunch these are the conflicting lines that we need to manually add?

Yes, it is totally normal. The groovymame patch is not build over the hiscore patch anymore starting with GM 0.176. It means that Calamity will provide diffs against stock mame only.

tom5151

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 110
  • Last login:September 16, 2023, 09:21:11 am
  • I want to build my own arcade controls!
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #34 on: August 27, 2016, 02:40:27 am »
@tom5151

I moved from v0.171 to v0.176 tonight. Some configuration options you seen in v0.171 are no longer in/needed in v0.176 mame.ini. For example the MKCHAMP options.

I made the following changes. I am not saying these are the correct changes or all the changes that need to be made. Let me know if I should look at anything else.

skip_gameinfo             1
cheat                     1
monitor                   arcade_15
frame_delay               1

Thanks @lacanian, skip_gameinfo is working.
I was thinking it was removed because a mame -cc doesn't include it.

And what about hiscore and previous available options  ? I can see a hiscore folder in the plugins folder, but I don't find any documentation explaining how to use it.

#
# CORE MKChamp OPTIONS
#
disable_hiscore_patch     1
disable_nagscreen_patch   0
« Last Edit: August 27, 2016, 02:59:29 am by tom5151 »

lacanian

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 96
  • Last login:June 06, 2021, 06:59:26 am
  • Go FightCade!
    • forum.arcadecontrols.com/index.php/topic,143714.0.html
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #35 on: August 27, 2016, 03:08:53 am »
Good timing. For the last hour (includes playing games to achieve a high score) I have been trying to work out the hiscores! Here is what I know.

1. You need to download the latest hiscores.date file from http://highscore.mameworld.info/download.htm
Why? (from http://www.mameworld.info/highscore/latest.htm )
Code: [Select]
23.07.2016

Released new hiscore.dat using the new format that is supported in the official mame using the hiscore plugin. Please note as from now the older pre-July 2016 hiscore.dat files will not work with any mame files older than mame v0174 (25 may 2016).

Just adding hiscores.dat to the hi directory that didn't work for me. As you know in mame.ini for v0.176 there are no options for hiscore.

However if you load the MAME executable can go to Configure Options -> Configure Directories there are two directories that caught my eye.
1. DATs
2. Scores

I put hiscores.dat in both of them and made sure the path was correct and nothing. I have only tried one game and am about to test some more as I read not all games support hiscores hoever, the posts I read were discussing older versions of MAME.

Try what I did above and let me know how you go. We should be able to solve this one. I'm off to do a bit more searching.

lacanian

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 96
  • Last login:June 06, 2021, 06:59:26 am
  • Go FightCade!
    • forum.arcadecontrols.com/index.php/topic,143714.0.html
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #36 on: August 27, 2016, 03:18:29 am »
I just did a diff on the hiscore.dat in the plugins folder vs the hiscore.dat from mamewold.info and here is the aditional text in the mameworld.info dat file

Code: [Select]
;**** new additions using mame v176 below ****

ffantasyj:
@:maincpu,program,ffbe00,50,08,01

rdft2jb:
@:maincpu,program,285dc,1ab,01,2e

bubbletr:
@:maincpu,program,106970,278,01,01

bubbletrj:
@:maincpu,program,10698c,278,01,01

;beastf:******beastie feastie (fixed)
beastf:
@:maincpu,program,7010,f0,00,00
@:maincpu,program,798a,1,fc,fc

;**** mame v176 additions end ****



RobeeJ

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 124
  • Last login:Today at 03:41:06 am
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #37 on: August 27, 2016, 04:01:48 am »
My cabinet is off atm so I can't check the exact config changes you need, but from memory you need to do the following:

  • Put the latest hiscore.dat in your mame root folder
  • Turn on using plugins in the config file (mame -cc will generate a config with this line in it, can't remember it's exact name)
  • Add hiscore to the enabled plugins line in the config file (again can't remember, on my macbook which doesn't have mame on it)

That's it, if I remember rightly! No need to go into the mame menu. Most of your previous hi scores in your hi folder should be restored on game launch.

lacanian

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 96
  • Last login:June 06, 2021, 06:59:26 am
  • Go FightCade!
    • forum.arcadecontrols.com/index.php/topic,143714.0.html
Re: GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #38 on: August 27, 2016, 04:16:08 am »
MAME definitely changes every time I look at it. Now we have plugins and it appears the config for enabling them is the below.

-pluginspath         path to plugin files
-plugins             enable LUA plugin support
-plugin              list of plugins to enable
-noplugin            list of plugins to disable

Code: [Select]
plugins                   1
plugin                    hiscore                     
noplugin                 

Let me know if that does the trick.
« Last Edit: August 27, 2016, 04:22:57 am by lacanian »

lacanian

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 96
  • Last login:June 06, 2021, 06:59:26 am
  • Go FightCade!
    • forum.arcadecontrols.com/index.php/topic,143714.0.html
GroovyMAME 0.176 - Switchres v0.016 alpha 1
« Reply #39 on: August 27, 2016, 04:18:13 am »
My cabinet is off atm so I can't check the exact config changes you need, but from memory you need to do the following:

  • Put the latest hiscore.dat in your mame root folder
  • Turn on using plugins in the config file (mame -cc will generate a config with this line in it, can't remember it's exact name)
  • Add hiscore to the enabled plugins line in the config file (again can't remember, on my macbook which doesn't have mame on it)

That's it, if I remember rightly! No need to go into the mame menu. Most of your previous hi scores in your hi folder should be restored on game launch.

Thanks I wish I had seen this earlier. It looks like you don't need step 1 anymore as MAME is shipping with hiscore.dat in the plugins folder. I just did some testing and it worked fine without it in the root folder.
« Last Edit: August 27, 2016, 04:29:40 am by lacanian »