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 ASIO ALPHA 0.171  (Read 94774 times)

0 Members and 1 Guest are viewing this topic.

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #400 on: January 31, 2016, 04:36:02 pm »
Just tried audio_latency 0.1 with 4 games and it works exactly like audio_latency set to 1, crackles and pops for a few seconds and then works perfectly.
Of course if i set the buffer size to 96 everything is fine.

Great, I might want to try this out, what game(s) and driver are you verifying this with? Is it the official SB driver or kX?

Foxhole

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 287
  • Last login:April 11, 2024, 04:05:15 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #401 on: January 31, 2016, 04:41:44 pm »
Just tried audio_latency 0.1 with 4 games and it works exactly like audio_latency set to 1, crackles and pops for a few seconds and then works perfectly.
Of course if i set the buffer size to 96 everything is fine.

Great, I might want to try this out, what game(s) and driver are you verifying this with? Is it the official SB driver or kX?
I tried Ninja masters, Street fighter Alpha Warrior's dream and Bad dudes vs dragon ninja.
I also use mame as my console emulator, so i tried comix zone too.
kX Driver.
« Last Edit: January 31, 2016, 04:44:02 pm by Foxhole »

Foxhole

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 287
  • Last login:April 11, 2024, 04:05:15 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #402 on: January 31, 2016, 04:42:05 pm »
Just tried audio_latency 0.1 with 4 games and it works exactly like audio_latency set to 1, crackles and pops for a few seconds and then works perfectly.
Of course if i set the buffer size to 96 everything is fine.

Great, I might want to try this out, what game(s) and driver are you verifying this with? Is it the official SB driver or kX?
I tried Ninja masters, Street fighter Alpha Warrior's dream and Bad dudes vs dragon ninja.
I also use mame as my console emulator, so i tried comix zone too.
kX Driver.
Sorry for the double comment, Pressed quote instead of modify by accident.

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #403 on: January 31, 2016, 04:43:59 pm »
Ok, thanks for reporting!

Foxhole

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 287
  • Last login:April 11, 2024, 04:05:15 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #404 on: January 31, 2016, 06:31:14 pm »
One last update. Tried the d2x with 1ms (48 samples) and audio_latency set to 0.1 and it's working perfectly.

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #405 on: January 31, 2016, 06:54:47 pm »
One last update. Tried the d2x with 1ms (48 samples) and audio_latency set to 0.1 and it's working perfectly.

That's actually pretty awesome :) - I might need to look over the audio_latency setting for the next release. How fast is the PC you're using?

Foxhole

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 287
  • Last login:April 11, 2024, 04:05:15 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #406 on: January 31, 2016, 07:00:06 pm »
The emulation pc with the d2x is actually isn't that fast. It's a quad core q8200 oc'ed to 2.9Ghz.
The one with the audigy 4, with the kx drivers, is in fact the faster one, I5-4570 3.2Ghz, and that's the one with the crackles, lol.

RobertoFresca

  • Trade Count: (0)
  • Jr. Member
  • **
  • Offline Offline
  • Posts: 1
  • Last login:February 02, 2016, 11:35:31 pm
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #407 on: February 02, 2016, 11:35:31 pm »
One last update. Tried the d2x with 1ms (48 samples) and audio_latency set to 0.1 and it's working perfectly.

That's actually pretty awesome :) - I might need to look over the audio_latency setting for the next release. How fast is the PC you're using?

I just wanted to say thanks for this ASIO build. It works great here with Realtek. I have a jesting though. Why do you say that LCDS need to enable multithreading? It works fine here without it.

Also, will you please release an ASIO diff that isn'the based on GroovyMAME?

I hacked together a build that doesn't have any of the switchres stuff, but who knows if I did anything wrong.

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7414
  • Last login:April 10, 2024, 02:02:31 pm
  • Quote me with care
Re: GM ASIO ALPHA 0.170
« Reply #408 on: February 03, 2016, 05:28:12 am »
Hi Roberto,

The multithreading option in GroovyMAME has a different implementation from baseline MAME. The way it's implemented has a double aim: improve input response and make asynchronous triple buffering possible (when required). The reason intealls is recommending it is to provide the best performance with regards to the combination on input, video, and audio latency, assuming the whole GroovyMAME implementation is available. If you only apply the ASIO diff, then probably it's best not to use multithreading which is known to be problematic in baseline.

By the way, do you think there's any chance that intealls' ASIO implementation could make into the official project?


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

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

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #409 on: February 03, 2016, 09:49:10 am »
By the way, do you think there's any chance that intealls' ASIO implementation could make into the official project?

I think this will be problematic due to the use of BASSASIO. But there are bits and pieces that in one form or another perhaps could make it into mainline, possibly the calibration frequency stuff and the audio update at end-of-frame etc. But currently it's probably best to view it as a recipe for low latency audio in MAME. :)

I just wanted to say thanks for this ASIO build. It works great here with Realtek. I have a jesting though. Why do you say that LCDS need to enable multithreading? It works fine here without it.

Also, will you please release an ASIO diff that isn'the based on GroovyMAME?

I hacked together a build that doesn't have any of the switchres stuff, but who knows if I did anything wrong.

Thanks! Sure, I'll fix one up later tonight.

The multithreading option in GroovyMAME has a different implementation from baseline MAME. The way it's implemented has a double aim: improve input response and make asynchronous triple buffering possible (when required). The reason intealls is recommending it is to provide the best performance with regards to the combination on input, video, and audio latency, assuming the whole GroovyMAME implementation is available. If you only apply the ASIO diff, then probably it's best not to use multithreading which is known to be problematic in baseline.

Absolutely, also, GM really does make things shine. Currently the absolutely closest one gets to the real thing is GM on CRT + ASIO + frame delay. Configuring ASIO and frame delay is still a bit tricky though.
« Last Edit: February 03, 2016, 10:22:32 am by intealls »

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #410 on: February 03, 2016, 02:44:59 pm »
Here's the patch for mainline, some minor changes needed to be done since GM handles game speed a bit differently.

Just like Calamity states, multithreading should not be used when run on mainline.

Also, thank you (and the rest of MAMEDEV!) for MAME! It really is an amazing project.

big10p

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 698
  • Last login:May 01, 2023, 01:46:23 pm
  • Mmmm, arcade classics!
Re: GM ASIO ALPHA 0.170
« Reply #411 on: February 06, 2016, 09:27:33 am »
Hi

I've read about the frame delay benchmark in the OP but need it explaining a bit more, please. For example, I ran 'mame64 pacman -bench 10 > log.txt', and the log states:
frame delay/percentage: 8/100.00%
Average speed: 13005.98% (9 seconds)

So, this means I should use a frame delay of 8 for Pac-Man? I know percentage refers to "percentage of frame time", but don't really understand what that means.

Thanks.

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #412 on: February 06, 2016, 10:01:52 am »
Hi

I've read about the frame delay benchmark in the OP but need it explaining a bit more, please. For example, I ran 'mame64 pacman -bench 10 > log.txt', and the log states:
frame delay/percentage: 8/100.00%
Average speed: 13005.98% (9 seconds)

So, this means I should use a frame delay of 8 for Pac-Man? I know percentage refers to "percentage of frame time", but don't really understand what that means.

Thanks.

Hi,

Yes, as long as you're not using vsync_offset and syncrefresh is being used you could use a setting of 8.

big10p

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 698
  • Last login:May 01, 2023, 01:46:23 pm
  • Mmmm, arcade classics!
Re: GM ASIO ALPHA 0.170
« Reply #413 on: February 06, 2016, 10:12:34 am »
Hi

I've read about the frame delay benchmark in the OP but need it explaining a bit more, please. For example, I ran 'mame64 pacman -bench 10 > log.txt', and the log states:
frame delay/percentage: 8/100.00%
Average speed: 13005.98% (9 seconds)

So, this means I should use a frame delay of 8 for Pac-Man? I know percentage refers to "percentage of frame time", but don't really understand what that means.

Thanks.

Hi,

Yes, as long as you're not using vsync_offset and syncrefresh is being used you could use a setting of 8.
I don't use vsync_offset at the moment, so that's OK. GM itself decides whether to use syncrefresh or not, doesn't it? If syncrefresh doesn't get used, should I just set frame delay to 0, for that game?

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.170
« Reply #414 on: February 06, 2016, 10:29:18 am »
I don't use vsync_offset at the moment, so that's OK. GM itself decides whether to use syncrefresh or not, doesn't it? If syncrefresh doesn't get used, should I just set frame delay to 0, for that game?

If SwitchRes automatically controls the use of syncrefresh (which is definitely the preferred way of controlling syncrefresh), the frame_delay setting will not be used for games that do not use it. So even if you set frame_delay 8, if syncrefresh isn't used for the game, it will not use frame_delay at all.

big10p

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 698
  • Last login:May 01, 2023, 01:46:23 pm
  • Mmmm, arcade classics!
Re: GM ASIO ALPHA 0.170
« Reply #415 on: February 06, 2016, 10:34:31 am »
I don't use vsync_offset at the moment, so that's OK. GM itself decides whether to use syncrefresh or not, doesn't it? If syncrefresh doesn't get used, should I just set frame delay to 0, for that game?

If SwitchRes automatically controls the use of syncrefresh (which is definitely the preferred way of controlling syncrefresh), the frame_delay setting will not be used for games that do not use it. So even if you set frame_delay 8, if syncrefresh isn't used for the game, it will not use frame_delay at all.
Ah, I see. Thanks for clearing that up, for me.

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?
Re: GM ASIO ALPHA 0.170
« Reply #416 on: February 08, 2016, 08:14:45 am »
Hi intealls,

Thank you very much for your work on this. It looks like a very very interesting project and I'm quite keen to try ASIO out in GM.
I was about to ask if you had diff files available so I could compile my own GM ASIO and I just noticed them at the bottom of the first post. Doh!!!
I happened to have an old Sound Blaster Live! 5.1 lying around, that I forgot I had. I've just plugged it into my cabinet and installed KX Drivers. Very keen on trying this out. Probably try tomorrow.

« Last Edit: February 08, 2016, 08:29:13 am by sean_skroht »

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #417 on: February 25, 2016, 10:36:39 am »
Updated to 0.171, mainline is now supported with a separate patch. Check the build instructions page if building from source, since a slight modification was needed.
« Last Edit: February 25, 2016, 10:40:54 am by intealls »

brywalker

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 13
  • Last login:August 13, 2018, 07:23:56 pm
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #418 on: March 14, 2016, 06:42:33 pm »
I just have to say, after tons of testing this is incredible. I have always felt the disconnect in the audio latency was worse than the control lag. Now running this with d3d9ex with frame delay of 5 and I can't tell the difference between my jamma boards. Love it. Thanks for your collective hard work.

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #419 on: March 15, 2016, 10:53:04 am »
Thanks! The reason I started developing the ASIO stuff was GM on CRT and frame_delay. Now that the ASIO stuff works well it does come together quite nicely. :)

brywalker

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 13
  • Last login:August 13, 2018, 07:23:56 pm
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #420 on: March 20, 2016, 09:48:24 pm »
Now on my bartop, it is working excellent as well. However, cannot enable HLSL at all .170 and .171. I haven't been able to confirm if it is this branch or anything but it's driving me bananas. 17" LCD in it. Here is my mame.ini, if you find something off. No errors, just runs with no filters. I refuse to use straight groovy now because of ASIO lol. One thing I noticed if I set refresh_dont_care to 0, switchres will not function at all (so probably why it's suggested on page 1). Thanks again!

ATi HD 3450 using crtemu_driver. Is there any benefit using Calamity's drivers with an LCD?

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                     0
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           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           
console                   0

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

#
# 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         1
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                 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
asio_log                  0
asio_device               0
asio_cal_freq             0.0

#
# 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                    5:4
resolution                1280x1024@0
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             0.1

#
# WINDOWS PERFORMANCE OPTIONS
#
priority                  0
profile                   0

#
# WINDOWS VIDEO OPTIONS
#
menu                      0

#
# DIRECTDRAW-SPECIFIC OPTIONS
#
hwstretch                 0

#
# DIRECT3D POST-PROCESSING OPTIONS
#
hlsl_enable               1
hlslpath                  hlsl
hlsl_prescale_x           6
hlsl_prescale_y           6
hlsl_write                1
hlsl_snap_width           1280
hlsl_snap_height          1024
shadow_mask_tile_mode     0
shadow_mask_alpha         0.15
shadow_mask_texture       slot-mask.png
shadow_mask_x_count       6
shadow_mask_y_count       4
shadow_mask_usize         0.1875
shadow_mask_vsize         0.1875
shadow_mask_uoffset       0.0
shadow_mask_voffset       0.0
curvature                 0.10
round_corner              0.10
smooth_border             0.03
reflection                0.0
vignetting                0.20
scanline_alpha            1.50
scanline_size             1.0
scanline_height           1.0
scanline_bright_scale     1.15
scanline_bright_offset    0.0
scanline_jitter           0.1
hum_bar_alpha             0.0
defocus                   0.20,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.01,0.01,0.01
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.28
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

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #421 on: March 22, 2016, 02:35:57 pm »
Strange, have you downloaded the standard MAME package, and overwritten the executable with the GMASIO one?

With the version in GIT, I wasn't able to get HLSL working until the artwork path was set up correctly.

brywalker

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 13
  • Last login:August 13, 2018, 07:23:56 pm
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #422 on: March 23, 2016, 09:03:54 pm »
Yeah. :/

Just did it again from scratch. Textbook. Even updated dx11.1 and re-installed the dx9 redistributable. No go. Really bums me out. I know the system is capable of it. No idea why it won't work. GLSL worked fine.

For giggles - my verbose log. Forced 640x480 just to try to get a low res option working since 1280x1024 didn't work.

**Last update - Did mame.exe pacman -hlsl. Worked with default garbage settings. Looked like hot poop. So there has to be something in my INI breaking something, or its just not reading it right.

Code: [Select]
C:\mame>mame.exe pacman -v
SwitchRes: v0.015m, Monitor: lcd, Orientation: vertical, Modeline generation: en
abled
SwitchRes: LCD vfreq range set by user as 50.000000-60.000000
SwitchRes: \\.\DISPLAY1: ATI Radeon HD 3470 (CRT Emudriver - WDDM v1.1) (PCI\VEN
_1002&DEV_95C0&SUBSYS_0B421002&REV_00)
SwitchRes: Device key: System\CurrentControlSet\Control\Video\{071692DE-FF3F-4DA
A-9D3B-81CA90906D04}\0000
ATI legacy init
Switchres: Searching for custom video modes...
Switchres: [  1]  640x 480 @ 59 : system mode
Switchres: [  2]  640x 480 @ 60* : system mode
Switchres: [  3]  640x 480 @ 72 : system mode
Switchres: [  4]  640x 480 @ 75 : system mode
Switchres: [  5]  720x 480 @ 60 : system mode
Switchres: [  6]  800x 600 @ 56 : system mode
Switchres: [  7]  800x 600 @ 60 : system mode
Switchres: [  8]  800x 600 @ 70 : system mode
Switchres: [  9]  800x 600 @ 72 : system mode
Switchres: [ 10]  800x 600 @ 75 : system mode
Switchres: [ 11] 1024x 768 @ 60 : system mode
Switchres: [ 12] 1024x 768 @ 70 : system mode
Switchres: [ 13] 1024x 768 @ 72 : system mode
Switchres: [ 14] 1024x 768 @ 75 : system mode
Switchres: [ 15] 1152x 864 @ 60 : system mode
Switchres: [ 16] 1152x 864 @ 70 : system mode
Switchres: [ 17] 1152x 864 @ 75 : system mode
Switchres: [ 18] 1280x 720 @ 59 : system mode
Switchres: [ 19] 1280x 720 @ 60 : system mode
Switchres: [ 20] 1280x 768 @ 56 : system mode
Switchres: [ 21] 1280x 768 @ 60 : system mode
Switchres: [ 22] 1280x 768 @ 75 : system mode
Switchres: [ 23] 1280x 800 @ 60 : system mode
Switchres: [ 24] 1280x 800 @ 75 : system mode
Switchres: [ 25] 1280x 960 @ 60 : system mode
Switchres: [ 26] 1280x 960 @ 70 : system mode
Switchres: [ 27] 1280x 960 @ 72 : system mode
Switchres: [ 28] 1280x 960 @ 75 : system mode
Switchres: [ 29] 1280x1024 @ 60 : system mode
Switchres: [ 30] 1280x1024 @ 70 : system mode
Switchres: [ 31] 1280x1024 @ 75 : system mode
SwitchRes: Found 0 custom of 31 active video modes
SwitchRes: Creating automatic specs for LCD based on VESA GTF
SwitchRes: Monitor range 24850.00-29820.00,50.00-60.00,0.671,2.683,3.353,0.034,0
.101,0.436,0,1,480,480,0,0
SwitchRes: -resolution was forced as 640x480@60

SwitchRes: Entering switchres_modeline_setup
SwitchRes: v0.015m:[pacman] Calculating best video mode for 288x224@60.606060 or
ientation: normal

SwitchRes: [ 640]x[ 480]_(59=59.000000Hz) - locked

SwitchRes: [ 640]x[ 480]_(60=60.000000Hz)
   rng(0):  640 x 480_60.000000p 29.820000 [fract] scale(2, 2, 1) diff(10.00, 13
.08, -0.6061) ratio(2.222, 2.143)

SwitchRes: [ 640]x[ 480]_(72=72.000000Hz) - locked

SwitchRes: [ 640]x[ 480]_(75=75.000000Hz) - locked

SwitchRes: [ 720]x[ 480]_(60=60.000000Hz) - locked

SwitchRes: [ 800]x[ 600]_(56=56.000000Hz) - locked

SwitchRes: [ 800]x[ 600]_(60=60.000000Hz) - locked

SwitchRes: [ 800]x[ 600]_(70=70.000000Hz) - locked

SwitchRes: [ 800]x[ 600]_(72=72.000000Hz) - locked

SwitchRes: [ 800]x[ 600]_(75=75.000000Hz) - locked

SwitchRes: [1024]x[ 768]_(60=60.000000Hz) - locked

SwitchRes: [1024]x[ 768]_(70=70.000000Hz) - locked

SwitchRes: [1024]x[ 768]_(72=72.000000Hz) - locked

SwitchRes: [1024]x[ 768]_(75=75.000000Hz) - locked

SwitchRes: [1152]x[ 864]_(60=60.000000Hz) - locked

SwitchRes: [1152]x[ 864]_(70=70.000000Hz) - locked

SwitchRes: [1152]x[ 864]_(75=75.000000Hz) - locked

SwitchRes: [1280]x[ 720]_(59=59.000000Hz) - locked

SwitchRes: [1280]x[ 720]_(60=60.000000Hz) - locked

SwitchRes: [1280]x[ 768]_(56=56.000000Hz) - locked

SwitchRes: [1280]x[ 768]_(60=60.000000Hz) - locked

SwitchRes: [1280]x[ 768]_(75=75.000000Hz) - locked

SwitchRes: [1280]x[ 800]_(60=60.000000Hz) - locked

SwitchRes: [1280]x[ 800]_(75=75.000000Hz) - locked

SwitchRes: [1280]x[ 960]_(60=60.000000Hz) - locked

SwitchRes: [1280]x[ 960]_(70=70.000000Hz) - locked

SwitchRes: [1280]x[ 960]_(72=72.000000Hz) - locked

SwitchRes: [1280]x[ 960]_(75=75.000000Hz) - locked

SwitchRes: [1280]x[1024]_(60=60.000000Hz) - locked

SwitchRes: [1280]x[1024]_(70=70.000000Hz) - locked

SwitchRes: [1280]x[1024]_(75=75.000000Hz) - locked

SwitchRes: [pacman] (1) horizontal (288x224@60.606060)->(640x480@60.000000)
   rng(0):  640 x 480_60.000000p 29.820000 [fract] scale(2, 2, 1) diff(10.00, 13
.08, -0.6061) ratio(2.222, 2.143)
SwitchRes: Modeline "640x480_60 29.820000KHz 60.000000Hz" 23.856000 640 656 720
800 480 481 484 497   -hsync +vsync
Switchres: saving    system mode
Switchres: updating  Failed saving registry entry DALDTMCRTBCD640x480x0x60
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 -multithreading
SwitchRes: Setting option -notriplebuffer
SwitchRes: Setting option -syncrefresh
SwitchRes: Setting option -waitvsync
SwitchRes: Setting option -keepaspect
SwitchRes: Setting option -filter
SwitchRes: Setting option -prescale 2
Video: Monitor 000000000034A248 = "\\.\DISPLAY1" (primary)
Direct3D: Using Direct3D 9Ex
window_proc: WM_NCACTIVATE
blit_lock = TRUE
Physical width 640, height 480
Direct3D: Configuring adapter #0 = ATI Radeon HD 3470 (CRT Emudriver - WDDM v1.1
)
Direct3D: Adapter has Vendor ID: 1002 and Device ID: 95C0
Direct3D: Using dynamic textures
Direct3D: Using StretchRect for prescaling
Direct3D: YUV format = RGB
Direct3D: Max texture size = 8192x8192
Direct3D: Device created at 640x480
Direct3D: First scanline: 16, Last scanline: 496, Break scanline: 496, Delay sca
nline: -33
blit_unlock = TRUE
window_proc: WM_PAINT
Blitting thread created
winwindow_video_window_create: blit_lock = TRUE
RawInput: APIs detected
Blitting thread started
Input: Adding Mouse #0: HID-compliant mouse
Input: Adding Gun #0: HID-compliant mouse
Input: Adding Kbd #0: HID Keyboard Device
DirectInput: Using DirectInput 8
blit_lock = FALSE
window_proc: WM_PAINT:END
ASIO: Game is running at 60.606060 Hz, screen at about 60.000000 Hz
ASIO: Driver ASIO4ALL v2 initialized with latency 64,
      sample rate 48000.00
      audio latency is 0
      frame delay is 0
ASIO: Setting initial playback rate to 48000.000 Hz
Region ':maincpu' created
Region ':gfx1' created
Region ':proms' created
Region ':namco' created
Starting Pac-Man (Midway) ':'
Optional shared pointer 'patched_opcodes' not found
Optional shared pointer 'rocktrv2_prot' not found
Optional shared pointer 's2650_tileram' not found
Optional shared pointer 's2650_spriteram' not found
  (missing dependencies; rescheduling)
Starting Z80 ':maincpu'
Starting gfxdecode ':gfxdecode'
Starting palette ':palette'
Starting Video Screen ':screen'
Starting Speaker ':mono'
  (missing dependencies; rescheduling)
Starting Namco ':namco'
Starting Pac-Man (Midway) ':'
Optional shared pointer 'patched_opcodes' not found
Optional shared pointer 'rocktrv2_prot' not found
Optional shared pointer 's2650_tileram' not found
Optional shared pointer 's2650_spriteram' not found
  (missing dependencies; rescheduling)
Starting Speaker ':mono'
Starting Pac-Man (Midway) ':'
Optional shared pointer 'patched_opcodes' not found
Optional shared pointer 'rocktrv2_prot' not found
Optional shared pointer 's2650_tileram' not found
Optional shared pointer 's2650_spriteram' not found
Command.dat games found = 145
Average speed: 98.91% (18 seconds)
Switchres: restoring Failed saving registry entry DALDTMCRTBCD640x480x0x60
ASIO: Average callback timeslice usage: 0.487205
ASIO: Overrun/underrun: 0/1
window_proc: WM_NCACTIVATE
blit_lock = TRUE
window_proc: WM_DESTROY
blit_lock = TRUE
Blitting thread destroyed

C:\mame>
« Last Edit: March 23, 2016, 10:02:42 pm by brywalker »

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #423 on: March 24, 2016, 11:28:35 am »
This is really strange.

I downloaded official MAME 0.171, and extracted the GMASIO executable over the old one. I used your ini, and HLSL worked. This was with an LCD. I did this from the command line, standing in the active MAME directory (mame64 samsho4). Are you using a front-end to launch GM?

brywalker

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 13
  • Last login:August 13, 2018, 07:23:56 pm
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #424 on: March 24, 2016, 07:19:11 pm »
Ok. I started the ini from straight scratch and worked my way through it. I have no idea what was making it *not* work, but now it is working. I have settings I *like* at 1024x768 @ full speed, but I don't love it. Might throw a few bucks at a HD5450 - this HD3450 is just a bit weak. Plays well, sounds amazing.

Thanks for the help and keep up the great work. With all of the stuff going on with MAME right now, this is my go to version number/branch for some time. Nothing I really need added to it as far as games go, performance is sweet. No noticeable input lag and the sound is dead on. So away we go.
« Last Edit: March 25, 2016, 03:05:56 pm by brywalker »

krick

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2006
  • Last login:February 08, 2023, 08:30:27 pm
  • Gotta have blue hair.
Re: GM ASIO ALPHA 0.171
« Reply #425 on: March 26, 2016, 02:59:51 pm »
What is the recommended/optimal hardware for using this build?

My motherboard has a Realtek ALC887 chip but I'm totally open to purchasing a dedicated sound card if it will give better results (or less hassle to set up/configure).

The only limitation is that it would have to be a PCIe x1 card.  This motherboard doesn't have any PCI slots.
Hantarex Polo 15KHz
Sapphire Radeon HD 7750 2GB (GCN)
GroovyMAME 0.197.017h_d3d9ex
CRT Emudriver & CRT Tools 2.0 beta 13 (Crimson 16.2.1 for GCN cards)
Windows 7 Home Premium 64-bit
Intel Core i7-4790K @ 4.8GHz
ASUS Z87M-PLUS Motherboard

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #426 on: March 26, 2016, 03:31:58 pm »
What is the recommended/optimal hardware for using this build?

My motherboard has a Realtek ALC887 chip but I'm totally open to purchasing a dedicated sound card if it will give better results (or less hassle to set up/configure).

The only limitation is that it would have to be a PCIe x1 card.  This motherboard doesn't have any PCI slots.

It mainly depends on if you want to use frame_delay or not, if you want to use high frame_delay settings, you're best off with an overclocked G3258, the higher the clock the better. Also, for frame_delay, a relatively fast graphics card is recommended when using super resolutions (I use an HD5770).

If you're happy without frame_delay, and can live without being able to satisfactorily run cv1k games etc, you could get away with a Core 2 Duo, with an older GPU.

I currently recommend ASIO4ALL+Realtek. However, it does not appear to work with some frontends. Regarding PCI express cards with ASIO support, I've only been able to test one, the Xonar DGX, and that performs much worse than the Realtek+ASIO4ALL combo, it also performs worse than an old SB PCI card with the kX driver. I'd like to test the Juli@ XTe, but those cards are ridiculously expensive. Dr.Venom used this and that seemed to work very well.
« Last Edit: March 26, 2016, 03:34:30 pm by intealls »

MtothaJ

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 19
  • Last login:May 08, 2016, 01:12:53 pm
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #427 on: March 29, 2016, 05:15:40 am »
Just to say that this is a very worthwhile addition which substantially improves the Groovymame experience.
The difference is definietly noticable.
In terms of configuration, I am using a new but relatively modestly specced PC (G4400 Pentium CPU, Asus Z170M-Plus mobo, 16GB RAM, Asus HD 5450 1 GB video card, Win 7 x64) and can safely set all the latancy options to the lowest (audio latancy 0.1 in mame.ini and sample size = 64 in asio4all) without any degredation in performance.
Other options I have turned on are multithreading, tripple buffer and waitvsync.

Arbee

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 50
  • Last login:December 20, 2023, 12:36:54 pm
Re: GM ASIO ALPHA 0.171
« Reply #428 on: March 31, 2016, 11:35:51 am »
Just a note: with the MAME license change, this ASIO build is now illegal to distribute.  BASSASIO is not GPL-compatible; someone needs to write an ASIO driver for MAME that doesn't use BASSASIO in order to solve this.

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #429 on: March 31, 2016, 02:30:58 pm »
Thanks for the heads up, it shouldn't be all that difficult to get rid of BASSASIO. Are there any extended plans to integrate PortAudio? Otherwise I'll start hacking away at a preliminary native ASIO implementation.

Also, am I right in thinking that 0.171 is still legal to distribute?
« Last Edit: March 31, 2016, 02:44:19 pm by intealls »

krick

  • Trade Count: (+1)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2006
  • Last login:February 08, 2023, 08:30:27 pm
  • Gotta have blue hair.
Re: GM ASIO ALPHA 0.171
« Reply #430 on: March 31, 2016, 03:22:19 pm »
The JUICE library supports ASIO and it's GPL...

https://github.com/julianstorer/JUCE
Hantarex Polo 15KHz
Sapphire Radeon HD 7750 2GB (GCN)
GroovyMAME 0.197.017h_d3d9ex
CRT Emudriver & CRT Tools 2.0 beta 13 (Crimson 16.2.1 for GCN cards)
Windows 7 Home Premium 64-bit
Intel Core i7-4790K @ 4.8GHz
ASUS Z87M-PLUS Motherboard

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #431 on: March 31, 2016, 03:45:10 pm »
Thanks for the tip, didn't know about JUCE. I've been doing some tests with other libraries, but JUCE seems to be of higher quality.

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7414
  • Last login:April 10, 2024, 02:02:31 pm
  • Quote me with care
Re: GM ASIO ALPHA 0.171
« Reply #432 on: March 31, 2016, 04:14:31 pm »
By reading this one would think adding ASIO support in a GPL licensed project is not possible:

http://wiki.audacityteam.org/wiki/ASIO_Audio_Interface

Quote
The ASIO technology was developed by German company Steinberg and is protected by a licensing agreement which prevents redistribution of its source code.

Audacity, as an open source program licensed under the GPL, is therefore currently unable to support ASIO, despite being ASIO-capable (providing the user's sound device is similarly capable). If ASIO support were distributed in Audacity builds this would either violate Steinberg's licence agreement if the code were included, or conversely would violate Audacity's GPL Licence if the code were withheld.

I think I'm missing something. If the problem is redistributing the ASIO sdk headers with your own GPL project, wouldn't it be possible to just sort of rip off the required prototypes and structs and create your own header?

I find much more appealing the perspective of creating a native implementation, specially now that MAME osd is so modular, rather than resorting to (yet another) library. But perhaps it's just me understimating the task complexity.
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

Arbee

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 50
  • Last login:December 20, 2023, 12:36:54 pm
Re: GM ASIO ALPHA 0.171
« Reply #433 on: March 31, 2016, 04:39:50 pm »
intealls: PortAudio is planned to be supported, and I have a preliminary MAME output module for it, but it needs help.  If you'd like to take it over, hit me (messdrivers at gmail).

Calamity: totally agreed, ASIO's licensing claims to say things that I'm not sure are actually legally possible.  So it's at a weird place wrt GPL software.

ETA: The LMMS Project says they do ASIO w/o Steinberg headers, so we might look at what they're doing.
« Last Edit: March 31, 2016, 04:44:06 pm by Arbee »

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #434 on: March 31, 2016, 06:56:18 pm »
By reading this one would think adding ASIO support in a GPL licensed project is not possible:

http://wiki.audacityteam.org/wiki/ASIO_Audio_Interface

Quote
The ASIO technology was developed by German company Steinberg and is protected by a licensing agreement which prevents redistribution of its source code.

Audacity, as an open source program licensed under the GPL, is therefore currently unable to support ASIO, despite being ASIO-capable (providing the user's sound device is similarly capable). If ASIO support were distributed in Audacity builds this would either violate Steinberg's licence agreement if the code were included, or conversely would violate Audacity's GPL Licence if the code were withheld.

I think I'm missing something. If the problem is redistributing the ASIO sdk headers with your own GPL project, wouldn't it be possible to just sort of rip off the required prototypes and structs and create your own header?

I find much more appealing the perspective of creating a native implementation, specially now that MAME osd is so modular, rather than resorting to (yet another) library. But perhaps it's just me understimating the task complexity.

This is certainly unfortunate. A native WASAPI implementation could be a good, clean solution, but PortAudio offers lots and lots of stuff. We would get ASIO (although the user would need to get the ASIO SDK, build from source and not distribute the binary), WASAPI and WDM-KS all rolled into one, which sounds like a fantastic deal. I need to look into if PortAudio will add any latency, and also study it generally. But if I'm able to handle it I'll gladly help out!

The trickiest bit is probably how to deal with the resampling, which is really needed for ASIO to work properly (it could also make other APIs sound better as well). There are two variables that we need to resample the audio correctly, game speed and sound card output frequency. The output frequency is currently estimated through linear regression, and with mainline MAME, game speed is easy since it will (most of the time) be fixed at 100%. With GM+syncrefresh, it will vary a tiny bit, but the speed is available from the video subsystem (m_speed_percent).

MAME resamples the audio, but this resampler does not offer the granularity that we need without resorting to some sort of hack (integer rounding, so one possible solution is to switch between several rates for added resolution). A straight forward solution could be to rewrite the resampler for finer granularity, and also take into account playback frequency and game speed. But I need to look into how the details of this would work out, it could turn out messy. BASSASIO has a built-in resampler, which was used by the ASIO implementation, it simply resampled the audio again in the OSD layer.

u-man

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 87
  • Last login:November 29, 2023, 05:57:09 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #435 on: April 01, 2016, 05:49:52 am »
Agree with Arbee and Calamity. MAME just needs a low-latency API equal to ASIO and Portaudio seems perfect for this, as it includes any OS platform and many different APIs (incl. ASIO).
http://git.redump.net/mame/tree/3rdparty/portaudio/README.txt
WASAPI on the other side is windows only and from what i know, it is not easy to program. It came from a Vista time and i dont think it has a good/stable future. It seems that low-latency is bounded with exclusive control over the used sound-card and that there are no(t) many alternatives. Any audio that goes through a OS controled soundcard is simply to slow for this task here.

Reading the license issues here, i am curious how far Portaudio can support ASIO, but the readme states that it supports ASIO  ??? .
16.68 milliseconds is the amount of time of 1 frame in a 30FPS game, so in theory we need a low-latency of 16ms.< (emulation time for a frame not included of course) and i think this is not possible without exclusive control over the soundcard.
"Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #436 on: April 01, 2016, 07:41:07 am »
Agree with Arbee and Calamity.

If you read their posts, you can see two different strategies.

MAME just needs a low-latency API equal to ASIO and Portaudio seems perfect for this, as it includes any OS platform and many different APIs (incl. ASIO).

The only API on Windows that has the possibility of being equivalent with ASIO is WASAPI. ALSA is already fairly low latency.

It came from a Vista time and i dont think it has a good/stable future. It seems that low-latency is bounded with exclusive control over the used sound-card and that there are no(t) many alternatives.

DirectSound was introduced with Windows 95. Regarding the alternatives, there is one, which is WASAPI.

Reading the license issues here, i am curious how far Portaudio can support ASIO, but the readme states that it supports ASIO  ??? .

Yes, it supports ASIO, but you need add to the ASIO SDK and build from source. MAME cannot be redistributed with ASIO functionality.

16.68 milliseconds is the amount of time of 1 frame in a 30FPS game, so in theory we need a low-latency of 16ms.< (emulation time for a frame not included of course) and i think this is not possible without exclusive control over the soundcard.

No. We need 0 ms latency for frame_delay. And also 1e3/30 = ~33.3.
« Last Edit: April 01, 2016, 07:51:36 am by intealls »

big10p

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 698
  • Last login:May 01, 2023, 01:46:23 pm
  • Mmmm, arcade classics!
Re: GM ASIO ALPHA 0.171
« Reply #437 on: April 01, 2016, 07:53:42 am »
In terms of configuration, I am using a new but relatively modestly specced PC (G4400 Pentium CPU, Asus Z170M-Plus mobo, 16GB RAM, Asus HD 5450 1 GB video card, Win 7 x64) and can safely set all the latancy options to the lowest (audio latancy 0.1 in mame.ini and sample size = 64 in asio4all) without any degredation in performance.
Sorry to interrupt the discussion briefly - just wondered about the audio_latency setting in MAME.INI. I assumed this setting was redundant/unused when using ASIO GM? If not, should I be setting it to 0.1, as above?

intealls

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 318
  • Last login:Yesterday at 07:40:19 am
  • I want to build my own arcade controls!
Re: GM ASIO ALPHA 0.171
« Reply #438 on: April 01, 2016, 07:55:00 am »
In terms of configuration, I am using a new but relatively modestly specced PC (G4400 Pentium CPU, Asus Z170M-Plus mobo, 16GB RAM, Asus HD 5450 1 GB video card, Win 7 x64) and can safely set all the latancy options to the lowest (audio latancy 0.1 in mame.ini and sample size = 64 in asio4all) without any degredation in performance.
Sorry to interrupt the discussion briefly - just wondered about the audio_latency setting in MAME.INI. I assumed this setting was redundant/unused when using ASIO GM? If not, should I be setting it to 0.1, as above?

If you aren't getting over-/underruns with 0.1, it should be fine.

Calamity

  • Moderator
  • Trade Count: (0)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 7414
  • Last login:April 10, 2024, 02:02:31 pm
  • Quote me with care
Re: GM ASIO ALPHA 0.171
« Reply #439 on: April 01, 2016, 11:02:58 am »
A native WASAPI implementation could be a good, clean solution

WASAPI would be cool although my suggestion was ASIO without Steinberg's headers, so you could actually distribute the resulting binary. A reverse-engineered asio.h header named "Vestige" is mentioned in many places. However I see the PortAudio approach more feasible.

Quote
MAME resamples the audio, but this resampler does not offer the granularity that we need

If the granularity problem is related to the m_speed variable being an integer, I guess this could be easily changed to use a float or any other way that provides an arbitrary degree of accuracy. From the top of my head, m_speed is just used in a couple of places, one being the final sound resampler, so the possibility of breaking something is limited. Although I'm probably missing the issue.

With regards to speed deviations due to dotclock's own granularity with syncrefresh enabled, this might be a minor issue in the future, once a real dotclock look-up table is implemented in Switchres, for those willing to take the time to build the dotclock table for their card and use super resolutions.
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