Build Your Own Arcade Controls Forum
Software Support => GroovyMAME => Topic started by: buttersoft on September 08, 2016, 07:13:44 am
-
I want to clone my displays, two CRTs, but when i set windows to clone them, MAME only shows up on the primary, no matter what settings I put in mame.ini.
Is there a way to make GroovyMAME show the same thing on two different GPU outputs/monitors?
-
Just a thought but if it's two CRTs why not just split the analog signal after the fact? That's how it's done on cabinets like my Versus City with two monitors.
-
I think you would be better off using a VGA distribution amp. They're relatively cheap.
-
You can do that from MAME itself by using the -numscreens option.
-
You can do that from MAME itself by using the -numscreens option.
I think just setting "numscreens 2" doesn't work with a cloned desktop, I still get a pic only on the primary. Other screen is blank. I've tried setting the main screen in MAME.ini, screen 0 and screen 1 to //./Display1 or 2, along with auto, and it's always the same and always comes up on the primary no matter what, but never on the secondary at all. So i can't push it onto the second monitor at all, whatever i set.
Hmm, do i need to specify a resolution for each screen? Or will it use the one under the generic screen settings? I don't imagine this will help, as i can't even push the single display onto another monitor when the desktop is cloned.
I'll go into ArcadeOSD and check the display numbers, but i don't think that's going to help.
I'm on 0.170 on Win7 with a Radeon 4350, if that helps at all.
I'd really rather not build another amp, one of the outputs already goes through one to the arcade chassis, and the tube is old and a little underwhelming as things stand.
-
First, when you turn on the "Duplicate desktop on n1 and n2" option, do you see your desktop duplicated on both monitors until you run MAME? (you haven't really said that that part is working)
If that's working, you have to consider that MAME only sees one display when Windows is in 'Duplicate' mode. None of the options that would normally send the game screen to a specific monitor will work in 'Duplicate' mode because MAME only sees the one display. You can verify this with MAME -v somegamename |find "\DISPLAY"
That said, on my Windows 7 laptop and my Windows 10 desktop, MAME shows on both monitors as it should while in 'Duplicate' mode without adding any options. If nothing shows on your second monitor when you run a full-screen program, your video card or driver might have some limitation like only supporting one hardware overlay. There's nothing MAME can do about that.
To see if you're having problems with full-screen, just run MAME in a window: MAME -window somegamename
Through all of this, you've been wanting to run in Duplicate mode. Do you really need duplicate mode, or was that just the way that you were trying to get MAME to appear on both screens? As Calamity mentioned, -numscreens 2 (by default) puts the game on both screens if you're in Extend mode. Again, that could be subject to the same full-screen limitation on your system as Duplicate, but it works fine on both of the systems I tried (which are both NVIDIA.)
-
Thanks for the reply, Nexus. Yes, the desktop is cloned properly, both screens identical, and other fullscreen apps/games run on both monitors just fine. In fact, GroovyMAME launches on both monitors when you double click the icon. If I click a game, that game only loads on the primary - that being the monitor that's connected to the first port on the graphics card, the one that shows the post screen etc on boot.
I want to duplicate the screens as Attractmode cannot be sent to a secondary monitor, nor can supermodel or model 2 or a few other driving games, and this PC is inside a cab that runs AM but is also connected to a driving setup next to it. I can use something like Actual Multiple Monitors to send different programs to different screens, I've had to do that for another similar setup with a vertical CRT in the cab, but that's a pain and i'd rather not configure AMM again and have to work with it.
I don't reckon the windowed option is going to make a difference, but i'll give it a go :) And i'm using crt_emudriver, so hopefully there's a not a problem there.
-
I understand what you're trying to do now, but I can't recreate the problem here at this time. (no dual monitor ATI system on Windows 7 to play around with) Calamity might have to shine some light on this one. I recall that when dual monitor support was added to GroovyMAME, switchres was limited to screen 0. I don't know what that might mean in a clone setup.
Since I can't offer a real solution, I'll just suggest using displayswich.exe /internal (or /external or /clone) to force a single monitor active while you run groovymame. If AttractMode has RunBefore and RunAfter capabilities, you could execute it that way, or maybe bind it to a button press on each cabinet.
-
... RunBefore and RunAfter capabilities, you could execute it that way...
I've never heard of those, but i already need them :) Cool, I'll go check them out. Can you use timers on them?
EDIT: I'm not turning up much. Are those program specific then? I'd love them to be part of windows, but i suppose task scheduler might work.
Yeah, it might be to do with switchres, i'd totally forgotten it doesn't work for two monitors. ATM i'm going to live without the second display for MAME, leaving the monitor cloning in place for ease of use.
thx
-
I've never heard of those, but i already need them :) Cool, I'll go check them out. Can you use timers on them?
EDIT: I'm not turning up much. Are those program specific then? I'd love them to be part of windows, but i suppose task scheduler might work.
Sorry if that wasn't clear. You had mentioned that you use AttractMode, but I haven't played with that yet, so I didn't know if those features (by whatever name) were included in that front end. The intent would be to have the front end configured to execute displayswitch /internal, then groovymame, then displayswitch /clone. Certainly you could do it with a batch file, if AttractMode knows how to run batch files and can pass the game name as a parameter to the batch file.
-
I'm not sure why MAME shouldn't work on both screens of a cloned desktop. To be honest I've never tried it (IMHO cloned desktop is a lame setup that only exists for the powerpoint crowd who could never figure out how make a projector work). Decent Windows apps should be able to target any monitor attached to the system by using the API that Windows provides. MAME does this perfectly by the way. I'm afraid the issue here is with your other apps that aren't smart enough. I know this won't be of much help, just trying to explain that you're forcing MAME to work in a suboptimal way. Running software to force changes of display topology before or after MAME, although may work, sounds like overkill to me.
The fact that Switchres always targets primary monitor, doesn't mean that secondary monitors won't work, it's only that on-the-fly custom video can only be applied to one monitor. If the other monitor shares the same resolution, changes will work as well on it.
-
Sadly, I think Model 2 emu and Supermodel don't count as decent apps then :) They work, but they're not exactly feature-rich when it comes to the UI and presentation.
I'm not trying to be difficult here, just making do with what's available. Thanks for trying to help. This is one of the first real problems I've had with MAME, and i'm not sure what's causing it. Normally it's completely flexible. I'll have to delete the MAME.ini and redo some small resolution changes to see if i've messed something up.
-
If the other monitor shares the same resolution, changes will work as well on it.
This is an important point. While you're tinkering, make sure that if your monitors are not identical, your least capable monitor is the primary one, and that you're using that definition in your configuration. If Windows is trying to send the same thing to both monitors, you have to be positive that your blank screen isn't because the other monitor can't display the timing that's being chosen for the primary one. (Though with arcade monitors, you usually get garbled screens instead of nothing.)
-
If the other monitor shares the same resolution, changes will work as well on it.
This is an important point. While you're tinkering, make sure that if your monitors are not identical, your least capable monitor is the primary one, and that you're using that definition in your configuration. If Windows is trying to send the same thing to both monitors, you have to be positive that your blank screen isn't because the other monitor can't display the timing that's being chosen for the primary one. (Though with arcade monitors, you usually get garbled screens instead of nothing.)
The monitors are two different 16.2kHz-capable CRTs. MAME is using the same monitor specs line for both, and if I swap the GPU plugs around, the visible display in MAME goes with it. It's not a timing issue.
-
Ok, this is getting seriously weird.
The problem doesn't happen with games that switchres picks 480i for (720, VR, etc). It only happens with 240p games like 3wonders, or Armoured Warriors. The desktop is cloned perfectly, as is ArcadeOSD in all the video modes listed.
WTF is going on? As i noted, if i switch the GPU plugs over, the picture goes with, so it's not a monitor issue.
MAME.ini: (No idea why i have that second crt_range0 line right down the bottom, but it's identical, so it shouldn't change anything?
#
# CORE CONFIGURATION OPTIONS
#
readconfig 1
writeconfig 0
#
# CORE SEARCH PATH OPTIONS
#
rompath roms\Horizontal
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 0.65
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 192.168.1.2
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 ui.bdf
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 0
disable_loading_patch 0
#
# CORE SWITCHRES OPTIONS
#
modeline_generation 1
monitor custom
orientation rotate_r
# horizontal, vertical, rotate_l, rotate_r
connector auto
interlace 1
doublescan 0
cleanstretch 2
changeres 1
powerstrip 0
lock_system_modes 1
lock_unsupported_modes 1
refresh_dont_care 0
dotclock_min 4
sync_refresh_tolerance 2.0
frame_delay 1
vsync_offset 0
black_frame_insertion 0
modeline auto
ps_timing auto
lcd_range auto
crt_range0 15625-16200, 49.50-65.00, 2.000, 4.700, 8.000, 0.064, 0.192, 1.024, 0, 0, 192, 288, 448, 576
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
#can set above to auto with one monitor
aspect 4:3
resolution 2560x0
view auto
screen0 auto
aspect0 auto
resolution0 auto
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 0.0
scanline_size 1.0
scanline_height 1.0
scanline_bright_scale 1.0
scanline_bright_offset 0.0
scanline_jitter 0.0
hum_bar_alpha 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_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
crt_range0 15625-16200, 49.50-65.00, 2.000, 4.700, 8.000, 0.064, 0.192, 1.024, 0, 0, 192, 288, 448, 576
-
It sounds like an issue with super resolutions. Try creating a normal 320x240 video mode and force it through command line, and see if it works.
-
Nope, forcing 320x240 doesn't work. I even turned the info screens back on to make sure the mode was right, and it is.
However, i think it's the HD 4350 video card. I did some more testing, and while in ArcadeOSD the 240p modes come up with their colourful background, setting them to desktop generates the same issue - the secondary monitor goes blank. Swapping the video cables between ports just moves the signal over. And once 240p/256p is set to desktop, the colourful backgrounds don't come up in ArcadeOSD anymore. The menus work, but always over the desktop. And still only single screen.
Setting the desktop to 480i again sort of resets everything to where I started. 480i shows up on both (cloned) desktops happily.
I tried reinstalling the video modes with VMMaker, but nothing changed.
-
Ok, so it's *not* the video card. I have a second, similar cab (core2duo, Radeon 4890) and after figuring out how to flip my CRT via the yoke connector, I cloned it too. The same issue occurs. The GroovyMAME menu at 480i works fine, but at 15kHz progressive (240p or whatever) any launched game only shows up on one display (I think it's actually the secondary, not the primary). The machine also won't do both desktops at a 15kHz progressive mode but I'll test this - see post above this one for weird behaviour of ArcadeOSD.
The first card was a 4350, so I wonder if it's a 4000-series issue. Doesn't sound likely to me. If not, I guess it might be a limitation of... crt_emudriver? Windows? I'm really not sure. I am using a lighter build of Win7. And I don't have the test-signing watermark in the bottom right. I used to, but on reinstalling crt_emudriver, it never offers you the option to turn on test-signing a second time. I presumed it was permanently on once set. (If not, is there any way to turn it back on short of re-installing windows? The driving cab side of this setup has hours of configuration work behind it - some of it would copy over, but some wouldn't.)
-
The test-signing watermark should be there. The emudriver won't be loaded unless you're in test-signing mode. You can enable it manually:
https://msdn.microsoft.com/en-us/windows/hardware/drivers/install/the-testsigning-boot-configuration-option
Anyway, I don't think it's a driver installation issue. The HD 4000 series is pre-Win7. Windows 7 implements a new driver model. What ATI did to support legacy cards on 7 is to create an interface for the new driver model on top of the old one. Basically most stuff should work, but maybe some of the new topology features (cloning, etc.) are buggy. That's why for Windows 7/8/10 I strongly recommend to use HD 5000/6000/7000 cards. But probably, just for inertia, I see most people still recommending HD 4000 cards.
I can't promise cloning will work for HD 5000+ cards however. The cloning feature is something I never test to be honest.
-
I always install test-mode when crt_emudriver asks, but it only seems to ask the first time. And the watermark is gone. Very, very occasionally the PC won't boot, but when it does it always loads up fine. Switchres does what it's meant to (or it was, I should probably test again) and all the modes are visible in ArcadeOSD. (I have a cut down list, and only use about 25 modes).
If crt_emudriver isn't actually loading, what would happen, how would you tell?
Thanks for the help again, I don't expect a fix (I'm upgrading to 6000/7000 series cards that only have one DVI-I/analog port anyway) so I guess consider this a bug report :)
-
That's why for Windows 7/8/10 I strongly recommend to use HD 5000/6000/7000 cards. But probably, just for inertia, I see most people still recommending HD 4000 cards.
Time to scour eBay for HD5000 fanless cards then.
-
I have at home card like this one http://allegro.pl/ati-radeon-hd5450-2x-dvi-512mb-gddr3-dx11-fv23-gw-i6483022037.html (http://allegro.pl/ati-radeon-hd5450-2x-dvi-512mb-gddr3-dx11-fv23-gw-i6483022037.html) and it works very nice though both outputs requires DVI-I to VGA adapter but I've found cloning very problematic under Windows XP so this option in my opinion is only for Windows 7.