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: Video Review  (Read 2991 times)

0 Members and 1 Guest are viewing this topic.

kortina

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 54
  • Last login:March 15, 2019, 05:06:26 am
  • I want to build my own arcade controls!
Video Review
« on: May 13, 2015, 07:33:09 am »
Hi Guys, thanks for all of your help so far.

I just wanted to check if I was doing everything right. I have read plenty of posts and I *think* I am almost there.

OS = Win8.1
Frontend = Hyperspin (1024x768@60Hz)
Display = Sony G520 (https://docs.sony.com/release/specs/cpdg520_sp.pdf)
GFX = ATI 3450 (4350 passive arriving soon)

Display Specs:
Horizontal Scan 30kHz - 130kHz
Vertical Refresh 48Hz - 170Hz
Maximum Resolution 2048 x 1536

1) Installed CRT_Emu drivers (crt_emudriver_13.1_1.2b_w7_64), TestMode = On
2) Configured VMMaker.ini with the following settings

Code: [Select]
; VideoModeMaker - Options
; ------------------------
   
; 1. MAME
; -------

; Path for Mame executable, in case we want to extract xml information from it.

MameExe = "C:\Arcade\groovymame160\groovymame.exe"

; Path for Mame ini folder, in case we want to create an ini file for each game.
; Important: existing ini files will be overwritten.

IniPath = "C:\Arcade\groovymame160\ini\"

; Mame options.

ListFromXML = 0 ; Processes Mame XML and get video mode list from it
GenerateXML = 0 ; Extracts XML from Mame (only needed once)
OnlyListMain = 0 ; Only list resolutions for games contained in MameMain.txt
GenerateInis = 0 ; Creates an ini file for each Mame game, in the IniPath folder
SDLMame = 0 ; Use SDLMame specific options

; Monitor orientation

MonitorHorizontal = 1 ; 0 = Rotating monitor: horizontal and vertical games at their native resolution
;     Suitable for users that physically rotate their CRTs
; 1 = Horizontal monitor: horizontal games run at their native resolution and
;     vertical games are rotated to fit in horizontal monitor

RotatingDesktop = 0 ; Specifies if both desktop and monitor are rotated

; Aspect ratio for vertical games on horizontal monitor
; 4:3 (keeps original aspect ratio)
; 3:3 (stretches to square format)
; 3:4 (stretches to full screen)
; h:v (custom aspect ratio)

VerticalAspect = "4:3"


; 2. MONITOR
; ----------

; Monitor Type. Valid types: D9800, D9400, D9200, EGA, VGA, MULTI, H9110, PAL, NTSC, GENERIC, CUSTOM

MonitorType = "CUSTOM"


; Monitor CUSTOM. These values will be used if MonitorType = "CUSTOM"
;
; monitor_specs_0-6 = "HfreqMin-HfreqMax, VfreqMin,VfreqMax, HFrontPorch, HSyncPulse, HBackPorch, VfrontPorch, VSyncPulse, VBackPorch, HSyncPol, VSyncPol, ActiveLinesLimit, VirtualLinesLimit"
;
; * HfreqMin-HfreqMax: Minimum and maximum horizontal frequency, in Hz. Defines the range of horizontal frequencies the monitor is capable to sync.
; The higher the horizontal frequency, the higher the vertical resolution available for the same vertical refresh.
; The higher the horizontal frequency, the higher the vertical refresh available for the same vertical resolution.
; The higher the horizontal frequency, the lower the horizontal amplitude of active video (narrower picture).
;
; * VFreqMin-VfreqMax: Minimum and maximum vertical frequency, in Hz, Defines the range of vertical frequencies the monitor is capable to sync.
;
; * HFrontPorch, HSyncPulse, HBackPorch: Horizontal timing and geometry, values in µs
;
; * VfrontPorch, VSyncPulse, VBackPorch: Vertical timing and geometry, values in ms
;
; * HSyncPol,VSyncPol: polarities, not in use! defaults to negative.
;
; * ActiveLinesLimit: Vertical resolutions until ActiveLinesLimit value included, are generated as progressive, regardless the possibility
;                           of obtaining the required vertical refresh value.
;
; * VirtualLinesLimit: Vertical resolutions above ActiveLinesLimit and below VirtualLinesLimit are virtualized, that is, an interlaced resolution
;                            bigger that the native one is generated, with the right refresh, and "hardware stretch" is applied.
;                            Vertical resolutions above VirtulaLinesLimit are generated as interlaced, without any stretching.

monitor_specs0  15625-16200, 49.50-65.00, 2.000, 4.700, 8.000, 0.064, 0.160, 1.056, 0, 0, 288, 400

; Tolerance for horizontal frequency, in kHz, enables extending the range defined by [ HfreqMin, HfreqMax ]
; The resulting allowed frequency range will be [ HfreqMin - HfreqTolerance, HfreqMax + HfreqTolerance ]

HfreqTolerance = 0.010


; 3. MODELINE GENERATOR
; ---------------------

; Total number of modelines to generate. Here are the recommended values for each driver version:
; CRT_Emudriver, based on Catalyst 6.5: 160 modes (accepts up to 200, but above 160 HyperSpin will refuse to load)
; CRT_Emudriver, based on Catalyst 9.3: 120 modes (accepts some more but above 120 you can get some blue screens)
; Regular Catalyst                    : 60 modes (won't accept any more)

TotalModes = 120

; If enabled, only creates modes with 32 bits per pixel color depth

Only32BPPModes = 0

; Method for mode table generation. If Mame xml is processed, that will create a lot of different video modes, so the mode table
; will be optimized keeping the most relevant ones, and dropping the rest, to keep below the TotalModes value.
;
; 0 = Static table: modelines are generated keeping their original vertical refresh. This method is intended to be used in
;     combination with ini files for each game.
;
; 1 = Dynamic table: a table of dummy modes is created using xres and yres values while ignoring vfreq. This method is intended
;     to be used in combination with Switchres or Groovymame. No ini files are required using this method (you should disable the
;     GenerateInis option).
;
; 2 = Magic table: a table of 'magic resolutions' is created, by ignoring xres and vfreq and just keeping yres. This method greatly reduces
;     the total number of modes in the list. It's only supported by GroovyMAME, and is intended as a workaround for the Hyperspin issue.

ModeTableMethod_Custom = 0
ModeTableMethod_XML = 1

; Minimum resolution values (these will be used instead of lower values)

XresMin_XML = 240
YresMin_XML = 240
YresRound_XML = 4

XresMin_Custom = 240
YresMin_Custom = 160
YresRound_Custom = 0

; Minimum dotclock value allowed by the video card, in MHz (i.e. DotClockMin = 7.010)

DotClockMin = 8.0

; Number of iterations used by the mode generator [0,5]. The higher the number of iterations, the bigger the accuracy of the vertical
; refreshed obtained, normally at the cost of increasing the horizontal frequency strictly required.

Iterations = 0

; Specifies if the refresh label is multiplied by 10 before rounding (experimental).

VFreqLabelx10 = 0

; 4. DRIVER
; ---------

; Display name to use as target

DisplayName = "\\.\DISPLAY1"

; Path for the driver folder

DriverPath = ".\Driver\"

; If UpdateRegistry is enabled, UpdateDriver will only work if the driver version found in DriverPath matches the one installed
; in the system.

UpdateRegistry = 1 ; Specifies if the video card registry section will be updated with the new video modes
; (will only work in combination with CRT_EMUDriver).

UpdateDriver = 0 ; Specifies if the driver files in DriverPath will be updated with the new video modes, for
; future installations.

AnyCatalyst = 0 ; Allows modelines to be installed for any Catalyst version. This option is experimental and
; known to produce some problems.

3) Used grovymame.exe -cc to generate a fresh config, edited with the following (note the Monitor = pc_70_120)

Code: [Select]
#
# CORE CONFIGURATION OPTIONS
#
readconfig                1
writeconfig               0

#
# CORE SEARCH PATH OPTIONS
#
rompath                   C:\Arcade\mame160roms
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          0.65
effect                    none

#
# CORE VECTOR OPTIONS
#
antialias                 1
beam                      1.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 MISC OPTIONS
#
drc                       1
drc_use_c                 0
drc_log_uml               0
drc_log_native            0
bios                     
cheat                     1
skip_gameinfo             1
uifont                    default
ramsize                   
confirm_quit              0
ui_mouse                  0
autoboot_command         
autoboot_delay            2
autoboot_script           
http                      0
http_port                 8080
http_path                 web
console                   0

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

#
# CORE SWITCHRES OPTIONS
#
modeline_generation       1
monitor                   pc_70_120
orientation               horizontal
connector                 auto
interlace                 1
doublescan                1
cleanstretch              2
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
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 FONT OPTIONS
#
uifontprovider            auto

#
# OSD DEBUGGING OPTIONS
#
debugger                  auto
watchdog                  0

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

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

#
# OSD PER-WINDOW VIDEO OPTIONS
#
screen                    auto
aspect                    auto
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 SOUND OPTIONS
#
sound                     auto
audio_latency             2.0

#
# OSD 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

#
# WINDOWS DEBUGGING OPTIONS
#
debugger_font             "Lucida Console"
debugger_font_size        9

#
# 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_preset               -1
hlsl_write               
hlsl_snap_width           2048
hlsl_snap_height          1536
shadow_mask_alpha         0.0
shadow_mask_texture       aperture.png
shadow_mask_x_count       320
shadow_mask_y_count       240
shadow_mask_usize         0.09375
shadow_mask_vsize         0.109375
curvature                 0.03
pincushion                0.03
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                   0.0,0.0
converge_x                0.3,0.0,-0.3
converge_y                0.0,0.3,-0.3
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.8
vector_length_ratio       500.0

#
# BLOOM POST-PROCESSING OPTIONS
#
vector_bloom_scale        0.3
raster_bloom_scale        0.225
bloom_lvl0_weight         1.0
bloom_lvl1_weight         0.21
bloom_lvl2_weight         0.19
bloom_lvl3_weight         0.17
bloom_lvl4_weight         0.15
bloom_lvl5_weight         0.14
bloom_lvl6_weight         0.13
bloom_lvl7_weight         0.12
bloom_lvl8_weight         0.11
bloom_lvl9_weight         0.10
bloom_lvl10_weight        0.09

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

#
# INPUT DEVICE OPTIONS
#
dual_lightgun             0

4) Run VMMaker, but the results seem small. Not sure if this is because I have a CRT or because I have done something wrong!

Code: [Select]
-------------------------------------------------------------
:: VideoModeMaker :: - version 1.4 - by Calamity - 2008/2014
-------------------------------------------------------------
ATI Radeon HD 3450 \\.\DISPLAY1 connected\Registry\Machine\System\CurrentControlSet\Control\Video\{E3322128-BA67-4736-AB97-76B3674A8B08}\0000

ATI Radeon HD 3450 \\.\DISPLAY2 disconnected\Registry\Machine\System\CurrentControlSet\Control\Video\{E3322128-BA67-4736-AB97-76B3674A8B08}\0001

CRT_EmuDriver 1.2 found! Based on Catalyst 13.1

 31 different video modes found.

Generating dynamic mode table... 12 redundant video modes found.
Reducing mode list... 0 video modes dropped.
 19 modelines generated.

Storing modelines in system registry...
System must be restarted for the changes to take effect.


bulbousbeard recommended asking for help with doubling/tripling/quadrupling.

Do I need to create some custom setup for my monitor, or am I doing the correct thing by using "pc_70_120" ??




Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7463
  • Last login:July 19, 2025, 04:03:33 am
  • Quote me with care
Re: Video Review
« Reply #1 on: May 14, 2015, 04:53:32 pm »
Hi kortina,

In vmmaker.ini, set:

ListFromXML = 1
GenerateXML = 1

Monitor = "VGA"

In mame.ini, set

syncrefresh = 1
black_frame_insertion  1
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

dmckean

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 729
  • Last login:January 13, 2024, 08:50:41 pm
Re: Video Review
« Reply #2 on: May 21, 2015, 12:32:48 am »
I have a similar monitor that I'm using and I'm just curious why in this example you'd set monitor type in vmmaker.ini to VGA and not MULTI?

kortina

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 54
  • Last login:March 15, 2019, 05:06:26 am
  • I want to build my own arcade controls!
Re: Video Review
« Reply #3 on: May 21, 2015, 01:48:34 am »
Not sure why Calamity suggested VGA over MULTI, but I a sure he has a reason...

As a note the other settings recommended by Calamity
ListFromXML = 1
GenerateXML = 1

These settings have increased the number of resolutions created by VMMaker (I didn't notice any difference in the end result for the 40 games I mostly use).

In mame.ini, set

syncrefresh = 1
black_frame_insertion  1

These settings have helped with the refresh rates that have double or tripled the original. There has been a noticeable improvement in the way the picture is presented.

NBA Jam looks very authentic, and probably the most noticeable for me.
Default MAME = Poor rendition
MAME with HLSL = better display
Groovy MAME with uneducated guess settings = very good
Groovy MAME configured with help from the pro's = Excellent picture (probably the best you will get from the incorrect SVGA monitor).

If I was starting over, I would build a cabinet with a real arcade monitor. Even with the limited choice and expensive costs here in Australia.

However, I started this project over 4 years ago... and built my Cabinet around the 21" (free) SVGA CRT. In this time GroovyMAME+CRT_Emu have really changed the possibilities.

dmckean

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 729
  • Last login:January 13, 2024, 08:50:41 pm
Re: Video Review
« Reply #4 on: May 21, 2015, 02:16:05 am »
If I was starting over, I would build a cabinet with a real arcade monitor. Even with the limited choice and expensive costs here in Australia.

However, I started this project over 4 years ago... and built my Cabinet around the 21" (free) SVGA CRT. In this time GroovyMAME+CRT_Emu have really changed the possibilities.

It's hard to find a 19" arcade monitor these days without stripping it out of a working game. I don't really want to do that so I'll just use a free pc monitor or TV in my projects and by the time it dies in another 10 years we'll probably good alternatives CRTs.