Build Your Own Arcade Controls Forum
Software Support => GroovyMAME => Topic started by: oomek on October 31, 2016, 03:44:05 pm
-
I'm trying to set up GroovyMame to switch to my custom resolution 1920x1080 and refresh rates of 52,54,56,58 but I always get 60fps. What am I doing wrong?
#
# CORE CONFIGURATION OPTIONS
#
readconfig 1
writeconfig 0
#
# CORE SEARCH PATH OPTIONS
#
rompath roms;D:\mame\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 1
sleep 1
speed 1.0
refreshspeed 1
#
# 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 0.65
effect slot-mask-aligned-scale50-gamma5
#
# 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 1
uifont default
ramsize
confirm_quit 0
ui_mouse 0
autoboot_command
autoboot_delay 2
autoboot_script
console 0
#
# CORE MKChamp OPTIONS
#
disable_hiscore_patch 0
disable_nagscreen_patch 1
disable_loading_patch 1
#
# CORE SWITCHRES OPTIONS
#
modeline_generation 0
monitor lcd
orientation horizontal
connector auto
interlace 0
doublescan 0
cleanstretch 0
changeres 1
powerstrip 0
lock_system_modes 0
lock_unsupported_modes 0
refresh_dont_care 1
dotclock_min 0
sync_refresh_tolerance 0.0
frame_delay 0
vsync_offset 0
black_frame_insertion 0
modeline auto
ps_timing auto
lcd_range 50-60
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 0
unevenstretch 0
waitvsync 0
#
# OSD PER-WINDOW VIDEO OPTIONS
#
screen auto
aspect auto
resolution auto
view auto
screen0 \\.\DISPLAY1
aspect0 10:6
resolution0 1920x1080@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 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 1
#
# DIRECT3D POST-PROCESSING OPTIONS
#
hlsl_enable 1
hlslpath hlsl
hlsl_enable 0
hlsl_oversampling 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
distortion 0.0
cubic_distortion 0.0
distort_corner 0.0
round_corner 0.0
smooth_border 0.0
reflection 0.0
vignetting 0.0
scanline_alpha 0.15
scanline_size 1.0
scanline_height 1.0
scanline_variation 1.0
scanline_bright_scale 1.0
scanline_bright_offset 0.0
scanline_jitter 0.0
hum_bar_alpha 0.0
defocus 1.5,1.0
converge_x 0.0,0.0,0.0
converge_y 0.0,0.0,0.0
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.0
offset 0.0,0.0,0.0
scale 1.0,1.0,1.0
power 1.0,1.0,1.0
floor 0.0,0.0,0.0
phosphor_life 0.0,0.0,0.0
#
# NTSC POST-PROCESSING OPTIONS
#
yiq_enable 0
yiq_jitter 0.0
yiq_cc 3.57954545
yiq_a 0.5
yiq_b 0.5
yiq_o 0.0
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 0
full_screen_brightness 1.0
full_screen_contrast 1.0
full_screen_gamma 1.0
#
# INPUT DEVICE OPTIONS
#
global_inputs 0
dual_lightgun 0
-
Most probably your LCD is fixed to 1920x1080@60hz.
There may be a chance in you try 15 kHz resolutions through the scart input like 256x224@57.
-
It only happens in GroovyMame. For example the latest maeuifx64 is switching my display properly to the nearest custom refresh when video is set to d3d. On bgfx it's the same story.
-
Read this: http://forum.arcadecontrols.com/index.php/topic,151986.0.html (http://forum.arcadecontrols.com/index.php/topic,151986.0.html)
-
Thanks for the link, but that topic does not offer any solution. It only mentions to use crt range, but does not tell how.
-
Thanks for the link, but that topic does not offer any solution. It only mentions to use crt range, but does not tell how.
In order to try to help that user, I asked him to post a log, so I could build a crt_range using that information.
After that:
(https://anhipa.files.wordpress.com/2008/07/salicor1.jpg)
-
I can post a log, just tell me what to do :) I need GroovyMame to recognise my custom resolutions of 1920x1080 in a frequency range of 50-60Hz.
-
Ok, here's the log for Shadow Dancer. Would you be able to help please?
http://pastebin.com/raw/WpdtYDF5 (http://pastebin.com/raw/WpdtYDF5)
-
If you check your log:
SwitchRes: Creating automatic specs for LCD based on current timings
SwitchRes: Monitor range 56250.00-67500.00,50.00-60.00,0.593,0.297,0.998,0.059,0.074,0.534,0,0,1080,1080,0,0
SwitchRes: -resolution was forced as 1920x1080@60
Just copy the line from your log and give it crt_range format:
crt_range0 56250.00-67500.00,50.00-60.00,0.593,0.297,0.998,0.059,0.074,0.534,0,0,1080,1080,0,0
Replace the corresponding line in mame.ini, and set 'monitor custom'.
-
Thanks, I've tried that. There is a small progress though. in bgfx I'm still getting 60Hz, in d3d 24Hz
-
Logs better than words.
-
shdancerD3D.txt
http://pastebin.com/raw/18rcs6Cs (http://pastebin.com/raw/18rcs6Cs)
shdancerBGFX.txt
http://pastebin.com/zWrRZ1AJ (http://pastebin.com/zWrRZ1AJ)
-
Didn't realize you have an ATI card. Disable -modeline_generation in mame.ini.
-
It's already disabled
modeline_generation 0
-
strange thing is even though the log says in bgfx mode:
SwitchRes: [shdancer] (1) horizontal (320x224@57.230000)->(1920x1080@23.000000)
it's completely ignored and the game is launched in 60Hz anyway.
-
If modeline_generation is disabled, only way you can be getting this result is if for some reason you have enabled refresh_dont_care.
-
That was it. After setting refresh_dont_care to 0 (which I probably set to 1 out of desperation) I have 58Hz now in D3D (bgfx still refusing to work for some reason) BUT...
...the game now is running at 50% :D This is getting weirder and weirder.
shdancerD3D.txt
http://pastebin.com/Xhc660jJ (http://pastebin.com/Xhc660jJ)
shdancerBGFX.txt
http://pastebin.com/2t7zFP3D (http://pastebin.com/2t7zFP3D)
-
I've checked the refresh rate on my TV's OSD, and it says 30Hz. that's where that 50% is coming from.
-
The problem is your system reports some @24, @25, @28, @29 Hz resolutions, and those are confusing GM, because the timings reported are actually the double, that's why it's picking those instead. I don't know if those have been always there or are a consequence of GM previous attempts to create custom timing, due to your card being an ATI.
What tool did you use to add the custom modes? Could you try to remove all of them and start again?
Anyway, I know it's far from ideal but you can always force a given resolution on a per-game basis, by means of the -resolution option.
-
Those refresh rates 24, 25, 29, 30 (don't see any 28Hz) have always been there.
To make my custom ones I used Radeon settings CCCSlim added as a legacy component to the new Crimson Drivers.
Setting the refreshes on per game basis is always an option, but I always wanted to avoid that.
In the worst case I will go back to mameuifx64, not that I want to.
-
I'm thinking there's something you could do so that GM stops reading custom timings, go into \windows\system32 and rename these files:
atiadlxx.dll
atiadlxy.dll
as
atiadlxx.dll.bak
atiadlxy.dll.bak
That should be enough. If you have any issue, just revert the change.
-
Thanks for your advice. I'll try that bit later. I'm also thinking about making a custom resolution of for example 1920x1078 with just the frequencies in the 50-60 range strictly for use in the emulator. Theoreticaly it should work.
-
Oh, and regarding that BGFX forcing 60Hz. Do you think I should be bothering the mamedev team about that, or there is still a chance for some workaround?
-
WOW, renaming atiadlxx.dll worked, even in bgfx! You are a genious! Thanks a lot man!
update: unfortunately it has some drawbacks, CCC.exe is not opening anymore. Also some games for example 1942, 1943 have no interpolation and are running at 52Hz
http://pastebin.com/2HXdj3Ms (http://pastebin.com/2HXdj3Ms)
-
I'm out of ideas.
I've tried as a test making a custom resolution of 1600x1080 with the 58Hz and 60Hz, but GM keeps ignoring them and switching to 1920x1080 even with the dll renamed.
I desperately need the custom frequencies and the lowest input lag possible, but after seeing what GM can do i cannot go back to using mameuifx.
The only solution is to grab a diff file from GM and stick the changes regarding the lag to mameuifx, skipping all that mess switchres introduced on the lcds.
update: even when I'm calling a game with a specific resolution it doesn't work.
C:\mamesrc>mame64 1943 -resolution 1600x1080@60
SwitchRes: [1943] (1) vertical (224x256@60.000000)->(1920x1080@60.000000)
-
You must have a -resolution value forced in mame.ini:
SwitchRes: -resolution was forced as 1920x1080@0
With regards to the dlls, another solution is to leave alone the dlls in system32 and instead place some dummy dlls in your mame folder, see attatchment.
-
Thank you for the dlls. They did the job.
There is one more thing though. I know, I'm bothering you with questions a lot, but this is a strange one.
prescale option in ini seems to be ignored when I set the custom monitor. Switchres is setting it to 3 so I loose the bilinear filtering. I need to force it through the commandline. Any ideas?
SwitchRes: [shdancer] (1) horizontal (320x224@57.230000)->(1920x1080@58.000000)
rng(0): 1920 x1080_58.000000p 0.000000 [fract] scale(5, 4, 1) diff(4.17, 28.23, 0.7700) ratio(6.000, 4.821)
SwitchRes: Setting option -rotate
SwitchRes: Setting option -noror
SwitchRes: Setting option -autoror
SwitchRes: Setting option -norol
SwitchRes: Setting option -noautorol
SwitchRes: Setting option -noblack_frame_insertion
SwitchRes: Setting option -nomultithreading
SwitchRes: Setting option -notriplebuffer
SwitchRes: Setting option -syncrefresh
SwitchRes: Setting option -waitvsync
SwitchRes: Setting option -keepaspect
SwitchRes: Setting option -filter
SwitchRes: Setting option -prescale 3
-
GroovyMAME no longer sets the prescale option. You must have downgraded to an older version for some reason.
-
Yes, i'm using the 0.171 version to take advantage of the d3d9ex mode. Funny thing is I discovered by accident that setting frame_delay to 10 gives me 24ms of latency less and scanline tear is more stable and can be easily adjusted with vsync_offset. When I set it in the proper range 1-9 scanline tear is all over the place. I've tested it with 1200fps camera and arduino board.
In the latest GM I have the same issues in bgfx mode with refresh of the display beeing forced to 60Hz. In the log it's ok though. Another dummy dll needed?
-
I assume there is no chance for me to switch to the 0.179 ?
-
I assume there is no chance for me to switch to the 0.179 ?
mmmm why not?
If you're using -frame_delay already, there's no advantage in using d3d9ex. You can use plain d3d + frame_delay with identical results.
D3D9ex was introduced basically to allow LCD users to reduce the latency while not using -frame_delay (because -frame_delay causes tearing on LCD). Now the GM-modified bgfx video backend does the same. I need to check why it doesn't switch resolutions when only the refresh number differs (your case), maybe it's a limitation, not sure.
BTW -frame_delay 10 is equivalent to -throttle (if you see what I mean).
-
I thought frame_delay doesn't work in d3d. I need to make some more highspeed comparison videos. No I do not get what you said about frame_delay and throttle.
update: unfortunately frame_delay in d3d does not work as neat. Tearing is imposible to eliminate as it appears from top and the bottom. So far the best combination for me is v0.171 video: d3d9ex, frame_delay: 10, vsync_offset: 140
Update2: in bgfx the emulator is switching to the proper frequency according to the log, but the display is stuck at 60Hz. It's the same situation as before but this time the dummy dlls do not help at all.
-
In src\emu\video.c
if (m_framedelay == 0 || m_framedelay > 9 || mode->hactive == 0)
return;
Basically, frame_delay 10 has no effect. However, indirectly, by simply using a value of frame_delay different from zero the driver's frame queue is bypassed, this is probably what you're noticing.
In my tests I never found any performance improvement from using d3d9ex over d3d9, however Intealls mentioned he did notice it on some systems. Unfortunately due to recent changes in MAME, keeping d3d9ex would involve either a full replication of the d3d backend (not viable for the GM patch) or forcing a d3d9ex-only renderer and consequently dropping support for XP.
-
I can assure you it's not a placebo effect. I'll post some videos tomorrow so you can see it for yourself. I would be more than happy to migrate to bgfx, but on the lcd's I do not see any benefits regarding latency, only drawbacks.