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: GM use on normal LCD: integer scaling w/ filtering ? How ? (+ moar ini help)  (Read 8566 times)

0 Members and 1 Guest are viewing this topic.

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Hello GroovyMAMErs !  8)

I am currently using GM on a pretty basic LCD monitor (small 22" tv actually) and I've heard GM has integer scaling options, which I really like so I've picked it.
(I know RA does that too and better, but RA pisses me off for various reasons and I don't like to use it)

After creating the mame.ini and fiddling with it I've managed to have GM output my games using integer scaling, however to my surprise the filter option doesn't seem to work anymore, the picture is finally looking super clean...but too sharp for my taste. ^^

- So my question; is there a way to bring back the filter (bilinear or something else) in my situation ?

- Also if you have suggestions for optimal settings in regards to speed and sync you're very welcome, I'm looking for correct game speed before everything, no tearing and with diminished lag impact then that'd be great too if possible ! ^^
(with my current settings I'm seeing for instance 104% speed in Cave gen1 games like ESP Ra. De., with a visible tiny tearing line in the middle)

I'm not looking for miracles but overall the best way to use GM on a standard LCD with my requirements. Thanks a lot in advance for your help !  ;)

Setup: Win 8.1 laptop / i3-4030U / GeForce 820M (optimus) + 1366x768 Sony 22" ips lcd tv in portrait orientation, HDMI connected.
GM: v0.169 bare (no frontend)
INI: below in its current state (sorry for messing stuff up maybe, I don't quite get all that stuff)
Code: [Select]
#
# CORE CONFIGURATION OPTIONS
#
readconfig                1
writeconfig               0

#
# CORE SEARCH PATH OPTIONS
#
rompath                   "C:\MAMEUIFX64 0.165\roms;E:\MAME ROMs v0.106"
hashpath                  hash
samplepath                samples
artpath                   artwork
ctrlrpath                 ctrlr
inipath                   .;ini
fontpath                  .
cheatpath                 cheat
crosshairpath             crosshair

#
# CORE OUTPUT DIRECTORY OPTIONS
#
cfg_directory             cfg
nvram_directory           nvram
input_directory           inp
state_directory           sta
snapshot_directory        snap
diff_directory            diff
comment_directory         comments

#
# CORE OUTPUT DIRECTORY OPTIONS
#
hiscore_directory         hi

#
# CORE STATE/PLAYBACK OPTIONS
#
state                     
autosave                  0
playback                 
record                   
mngwrite                 
aviwrite                 
wavwrite                 
snapname                  %g/%i
snapsize                  auto
snapview                  internal
snapbilinear              1
statename                 %g
burnin                    0

#
# CORE PERFORMANCE OPTIONS
#
autoframeskip             0
frameskip                 0
seconds_to_run            0
throttle                  1
syncrefresh               0
sleep                     1
speed                     1.0
refreshspeed              0

#
# CORE ROTATION OPTIONS
#
rotate                    1
ror                       0
rol                       0
autoror                   1
autorol                   0
flipx                     0
flipy                     0

#
# CORE ARTWORK OPTIONS
#
artwork_crop              1
use_backdrops             0
use_overlays              0
use_bezels                0
use_cpanels               0
use_marquees              0

#
# CORE SCREEN OPTIONS
#
brightness                1.0
contrast                  1.0
gamma                     1.0
pause_brightness          1.0
effect                    none

#
# CORE VECTOR OPTIONS
#
antialias                 1
beam_width_min            1.0
beam_width_max            1.0
beam_intensity_weight     0
flicker                   0

#
# CORE SOUND OPTIONS
#
samplerate                48000
samples                   1
volume                    0

#
# CORE INPUT OPTIONS
#
coin_lockout              1
ctrlr                     
mouse                     0
joystick                  1
lightgun                  0
multikeyboard             0
multimouse                0
steadykey                 0
ui_active                 0
offscreen_reload          0
joystick_map              auto
joystick_deadzone         0.3
joystick_saturation       0.85
natural                   0
joystick_contradictory    0
coin_impulse              0

#
# CORE INPUT AUTOMATIC ENABLE OPTIONS
#
paddle_device             keyboard
adstick_device            keyboard
pedal_device              keyboard
dial_device               keyboard
trackball_device          keyboard
lightgun_device           keyboard
positional_device         keyboard
mouse_device              mouse

#
# CORE DEBUGGING OPTIONS
#
verbose                   0
log                       0
oslog                     0
debug                     0
update_in_pause           0
debugscript               

#
# CORE COMM OPTIONS
#
comm_localhost            0.0.0.0
comm_localport            15112
comm_remotehost           127.0.0.1
comm_remoteport           15112

#
# CORE MISC OPTIONS
#
drc                       1
drc_use_c                 0
drc_log_uml               0
drc_log_native            0
bios                     
cheat                     0
skip_gameinfo             0
uifont                    default
ramsize                   
confirm_quit              0
ui_mouse                  0
autoboot_command         
autoboot_delay            2
autoboot_script           

#
# CORE MKChamp OPTIONS
#
disable_hiscore_patch     0
disable_nagscreen_patch   1
disable_loading_patch     1

#
# CORE SWITCHRES OPTIONS
#
modeline_generation       0
monitor                   lcd
orientation               vertical
connector                 auto
interlace                 0
doublescan                0
cleanstretch              1
filter                    1   ---> tried my luck adding that line, didn't work :p
changeres                 0
powerstrip                0
lock_system_modes         1
lock_unsupported_modes    1
refresh_dont_care         0
dotclock_min              0
sync_refresh_tolerance    2.0
frame_delay               0
vsync_offset              0
black_frame_insertion     0
modeline                  auto
ps_timing                 auto
lcd_range                 auto
crt_range0                auto
crt_range1                auto
crt_range2                auto
crt_range3                auto
crt_range4                auto
crt_range5                auto
crt_range6                auto
crt_range7                auto
crt_range8                auto
crt_range9                auto

#
# OSD KEYBOARD MAPPING OPTIONS
#
uimodekey                 SCRLOCK

#
# OSD FONT OPTIONS
#
uifontprovider            auto

#
# OSD DEBUGGING OPTIONS
#
debugger                  auto
debugger_font             auto
debugger_font_size        0
watchdog                  0

#
# OSD PERFORMANCE OPTIONS
#
multithreading            0
numprocessors             auto
bench                     0

#
# OSD VIDEO OPTIONS
#
video                     d3d
numscreens                1
window                    0
maximize                  1
keepaspect                1
unevenstretch             0
waitvsync                 0

#
# OSD PER-WINDOW VIDEO OPTIONS
#
screen                    auto
aspect                    auto
resolution                auto
view                      auto
screen0                   \\.\DISPLAY2
aspect0                   16:9
resolution0               1366x768@0
view0                     auto
screen1                   auto
aspect1                   auto
resolution1               auto
view1                     auto
screen2                   auto
aspect2                   auto
resolution2               auto
view2                     auto
screen3                   auto
aspect3                   auto
resolution3               auto
view3                     auto

#
# OSD FULL SCREEN OPTIONS
#
switchres                 1

#
# OSD ACCELERATED VIDEO OPTIONS
#
filter                    1
prescale                  1

#
# OpenGL-SPECIFIC OPTIONS
#
gl_forcepow2texture       0
gl_notexturerect          0
gl_vbo                    0
gl_pbo                    0
gl_glsl                   1
gl_glsl_filter            1
glsl_shader_mame0         none
glsl_shader_mame1         none
glsl_shader_mame2         none
glsl_shader_mame3         none
glsl_shader_mame4         none
glsl_shader_mame5         none
glsl_shader_mame6         none
glsl_shader_mame7         none
glsl_shader_mame8         none
glsl_shader_mame9         none
glsl_shader_screen0       none
glsl_shader_screen1       none
glsl_shader_screen2       none
glsl_shader_screen3       none
glsl_shader_screen4       none
glsl_shader_screen5       none
glsl_shader_screen6       none
glsl_shader_screen7       none
glsl_shader_screen8       none
glsl_shader_screen9       none

#
# OSD SOUND OPTIONS
#
sound                     auto
audio_latency             2.0

#
# WINDOWS PERFORMANCE OPTIONS
#
priority                  0
profile                   0

#
# WINDOWS VIDEO OPTIONS
#
menu                      0

#
# DIRECTDRAW-SPECIFIC OPTIONS
#
hwstretch                 0

#
# DIRECT3D POST-PROCESSING OPTIONS
#
hlsl_enable               0
hlslpath                  hlsl
hlsl_prescale_x           0
hlsl_prescale_y           0
hlsl_write               
hlsl_snap_width           2048
hlsl_snap_height          1536
shadow_mask_tile_mode     0
shadow_mask_alpha         0.0
shadow_mask_texture       shadow-mask.png
shadow_mask_x_count       6
shadow_mask_y_count       4
shadow_mask_usize         0.1875
shadow_mask_vsize         0.25
shadow_mask_uoffset       0.0
shadow_mask_voffset       0.0
curvature                 0.0
round_corner              0.0
smooth_border             0.0
reflection                0.0
vignetting                0.0
scanline_alpha            1.0
scanline_size             1.0
scanline_height           1.0
scanline_bright_scale     1.0
scanline_bright_offset    0.0
scanline_jitter           0.0
defocus                   1.0,0.0
converge_x                0.25,0.00,-0.25
converge_y                0.0,0.25,-0.25
radial_converge_x         0.0,0.0,0.0
radial_converge_y         0.0,0.0,0.0
red_ratio                 1.0,0.0,0.0
grn_ratio                 0.0,1.0,0.0
blu_ratio                 0.0,0.0,1.0
saturation                1.4
offset                    0.0,0.0,0.0
scale                     0.95,0.95,0.95
power                     0.8,0.8,0.8
floor                     0.05,0.05,0.05
phosphor_life             0.4,0.4,0.4

#
# NTSC POST-PROCESSING OPTIONS
#
yiq_enable                0
yiq_cc                    3.59754545
yiq_a                     0.5
yiq_b                     0.5
yiq_o                     1.570796325
yiq_p                     1.0
yiq_n                     1.0
yiq_y                     6.0
yiq_i                     1.2
yiq_q                     0.6
yiq_scan_time             52.6
yiq_phase_count           2

#
# VECTOR POST-PROCESSING OPTIONS
#
vector_length_scale       0.5
vector_length_ratio       500.0

#
# BLOOM POST-PROCESSING OPTIONS
#
bloom_blend_mode          0
bloom_scale               0.25
bloom_overdrive           1.0,1.0,1.0
bloom_lvl0_weight         1.0
bloom_lvl1_weight         0.64
bloom_lvl2_weight         0.32
bloom_lvl3_weight         0.16
bloom_lvl4_weight         0.08
bloom_lvl5_weight         0.04
bloom_lvl6_weight         0.04
bloom_lvl7_weight         0.02
bloom_lvl8_weight         0.02
bloom_lvl9_weight         0.01
bloom_lvl10_weight        0.01

#
# FULL SCREEN OPTIONS
#
triplebuffer              1
full_screen_brightness    1.0
full_screen_contrast      1.0
full_screen_gamma         1.0

#
# INPUT DEVICE OPTIONS
#
global_inputs             0
dual_lightgun             0
EDIT: I understand this isn't GM's primary intended use, I have a project to turn an old laptop w/ ati gpu into a GM-dedicated machine for my crt's, but at the moment I'm stuck with that nasty lcd setup for the coming 3~4 weeks and I though I'd try to get the best out of it thanks to GM and its proper scaling feature.
Maybe I'm not asking the right thing or my request isn't very clear ?  ??? Sorry if that's the case.  :-[
« Last Edit: January 09, 2016, 11:43:18 am by schmerzkaufen »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
Hi schmerzkaufen

- So my question; is there a way to bring back the filter (bilinear or something else) in my situation ?

GM disables bilinear filtering if integer scaling is applied, in the belief that integer scaling + bilinear filtering is not usually desired. You can force it by adding the -filter option. If you do it in mame.ini it'll be overriden by GM. Try it from command line or put it in an ini with higher priority than mame.ini (game_name.ini, horizont.ini, etc).

Quote
- Also if you have suggestions for optimal settings in regards to speed and sync you're very welcome, I'm looking for correct game speed before everything, no tearing and with diminished lag impact then that'd be great too if possible ! ^^
(with my current settings I'm seeing for instance 104% speed in Cave gen1 games like ESP Ra. De., with a visible tiny tearing line in the middle)

60.00/57.5 Hz --> 104% (syncrefresh)

Enabling -triplebuffer and -mt will force correct game speed without tearing. But scroll won't be smooth. (Lag won't be a 3 frames more if that's what you're afraid of).

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: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
Maybe I'm not asking the right thing or my request isn't very clear ?  ??? Sorry if that's the case.  :-[

Sorry schmerzkaufen, you just happened to post during the most important GM update in years and I'm struggling to fix a lot of things as fast as possible.
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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Thanks a lot for your time Calamity !  ;)

I get the idea unfortunately I am not familiar with the command line options (all I know is how to generate mame.ini and I had a hard time finding about the proper procedure already) nor with using more than that single mame.ini

How could I create another higher-priority .ini then, that could cover all of my roms folder ? (so I wouldn't have to use command line every time nor create an .ini for each game)
« Last Edit: January 10, 2016, 09:25:19 am by schmerzkaufen »

sean_sk

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 144
  • Last login:August 06, 2019, 10:27:48 am
  • If quizzes are quizzical, then what are tests?
How could I create another higher-priority .ini then, that could cover all of my roms folder ? (so I wouldn't have to use command line every time nor create an .ini for each game)

As Calamity mentioned you can create a file called horizont.ini which has has higher priority than mame.ini and will cover all horizontal based games in your roms folder. You can also create one called vertical.ini for all vertical games. Simply copy over the options from mame.ini into these ini files (not all of them, only those that you want to force, like "filter") and these will override what is set in mame.ini. These need to reside where mame.ini is. To create an ini file just simply create a text file and change the extension from .txt to .ini.
« Last Edit: January 10, 2016, 09:41:42 am by sean_skroht »

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
So you're saying just naming those 'vertical' or 'horizontal' give them higher priority ? (and automatically work only with either vertical or horizontal games?)

I've made one vertical.ini with only the following in;
Code: [Select]
#
# OSD ACCELERATED VIDEO OPTIONS
#
filter                    1
sitting next to mame.ini in the exe folder...
...not working

EDIT: it works if I copy everything though. So if I understand well I should have three .ini(s) in my folder ?
mame.ini
vertical.ini
horizontal.ini
The first with every line, and the other two with only the specifics ? (not sure what I should copy or not)

EDIT2: wow, having tried putting three .ini's the whole thing seems to be very confused with rotation settings lol.
« Last Edit: January 10, 2016, 10:57:38 am by schmerzkaufen »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
It's horizont.ini, not horizontal.ini.

As said, do not copy all the contents or you'll break GroovyMAME.

Only copy the -filter option, and maybe the -prescale option and force a low value to it (1 or 2).
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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Thank you very much, it seems to work very well now.

Both horizont.nin and vertical.ini only have the following inside;
Code: [Select]
#
# OSD ACCELERATED VIDEO OPTIONS
#
filter                    1
prescale                  1

The only things that don't seem to work are the autorotate options, I assume this is handled in .cfg for each individual game which has to be rotated at least once if needed (?)

Anyway thanks again for your help, games looks better now for my average basic display needs.  8)

Ideally -sorry for the redundancy-  there would be means to customize the integer-upscaled output to greater multiples even if that means some lines would be left out of screen boundaries.
(for games that end up with quite thick black bars I use my TV's overscan settings, but not all sets have as good overscan settings as the Sony's, and monitors 99% of the time don't have any or just grayed-out)

And MAME would have some filter other than bilinear that would be more gentle (somewhere in-between the raw thing and that bilinear), but if I recall that was not working right and removed by mamedev many years ago.

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Sorry for double-posting.  :P

The lag with multithreading + triplebuffering feels a bit too much, so I've turned those off and gave frame_delay a try.

Curiously with not a single 'sync option' on in my INI, not even in my gpu settings, the bare d3d syncs by itself with no tearing (same 104% speed w/ ESPrade scenario), maybe it's because I'm using Win 8.1 ?

Anyway I went to the SWITCHRES section and set the following;

frame_delay               5      ---> would higher be even better ?
vsync_offset              200   ---> roughly eliminated all tearing for most games I've tried

Now I really have a feeling it is more responsive (or just placebo? dunno lol) like maybe a whole frame of delay was removed
Since I am usually genuinely annoyed with lag around 3 frames, and okay if not over 2 or 2,5 at most, that made several games playable-enough for my taste.

I've searched the forums for stuff about frame_delay because I am still not sure if it's of any use with standard LCD's, turns out it actually does a great job or is it just my imagination ?
There's too much to read in many threads and it's kind of hard to get. ^^

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1541
  • Last login:Yesterday at 10:53:25 am
  • retro maniac
Since E.S.P Rade works at 57,4 Hz 104% (this was already explained by Calamity) of speed is expected when game is forced to work at 60 Hz. This way You will not have any "jumping/bouncing" picture (like with multithreading + triplebuffering) or any tearing at least with prescale 1.

As for vsync_offset/frame delay on LCD I don't have any experience because I'm running groovymame on CRT TV where vsync_offset is not needed.
« Last Edit: January 11, 2016, 03:31:17 am by haynor666 »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
Hi schmerzkaufen,

The -frame_delay option actually does its job, it's not placebo, we've measured it using high speed recordings.

Anyway, using -video d3d9ex also removes the frame queue (even with -triplebuffer) and is easier to config.

The use of -frame_delay will only remove *the last* remaining frame of lag that -video d3d9ex by itself cannot remove.

Regarding sync options, if they're set to zero in mame.ini (default), these will be configured automatically by GM. You can dig in the logs created by GM to check which ones are being used in each case.
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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
@haynor666: yes I knew that but I wanted to give the other way a try.

@Calamity: I don't doubt you guys at all! but I didn't know this could be of any use for using on a LCD, almost everything written in the formus is about 15-khz setups I have to say I'm easily lost with my current puny setup.

How do I set GM to use d3d9ex ? Do I just type d3d9ex in place of d3d in the .ini ?


haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1541
  • Last login:Yesterday at 10:53:25 am
  • retro maniac
D3D9ex should be used under Windows 7 as default mode.

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
I am using Windows 8.1 now.

EDIT: okay found this guide after missing it at least three times: http://geedorah.com/eiusdemmodi/forum/viewtopic.php?id=290
Dunno why it's on an external website but you guys really should sticky it here.

So after reading Recap's posts; my head hurts.  ;D
But some things are getting in place now, bit-by-bit.

I still don't see how I can force GM to use d3d9ex though...
« Last Edit: January 11, 2016, 10:02:19 am by schmerzkaufen »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
Quote
How do I set GM to use d3d9ex ? Do I just type d3d9ex in place of d3d in the .ini ?

Yes.

A link to the documentation site is on my signature  ;D I thought that would make it visible enough.

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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Quote
How do I set GM to use d3d9ex ? Do I just type d3d9ex in place of d3d in the .ini ?
Yes.
Ah okay. This is not specified in the guide!

So, does that mean with d3d9ex enabled I have to stop using frame_delay + vsync_offset, and in place simply enable multithreading + triplebuffer like I did before ?
(which would achieve something like my first config with correct speed but choppy scrolling, only this time minus one frame of delay?)

I didn't have much success trying to configure frame_delay + vsync_offset manually, while it's not too hard to find good values for games like ESP.Ra.De, making Arcadia (NMK 384x224@56.18Hz) stable seems almost impossible on my simple LCD set (which by the way is detected as 1366x768p@59.00Hz, as expected).
So the buffered solution (double-buffered as you seem to tell, like Raine?) seems to be best for the capricious games.
If I understood the guide correctly I can set up each game independently to use either solution 1 (fd+so) or solution 2 (mt+tb) ?

A link to the documentation site is on my signature  ;D I thought that would make it visible enough.
*hitting myself* sorry honestly it isn't, because of the small blue-gray-on-blue font, like where I've found it in the sticky thread [GroovyMAME 0.169 - SwitchRes v0.015l] and really mised it a few times as I was already overwhelmed with all the things I already didn't understand at that point.
Big red fonts and stickies are the way to go IMHO.  ;)
« Last Edit: January 11, 2016, 01:02:36 pm by schmerzkaufen »

cools

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 645
  • Last login:May 17, 2025, 02:24:48 pm
  • Arcade Otaku Sysadmin
    • Arcade Otaku
You still want frame_delay enabled with d3d9ex. Calamity said so earlier in the thread :)
Hi schmerzkaufen,

The -frame_delay option actually does its job, it's not placebo, we've measured it using high speed recordings.

Anyway, using -video d3d9ex also removes the frame queue (even with -triplebuffer) and is easier to config.

The use of -frame_delay will only remove *the last* remaining frame of lag that -video d3d9ex by itself cannot remove.

Regarding sync options, if they're set to zero in mame.ini (default), these will be configured automatically by GM. You can dig in the logs created by GM to check which ones are being used in each case.


schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
You still want frame_delay enabled with d3d9ex.
Well that wasn't clear to me, moreover it's bugging me now. See why below.

I still don't clearly get what setting goes along with what other setting in a properly set INI, for those two scenarios;
  • settings for low lag + correct speed
  • settings for low lag + smooth scrolling
I am now using d3d9ex, okay, so with it I can use triplebuffering: does that mean multithreading still must be anabled along with it ?

Let's see if you can see where my confusion is coming from; after reading walls of technical text and posts it's been my understanding that frame_delay doesn't get along with multithreading and triple buffering.
And now it is supposed to be okay ? I'm lost, as it sounds like the two scenarios mixed up together.
What are the full proper settings for each ?

Here are my current settings for what I believe to be the first case scenario (optimal lag + correct speed);
That's the full INI;
Code: [Select]
#
# CORE CONFIGURATION OPTIONS
#
readconfig                1
writeconfig               0

#
# CORE SEARCH PATH OPTIONS
#
rompath                   roms
hashpath                  hash
samplepath                samples
artpath                   artwork
ctrlrpath                 ctrlr
inipath                   .;ini
fontpath                  .
cheatpath                 cheat
crosshairpath             crosshair

#
# CORE OUTPUT DIRECTORY OPTIONS
#
cfg_directory             cfg
nvram_directory           nvram
input_directory           inp
state_directory           sta
snapshot_directory        snap
diff_directory            diff
comment_directory         comments

#
# CORE OUTPUT DIRECTORY OPTIONS
#
hiscore_directory         hi

#
# CORE STATE/PLAYBACK OPTIONS
#
state                     
autosave                  0
playback                 
record                   
mngwrite                 
aviwrite                 
wavwrite                 
snapname                  %g/%i
snapsize                  auto
snapview                  internal
snapbilinear              1
statename                 %g
burnin                    0

#
# CORE PERFORMANCE OPTIONS
#
autoframeskip             0
frameskip                 0
seconds_to_run            0
throttle                  1
syncrefresh               0
sleep                     1
speed                     1.0
refreshspeed              0

#
# CORE ROTATION OPTIONS
#
rotate                    1
ror                       0
rol                       0
autoror                   0
autorol                   0
flipx                     0
flipy                     0

#
# CORE ARTWORK OPTIONS
#
artwork_crop              1
use_backdrops             0
use_overlays              0
use_bezels                0
use_cpanels               0
use_marquees              0

#
# CORE SCREEN OPTIONS
#
brightness                1.0
contrast                  1.0
gamma                     1.0
pause_brightness          1.0
effect                    none

#
# CORE VECTOR OPTIONS
#
antialias                 1
beam_width_min            1.0
beam_width_max            1.0
beam_intensity_weight     0
flicker                   0

#
# CORE SOUND OPTIONS
#
samplerate                48000
samples                   1
volume                    0

#
# CORE INPUT OPTIONS
#
coin_lockout              1
ctrlr                     
mouse                     0
joystick                  1
lightgun                  0
multikeyboard             0
multimouse                0
steadykey                 0
ui_active                 0
offscreen_reload          0
joystick_map              auto
joystick_deadzone         0.3
joystick_saturation       0.85
natural                   0
joystick_contradictory    0
coin_impulse              0

#
# CORE INPUT AUTOMATIC ENABLE OPTIONS
#
paddle_device             keyboard
adstick_device            keyboard
pedal_device              keyboard
dial_device               keyboard
trackball_device          keyboard
lightgun_device           keyboard
positional_device         keyboard
mouse_device              mouse

#
# CORE DEBUGGING OPTIONS
#
verbose                   0
log                       0
oslog                     0
debug                     0
update_in_pause           0
debugscript               

#
# CORE COMM OPTIONS
#
comm_localhost            0.0.0.0
comm_localport            15112
comm_remotehost           127.0.0.1
comm_remoteport           15112

#
# CORE MISC OPTIONS
#
drc                       1
drc_use_c                 0
drc_log_uml               0
drc_log_native            0
bios                     
cheat                     0
skip_gameinfo             0
uifont                    default
ramsize                   
confirm_quit              0
ui_mouse                  0
autoboot_command         
autoboot_delay            2
autoboot_script           

#
# CORE MKChamp OPTIONS
#
disable_hiscore_patch     0
disable_nagscreen_patch   1
disable_loading_patch     1

#
# CORE SWITCHRES OPTIONS
#
modeline_generation       1
monitor                   lcd
orientation               vertical
connector                 auto
interlace                 1
doublescan                1
cleanstretch              1
changeres                 1
powerstrip                0
lock_system_modes         1
lock_unsupported_modes    1
refresh_dont_care         0
dotclock_min              0
sync_refresh_tolerance    2.0
frame_delay               0
vsync_offset              0
black_frame_insertion     0
modeline                  auto
ps_timing                 auto
lcd_range                 auto
crt_range0                auto
crt_range1                auto
crt_range2                auto
crt_range3                auto
crt_range4                auto
crt_range5                auto
crt_range6                auto
crt_range7                auto
crt_range8                auto
crt_range9                auto

#
# OSD KEYBOARD MAPPING OPTIONS
#
uimodekey                 SCRLOCK

#
# OSD FONT OPTIONS
#
uifontprovider            auto

#
# OSD DEBUGGING OPTIONS
#
debugger                  auto
debugger_font             auto
debugger_font_size        0
watchdog                  0

#
# OSD PERFORMANCE OPTIONS
#
multithreading            1
numprocessors             auto
bench                     0

#
# OSD VIDEO OPTIONS
#
video                     d3d9ex
numscreens                1
window                    0
maximize                  1
keepaspect                0
unevenstretch             0
waitvsync                 0

#
# OSD PER-WINDOW VIDEO OPTIONS
#
screen                    auto
aspect                    auto
resolution                auto
view                      auto
screen0                   \\.\DISPLAY2
aspect0                   16:9
resolution0               1366x768@0
view0                     auto
screen1                   auto
aspect1                   auto
resolution1               auto
view1                     auto
screen2                   auto
aspect2                   auto
resolution2               auto
view2                     auto
screen3                   auto
aspect3                   auto
resolution3               auto
view3                     auto

#
# OSD FULL SCREEN OPTIONS
#
switchres                 1

#
# OSD ACCELERATED VIDEO OPTIONS
#
filter                    0
prescale                  1

#
# OpenGL-SPECIFIC OPTIONS
#
gl_forcepow2texture       0
gl_notexturerect          0
gl_vbo                    1
gl_pbo                    1
gl_glsl                   0
gl_glsl_filter            1
glsl_shader_mame0         none
glsl_shader_mame1         none
glsl_shader_mame2         none
glsl_shader_mame3         none
glsl_shader_mame4         none
glsl_shader_mame5         none
glsl_shader_mame6         none
glsl_shader_mame7         none
glsl_shader_mame8         none
glsl_shader_mame9         none
glsl_shader_screen0       none
glsl_shader_screen1       none
glsl_shader_screen2       none
glsl_shader_screen3       none
glsl_shader_screen4       none
glsl_shader_screen5       none
glsl_shader_screen6       none
glsl_shader_screen7       none
glsl_shader_screen8       none
glsl_shader_screen9       none

#
# OSD SOUND OPTIONS
#
sound                     auto
audio_latency             2.0

#
# WINDOWS PERFORMANCE OPTIONS
#
priority                  0
profile                   0

#
# WINDOWS VIDEO OPTIONS
#
menu                      0

#
# DIRECTDRAW-SPECIFIC OPTIONS
#
hwstretch                 0

#
# DIRECT3D POST-PROCESSING OPTIONS
#
hlsl_enable               0
hlslpath                  hlsl
hlsl_prescale_x           0
hlsl_prescale_y           0
hlsl_write               
hlsl_snap_width           2048
hlsl_snap_height          1536
shadow_mask_tile_mode     0
shadow_mask_alpha         0.0
shadow_mask_texture       shadow-mask.png
shadow_mask_x_count       6
shadow_mask_y_count       4
shadow_mask_usize         0.1875
shadow_mask_vsize         0.25
shadow_mask_uoffset       0.0
shadow_mask_voffset       0.0
curvature                 0.0
round_corner              0.0
smooth_border             0.0
reflection                0.0
vignetting                0.0
scanline_alpha            1.0
scanline_size             1.0
scanline_height           1.0
scanline_bright_scale     1.0
scanline_bright_offset    0.0
scanline_jitter           0.0
defocus                   1.0,0.0
converge_x                0.25,0.00,-0.25
converge_y                0.0,0.25,-0.25
radial_converge_x         0.0,0.0,0.0
radial_converge_y         0.0,0.0,0.0
red_ratio                 1.0,0.0,0.0
grn_ratio                 0.0,1.0,0.0
blu_ratio                 0.0,0.0,1.0
saturation                1.4
offset                    0.0,0.0,0.0
scale                     0.95,0.95,0.95
power                     0.8,0.8,0.8
floor                     0.05,0.05,0.05
phosphor_life             0.4,0.4,0.4

#
# NTSC POST-PROCESSING OPTIONS
#
yiq_enable                0
yiq_cc                    3.59754545
yiq_a                     0.5
yiq_b                     0.5
yiq_o                     1.570796325
yiq_p                     1.0
yiq_n                     1.0
yiq_y                     6.0
yiq_i                     1.2
yiq_q                     0.6
yiq_scan_time             52.6
yiq_phase_count           2

#
# VECTOR POST-PROCESSING OPTIONS
#
vector_length_scale       0.5
vector_length_ratio       500.0

#
# BLOOM POST-PROCESSING OPTIONS
#
bloom_blend_mode          0
bloom_scale               0.25
bloom_overdrive           1.0,1.0,1.0
bloom_lvl0_weight         1.0
bloom_lvl1_weight         0.64
bloom_lvl2_weight         0.32
bloom_lvl3_weight         0.16
bloom_lvl4_weight         0.08
bloom_lvl5_weight         0.04
bloom_lvl6_weight         0.04
bloom_lvl7_weight         0.02
bloom_lvl8_weight         0.02
bloom_lvl9_weight         0.01
bloom_lvl10_weight        0.01

#
# FULL SCREEN OPTIONS
#
triplebuffer              1
full_screen_brightness    1.0
full_screen_contrast      1.0
full_screen_gamma         1.0

#
# INPUT DEVICE OPTIONS
#
global_inputs             0
dual_lightgun             0

So what would be the proper settings for the second case scenario ? (low lag + smooth scrolling)
d3d9ex + triplebuffering + multithreading   -> all enabled
then I can use frame_delay over this ? is that correct ?

Calamity said so earlier in the thread :)
Please don't give me the 'told you' or 'said so', I'm trying my best to understand how all of this is working, it might feel natural for you because you've contributed and been using it for a long time, but to me it feels like deciphering ancient scriptures.
I don't alway get what Calamity or other people are saying, keep in mind you're talking to someone who came here not knowing a thing about GM except it's got features I'm looking for and excellent reputation for 15khs setups. Really for a noob GM is a thousand miles away from the regular MAMEUI that's just a few click away in the 'default games options' from being operational.
« Last Edit: January 12, 2016, 01:10:07 pm by schmerzkaufen »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
Quote
  • settings for low lag + correct speed

-triplebuffer -multithreading


Quote
  • settings for low lag + smooth scrolling

-syncrefresh -multithreading -frame_delay #


*BUT* syncrefresh & triplebuffer don't need to be forced explicitly. You use the -syncrefresh_tolerance option to tell GM how much refresh deviation you're willing to tolerate before triplebuffer is triggered. Otherwise, syncrefresh is used all the time, GM enables it for you; syncrefresh is the way GM is supposed to be run, triplebuffer is provided to deal with suboptimal setups, like fixed refresh monitors.

On the other hand, -frame_delay must not be enabled globally, it is meant to be applied manually to fine tune a certain game. -frame_delay does not make sense without -syncrefresh.

syncrefresh & triplebuffer are mutually exclusive.

Quote
I am now using d3d9ex, okay, so with it I can use triplebuffering: does that mean multithreading still must be anabled along with it

-triplebuffer behaviour is API independent, and always requires -multithreading to actually do something.
« Last Edit: January 12, 2016, 06:01:20 pm 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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
*BUT* syncrefresh & triplebuffer don't need to be forced explicitly. You use the -syncrefresh_tolerance option to tell GM how much refresh deviation you're willing to tolerate before triplebuffer is triggered. Otherwise, syncrefresh is used all the time, GM enables it for you; syncrefresh is the way GM is supposed to be run, triplebuffer is provided to deal with suboptimal setups, like fixed refresh monitors.

On the other hand, -frame_delay must not be enabled globally, it is meant to be applied manually to fine tune a certain game. -frame_delay does not make sense without -syncrefresh.

THANK YOU so much, I think I really understand now (sorry for being so slow), this is genuinely awesome mechanics!  :notworthy:

You use the -syncrefresh_tolerance
^ So I have to find a good value for this first, then try my games and tweak -frame_delay for each one that was 'spared' the -triplebuffer treatment individually, right?

sync_refresh_tolerance    2.0

So the default is 2Hz (?), considering I am currently using a fixed 1366*768@59Hz TV and am wired in HDMI, how 'loose' can I hope to make it for a balanced behaviour ?
From what I've read we can tell a game is within manageable range if it runs many many times its normal speed when throttle is turned off...

cools

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 645
  • Last login:May 17, 2025, 02:24:48 pm
  • Arcade Otaku Sysadmin
    • Arcade Otaku
Please don't give me the 'told you' or 'said so', I'm trying my best to understand how all of this is working, it might feel natural for you because you've contributed and been using it for a long time, but to me it feels like deciphering ancient scriptures.
I don't alway get what Calamity or other people are saying, keep in mind you're talking to someone who came here not knowing a thing about GM except it's got features I'm looking for and excellent reputation for 15khs setups. Really for a noob GM is a thousand miles away from the regular MAMEUI that's just a few click away in the 'default games options' from being operational.
Erm, what? I highlighted something that it appeared might have been missed. Ranting back at me... wasn't expecting any thanks but it would be nice not to have my face spat in.

Everyone was new once.

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1541
  • Last login:Yesterday at 10:53:25 am
  • retro maniac
If You have current frequency 59 Hz (actually it's not exact 59 Hz but rather something like59,45) then syncrefresh will be used in range 57 Hz (speed up game by max 2 Hz) to 61 (slow down game by max 2 Hz). If You are compare side by side game running at 57 Hz and the same game running at 59 Hz then You will spot difference in speed but for most people it's ok).
« Last Edit: January 13, 2016, 01:55:42 pm by haynor666 »

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
but it would be nice not to have my face spat in.
'Spat' is really too strong, it happened because I was just in the middle of pulling my hair with this and another of those remarks, when I obviously read but didn't get it, landed at the wrong time/mood and got me irritated. That's all, I just kind of ran out of, er ...cools.
It's just you know, the way GM works definitely doesn't jump at anyone's face without a quite clear, precise and at the same time succint explanation, especially to those like me who are not very familiar with that kind of stuff (I know a bit, but like most amateurs only just the tip of the iceberg) so the formulation is important and it's only by Calamity's latest post that I finally understood (despite having read quite a bit of stuff already. A tip take it or not; Recap's guide is a bit overwhelming for a newcomer-amateur).

Anyway.

If You have current frequency 59 Hz (actually it's not exact 59 Hz but rather something like59,45) then syncrefresh will be used in range 57 Hz (speed up game by max 2 Hz) to 61 (slow down game by max 2 Hz). If You are compare side by side game running at 57 Hz and the same game running at 59 Hz then You will spot difference in speed but for most people it's ok).
Mmh, good to know thanks. The default 2hz should already be good for me then. I'll see it in practice anyway.

Thanks a lot everyone for your help and patience !  :notworthy:
« Last Edit: January 13, 2016, 04:13:09 pm by schmerzkaufen »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
If you think GM is difficult to setup... try Daphne (that makes for truly kafkaesque experience).

GM was created to fix some problems with existing MAME. When you are not familiar with MAME, you're not familiar with those problems that GM is supposed to fix, so the different options sound cryptic.

Although GM intends to be as automatic as possible, there's no magic combination of options you can apply in all situations. There's too much to get into one's head for a day. Not because GM is designed to be complicated, it is the whole video emulation problem that is complicated and needs to be understood to some degree before making any sense of GM.

Welcome and enjoy.
« Last Edit: January 13, 2016, 06:03:57 pm 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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Well you're right at least for the really basic use I'm making of it right now it's actually quite simple, it's more understanding what it's indeed about and what those few options actually do that wasn't obvious at all when I started.

But I'm glad I came because the standard MAME/MAMEUI as well as pretty much all alternative builds (afaik) can't do 'just that':
- clean/integer scaling in D3D (the most compatible on most normal modern windows pc's in any situation. yeah openGL is giving me sync issues, ddraw doesn't work right in 8+. but d3d always works)
- efficient measures to reduce lag
You're even using that D3D9ex I've never heard about before and that's no joke, I felt an immediate difference even with the 'lazy' triplebuffering+mt only settings.

Sure there are some fancy builds around, like FX with its hacks/M1/samples/shaders etc, or the damned RA frontend that's actually quite potent when it works and does other stuff I want like custom integer scaling and really advanced multi-shader support... (the latter is more for taking nice screenshots rather than playing honestly. crt shaders are cool but lcd's can't keep up so it's kind of a waste).

BUT I grew tired of all the issues and heavy features, those are not things I need when I want to play in any given situation like now as I'm away from home with just a laptop and a small TV.
Too much lag gets in the way, poorly resized and filtered video too, and if I can get smoother scrolling over all this by working a bit that's even better.
Just clean enough, responsive enough, smooth as it can, and light: to me GM even though not intended as an 'lcd-oriented MAME' is in fact the best build to use on basic lcd monitors and tv sets.
I am baffled to see that today the official build lacks such basic things, I know about their preservation-gallery-only ideology, but it's ridiculous how gaming un-friendly it's become.

Seriously last night using GM I've played the crap out of some games I wasn't touching anymore because I don't like how 'off' those normally look and feel using other builds, and being almost forced to use fancy opengl shaders or hlsl on those to compensate don't make my weak laptop happy. I have a powerful computer back at home for wasting time with facultative features.

Anyway thanks again but I'm not done bothering you, I'll be back in a few weeks as I intend to go for the real thing and make a proper 15Kz GM setup.
First using an antique laptop (ASUS Z53J T7200 c2d 2.0GHz, ATI X1700, currently w/ XP32 but I think can take 64bit OS'es) then whether that one works or not build a dedicated micro-atx around a G3258 to wire to my crt tellies, three european 4:3 50/60 models from 20" to 27", including a 50kg Trinitron.
I've had a successful experience with soft15khz many years ago, using a TC1100 winxp tablet with a mobile GeForce lol. Im' guessing what I'll do with GM will be somewhat different.
« Last Edit: January 13, 2016, 07:15:55 pm by schmerzkaufen »

haynor666

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 1541
  • Last login:Yesterday at 10:53:25 am
  • retro maniac
Quote
If you think GM is difficult to setup... try Daphne (that makes for truly kafkaesque experience).

It's not that bad :)

Quote
FX with its hacks/M1/samples/shaders etc

It was designed for LCD screens and in my opinion is the best mame variant for such use especially that hacks are very usufull here like ported from groovymame syncrefresh, some game hacks (which I importing manually to groovymame like samples for toaplan games) or various game fixes not too mention very nice shaders.

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
I'd love to add the Toaplan samples to GM, and the Raiden Fighters series samples too.
But that's probably beyond my ability.  :-\

EDIT: FX would also be my favourite if only it did the same things as GM: integer scaling (both in d3d and ogl) + reduced lag.
Plus I'm still having trouble syncing ogl with it, that's no good.
Those basic things are more important than having shaders or a music player IMHO.
« Last Edit: January 14, 2016, 07:43:02 am by schmerzkaufen »

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Ouch, spoke too soon saying I got what I wanted; it seems I'm having trouble with cleanstretch; it doesn't work in every situation.

- Playing a vertical games on a monitor in landscape: all stretched vertically to fit the screen -> that's something I would absolutely want to avoid.
- Also it seems that even certain horizontal games get stretched, maybe when there isn't a decent multiple/fraction ?

For instance I have observed the following behaviour;
. R-Type gets stretched to screen borders on both 1366x768 and 1920x1080 displays I have here
. Darius Gaiden has small borders on the 1366x768, but is fullscreen on the 1920x1080
. ESP.Ra.De in vertical orientation with both displays in portrait this time, show with borders on the 1366x768, but fullscreen on the 1920x1080

So, am I correct in assuming cleanstretch only works in specific situations ?
And if so how can I force it to always work no matter the display, orientation and output resolution ?
« Last Edit: January 14, 2016, 01:56:02 pm by schmerzkaufen »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
So, am I correct in assuming cleanstretch only works in specific situations ?

Yes, that's correct. IIRC GM allows a maximum of 10% of borders on the vertical, 15% on the horizontal. If borders resulting from integer scaling are bigger, fractional scaling is applied. If you want higher tolerance you'll need to recompile it with new values. At some point this should be added as an option (maybe for Switchres 0.016).

Quote
And if so how can I force it to always work no matter the display, orientation and output resolution ?

Not at the moment. Because aspect ratio is also considered, you can play with slightly fake values of aspect ratio to avoid fractional scaling indirectly, but that's not a  proper solution.
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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
[...]the possibility to add negative values as well would be awesome, I mean so that we could set it to cleanstretch out of screen boundaries.[...]

« Last Edit: January 14, 2016, 02:27:36 pm by Calamity »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
Sorry schmerzkaufen, I accidentally edited your post again when trying to quote you.

Second time in a week it happens to me  :banghead:

The quote and modify buttons are so close that I often click on the wrong one.

Sorry for this.

Maybe you'll want to rebuild your post  :embarassed:
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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Ha ha no problem. ^^

EDIT: I think I was only saying editing and compiling a build is out of my reach, tried years ago: bitter memories.
So I'll wait for that future Switchres update, and it would be cool if that potential 'borders tolerance option' allowed to set negative values or whatever for cleanstretching to the upper multiple(s) even at the cost of some lines left out od the screen's boundaries (RA does that and it's awsesome).
« Last Edit: January 14, 2016, 02:41:25 pm by schmerzkaufen »

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
So for playing on my laptop only, which is detected as 1600x900@60 I've settled with;
sync_refresh_tolerance    2.5
This way I have most shooting games I like from Fire Shark @57.6Hz (argh no samples but I still play it) to any Cave etc with smooth scrolling and only a 1% to 4% maximum speed deviation.
For everything else with a refresh lower than that triplebuffer then automatically takes over.

That's nice, however I would like to know a bit more about what's going on but I cannot create any logs.
The life of me I've tried fifty times and this line below is just not right because I'm certain I didn't type anything wrong;
Code: [Select]
c:\mame_folder>groovymame.exe romname -v >romname.txtI've tried the following which I guarantee is the correct path with correct names;
Code: [Select]
c:\emulation\groovymame169>mame64.exe blazstar -v >blazstar.txtNothing, nada, refused. :-\
Why do we have to use command line for several tasks anyway ? It's such a pain.
Sorry but unless one is used to it alredy it's really like a wall.
« Last Edit: January 19, 2016, 02:42:00 am by schmerzkaufen »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
Refused, in what way? Didn't you get a blazstar.txt file in the same folder where GroovyMAME is?

Quote
Why do we have to use command line for several tasks anyway ? It's such a pain.

This is inherited from MAME itself. Most new users start with some UI derivative and get used to that way of thinking, but the real MAME project is command line based. It's not designed to be gamer friendly, it's developer oriented, etc.
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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Refused, in what way? Didn't you get a blazstar.txt file in the same folder where GroovyMAME is?
It just says 'acces denied' (in my language) nothing else, and no txt file is generated... I have really no idea why.
This is still Windows 8.1 btw
Quote
This is inherited from MAME itself. Most new users start with some UI derivative and get used to that way of thinking, but the real MAME project is command line based. It's not designed to be gamer friendly, it's developer oriented, etc.
Yes but although MAME has always been great for it's mission and accomplishments and millions of users of course are grateful to them for that, their anti-actual-gaming policy will never make sense to anyone who's not a developer or something, never ever.
I'm glad there are people like you doing the job they don't so we can finally taste a MAME that works better for actually playing the games, but you know that doesn't change the fact that my computer skills are still not different from the average person's (= quite low)  ;D
Command line is like a way to tell unskilled people to stay away IMHO. An option like 'generate log' in the .ini would save people on my level another hairpulling sequence, but maybe that's troublesome to implement, dunno, sorry I know this is already a lot of work.
Don't get me wrong I am really glad GM exists but I don't understand why it has to be so bare and unassisted at least for the very basic operations like those.
By the way is there a simple frontend/ui for windows that's fully compatible with GM ? It's a bit late for asking now maybe but if there is one available somewhere that would be a breather for me.
« Last Edit: January 19, 2016, 05:09:30 am by schmerzkaufen »

sean_sk

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 144
  • Last login:August 06, 2019, 10:27:48 am
  • If quizzes are quizzical, then what are tests?
It just says 'acces denied' (in my language) nothing else, and no txt file is generated... I have really no idea why.
This is still Windows 8.1 btw

My apologies if you've already done this (I've only skipped over this thread), is Groovymame set to run as Administrator? Also right click on the Groovymame folder and go to Properties and make sure "Read-only" is unticked. I also run Command Prompt as Administrator as well.

By the way is there a simple frontend/ui for windows that's fully compatible with GM ? It's a bit late for asking now maybe but if there is one available somewhere that would be a breather for me.

If you mean a front-end like MameUI, I don't think so, but some others may know. Mame does have it's own rudimentary ROM menu system as you know, but I wouldn't be too intimidated by command line. Take the time to learn how to use it and take it slow. I've been using Groovymame for 3 years and baseline Mame for over a decade and I'm still learning stuff. I found using command line helped me with customizing settings a lot better, understanding how the ini files worked, creating scripts and batch files etc, getting front ends like Hyperspin working with GM and other emulators, hiding Windows on my cabinet to give the impression of a real arcade machine.
Yeah it may not be user-friendly but it's defintely useful. If you get into this hobby you'll be in for the long haul, so patience is needed.
« Last Edit: January 19, 2016, 09:33:02 am by sean_skroht »

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
My apologies if you've already done this (I've only skipped over this thread), is Groovymame set to run as Administrator? Also right click on the Groovymame folder and go to Properties and make sure "Read-only" is unticked. I also run Command Prompt as Administrator as well.
Thanks, I redid it making sure of all the steps you recommend but it didn't work. It tells me that 'emulation\groovymame169' is not a command or a program.
Maybe because I can't get to start with just 'c:\' I only get to 'c:\>' and I can't remove the arrow before typing the rest of the path and command.
Also the folder keeps putting itself back into read-only, afaik it's always like that in modern Windows, dunno why nor how to get around it.

Quote
If you mean a front-end like MameUI, I don't think so, but some others may know. Mame does have it's own rudimentary ROM menu system as you know, but I wouldn't be too intimidated by command line. Take the time to learn how to use it and take it slow. I've been using Groovymame for 3 years and baseline Mame for over a decade and I'm still learning stuff. I found using command line helped me with customizing settings a lot better, understanding how the ini files worked, creating scripts and batch files etc, getting front ends like Hyperspin working with GM and other emulators, hiding Windows on my cabinet to give the impression of a real arcade machine.
Yeah it may not be user-friendly but it's defintely useful. If you get into this hobby you'll be in for the long haul, so patience is needed.
Oh God no  :laugh:, well not for me right now at least, since I'm not yet trying to make a 'groovymame cab', just using it on a normal Windows desktop (a laptop). Frontends/UI's are absolutely fantastic for someone like me in that situation.
In terms of user 'friendlyness' the gap between CMD and UI is kind of considerable; for instance right now I'm trying to do something that would normally only require to tick a box or click a button, instead I'm struggling with a console which I am not at all familiar with and I have to bother people for support when it's apparently a simple move.
If I was indeed trying to build something more complex in a particular setup, and had to do that sort of manual command job only a number of times and never again after succeeding, or only rarely, then I'd aknowledge that maybe it's acceptable to struggle with command line in our day and age... otherwise I'm calling things like using command line the opposite of modern computing (from the perspective of a simple/dumb user with low skills of course).

But I understand what you mean, I will have to learn all this stuff later anyway, when I'll get into building a fully working 15kh setup, I was just falsely in the hope that for my present dumb-win-desk use it would be as easy as doing exactly what's written in the little code boxes, but it seems my OS/desktop disagrees. ^^
The basic UI integrated in MAME is indeed only useful for selecting roms, and changing a few settings ingame.

Anyway I'll try to figure why that command doesn't work on my side, but of course if you guys find before me I'll have to thank you for the Nth time.  ;D
« Last Edit: January 19, 2016, 11:34:48 am by schmerzkaufen »

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 01, 2025, 01:29:14 pm
  • Quote me with care
If you're on Windows 8.1, right click on start menu->Command Prompt (Admin)

You'll get:

Code: [Select]
c:\WINDOWS\system32>
type:

Code: [Select]
cd \emulation\groovymame169
You'll get:

Code: [Select]
C:\emulation\groovymame169>
type:

Code: [Select]
mame64 blazstar -v >blazstar.txt
You'll get a blazstar.txt file in GroovyMAME's folder. If you keep having issues with access, just type:

Code: [Select]
mame64 blazstar -v
This will at least promt the log to the console directly.

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

schmerzkaufen

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 792
  • Last login:April 16, 2025, 09:46:43 am
  • Multiple Electronic Machine Emulator
Thank you Calamity, with those exact steps it worked.  ;)

I can finally have a look at it and see what's going on when it's running (like for instance if it's using the Intel integrated gpu, or the nVidia one, since Optimus configurations have a tendency to lie and do whatever they want even when it's supposedly forced in the control panel).