How do I add another MAME emulator Version?

Welcome Page Forums RetroPie Project Everything else related to the RetroPie Project How do I add another MAME emulator Version?

This topic contains 15 replies, has 2 voices, and was last updated by Profile photo of caver01 caver01 1 year, 3 months ago.

Viewing 16 posts - 1 through 16 (of 16 total)
  • Author
  • #121071
    Profile photo of caver01

    I am using ADVMAME, and I love the flexibility of the runcommand to allow me to pick 0.94 and 1.4, but I need to add 1.2. Is it possible to add another folder to the advance-mame structure? I understand the config folder will also have to accommodate this, but what else do I need to change to enable a third advancemame in the runcommand?

    Profile photo of petrockblog

    why do you need 1.2 over 1.4 ?

    Profile photo of caver01

    With 1.2 I can configure 1280×1024 resolution for vector games.

    Profile photo of petrockblog

    Should be doable with 1.4 then also, but I thought it was set to 640×480 when using fb driver with our current modifications.

    What config were you using?

    Profile photo of caver01

    Glad you asked! I have tried for weeks to get 1.4 to play vector games at my native resolution with no luck. Last year, after many late nights with PiPlay, I was able to get native resolution on Vector games using 1.2 and this config. So, with RetroPie I finally tried a test with the pre-compiled advmame 1.2 executable from my other SD card (running PiPlay) and simply replaced the advmame .94 binary as a test. This was a feeble attempt at leveraging at least some runcommand flexibility–use 1.4 for most stuff, but for vector games, I could select .94 and know that it was actually running the 1.2 advmame I copied over.

    My .94 swap is kludgy, and I don’t get much traction with other posts on this topic which is why I did the test. When it worked, I figured maybe I could just get 1.2 setup properly with runcommand support. I am still willing to try suggestions, but I have already tried this config (corrected the paths) to no avail in 1.4. Could there be a difference in the retropie-compiled versions of 1.4 that specifically prevents 1280×1024? On a previous post, you seemed to suggest thats the case. But, with the coming changes possibly to the default resolutions in RetroPie, I am definitely interested in making this work well. Once you have seen the crisp vector lines, it’s hard to go back to blurry 640×480 for vector classics.

    Here’s my 1.2 config (game-specific input mapping removed):

    display_mode auto
    display_adjust generate_yclock
    device_video_clock 60-150 / 30-80 / 60
    device_video_format 33630 0.814815 0 0.111111 0.0740741 0.914286 0.0196429 0.00357143 0.0625
    device_video_modeline FULLSCREEN 105.37 1280 1336 1512 1568 1024 1046 1050 1120 -hsync -vsync
    debug_crash no
    debug_rawsound no
    debug_speedmark no
    device_alsa_device default
    device_alsa_mixer channel
    device_color_bgr15 no
    device_color_bgr16 yes
    device_color_bgr24 no
    device_color_bgr32 no
    device_color_bgr8 no
    device_color_palette8 no
    device_color_yuy2 no
    device_joystick auto
    device_keyboard raw
    device_mouse raw
    device_raw_firstkeyhack no
    device_raw_mousedev[0] /dev/input/mouse0
    device_raw_mousedev[1] /dev/input/mouse1
    device_raw_mousedev[2] /dev/input/mouse2
    device_raw_mousedev[3] auto
    device_raw_mousetype[0] ps2
    device_raw_mousetype[1] ps2
    device_raw_mousetype[2] ps2
    device_raw_mousetype[3] ps2
    device_sdl_samples 512
    device_sound auto
    device_video auto
    device_video_cursor auto
    device_video_doublescan yes
    device_video_fastchange no
    device_video_interlace yes
    device_video_output auto
    device_video_singlescan yes
    dir_artwork /home/pi/RetroPie/roms/mame-advmame/artwork:/opt/retropie/configs/mame-advmame/artwork
    dir_diff /home/pi/.advance/diff
    dir_hi /home/pi/.advance/hi
    dir_image /home/pi/.advance/image:/opt/retropie/emulators/advmame/0.94.0/share/advance/image
    dir_inp /home/pi/.advance/inp
    dir_memcard /home/pi/.advance/memcard
    dir_nvram /home/pi/.advance/nvram
    dir_rom /home/pi/RetroPie/roms/mame-advmame
    dir_sample /home/pi/RetroPie/roms/mame-advmame/samples
    dir_snap /home/pi/.advance/snap
    dir_sta /home/pi/.advance/sta
    display_artwork_backdrop yes
    display_artwork_bezel no
    display_artwork_crop yes
    display_artwork_overlay yes
    display_aspectx 5
    display_aspecty 4
    display_brightness 1
    display_buffer yes
    display_color auto
    display_expand 1
    display_flipx no
    display_flipy no
    display_frameskip 0.5
    display_gamma 1.0
    display_interlaceeffect none
    display_magnify 4
    display_pausebrightness 0.6
    display_resize fractional
    display_resizeeffect filter
    display_restore yes
    display_rgbeffect triad6dot
    display_rol no
    display_ror no
    display_scanlines no
    display_skipcolumns auto
    display_skiplines auto
    display_vsync yes
    vector/display_mode FULLSCREEN
    vector/display_translucency yes
    vector/display_intensity 3.0
    vector/display_antialias yes
    vector/display_beam 1.2
    vector/display_flicker .1
    vector/display_adjust none
    vector/display_magnify 2
    vector/display_rgbeffect none
    vector/display_resizeeffect none
    vector/device_video_output fullscreen
    vector/display_resize fractional
    vertical/display_ror yes
    input_hotkey yes
    input_idleexit 0
    input_map[coin5] auto
    input_map[coin6] auto
    input_map[coin7] auto
    input_map[coin8] auto
    input_map[event10] auto
    input_map[event11] auto
    input_map[event12] auto
    input_map[event13] auto
    input_map[event14] auto
    input_map[event1] auto
    input_map[event2] auto
    input_map[event3] auto
    input_map[event4] auto
    input_map[event5] auto
    input_map[event6] auto
    input_map[event7] auto
    input_map[event8] auto
    input_map[event9] auto
    input_map[p1_dialx] mouse[0,x]
    input_map[p1_dialy] auto
    input_map[p1_lightgunx] auto
    input_map[p1_lightguny] auto
    input_map[p1_mousex] auto
    input_map[p1_mousey] auto
    input_map[p1_paddlex] auto
    input_map[p1_paddley] auto
    input_map[p1_pedalbrake] auto
    input_map[p1_pedalgas] auto
    input_map[p1_pedalother] auto
    input_map[p1_stickx] auto
    input_map[p1_sticky] auto
    input_map[p1_stickz] auto
    input_map[p1_trackballx] mouse[0,x] mouse[1,x] mouse[2,x]
    input_map[p1_trackbally] mouse[0,y] mouse[1,y] mouse[2,y]
    input_map[p2_dialx] -mouse[0,y]
    input_map[p2_dialy] auto
    input_map[p2_lightgunx] auto
    input_map[p2_lightguny] auto
    input_map[p2_mousex] auto
    input_map[p2_mousey] auto
    input_map[p2_paddlex] auto
    input_map[p2_paddley] auto
    input_map[p2_pedalbrake] auto
    input_map[p2_pedalgas] auto
    input_map[p2_pedalother] auto
    input_map[p2_stickx] auto
    input_map[p2_sticky] auto
    input_map[p2_stickz] auto
    input_map[p2_trackballx] mouse[0,x] mouse[1,x] mouse[2,x]
    input_map[p2_trackbally] mouse[0,y] mouse[1,y] mouse[2,y]
    input_map[p3_dialx] auto
    input_map[p3_dialy] auto
    input_map[p3_lightgunx] auto
    input_map[p3_lightguny] auto
    input_map[p3_mahjong_a] auto
    input_map[p3_mahjong_b] auto
    input_map[p3_mahjong_bet] auto
    input_map[p3_mahjong_c] auto
    input_map[p3_mahjong_chance] auto
    input_map[p3_mahjong_chi] auto
    input_map[p3_mahjong_d] auto
    input_map[p3_mahjong_double_up] auto
    input_map[p3_mahjong_e] auto
    input_map[p3_mahjong_f] auto
    input_map[p3_mahjong_flip_flop] auto
    input_map[p3_mahjong_g] auto
    input_map[p3_mahjong_h] auto
    input_map[p3_mahjong_i] auto
    input_map[p3_mahjong_j] auto
    input_map[p3_mahjong_k] auto
    input_map[p3_mahjong_kan] auto
    input_map[p3_mahjong_l] auto
    input_map[p3_mahjong_m] auto
    input_map[p3_mahjong_n] auto
    input_map[p3_mahjong_pon] auto
    input_map[p3_mahjong_reach] auto
    input_map[p3_mahjong_ron] auto
    input_map[p3_mahjong_score] auto
    input_map[p3_mousex] auto
    input_map[p3_mousey] auto
    input_map[p3_paddlex] auto
    input_map[p3_paddley] auto
    input_map[p3_pedalbrake] auto
    input_map[p3_pedalgas] auto
    input_map[p3_pedalother] auto
    input_map[p3_stickx] auto
    input_map[p3_sticky] auto
    input_map[p3_stickz] auto
    input_map[p3_trackballx] auto
    input_map[p3_trackbally] auto
    input_map[p4_dialx] auto
    input_map[p4_dialy] auto
    input_map[p4_lightgunx] auto
    input_map[p4_lightguny] auto
    input_map[p4_mahjong_a] auto
    input_map[p4_mahjong_b] auto
    input_map[p4_mahjong_bet] auto
    input_map[p4_mahjong_c] auto
    input_map[p4_mahjong_chance] auto
    input_map[p4_mahjong_chi] auto
    input_map[p4_mahjong_d] auto
    input_map[p4_mahjong_double_up] auto
    input_map[p4_mahjong_e] auto
    input_map[p4_mahjong_f] auto
    input_map[p4_mahjong_flip_flop] auto
    input_map[p4_mahjong_g] auto
    input_map[p4_mahjong_h] auto
    input_map[p4_mahjong_i] auto
    input_map[p4_mahjong_j] auto
    input_map[p4_mahjong_k] auto
    input_map[p4_mahjong_kan] auto
    input_map[p4_mahjong_l] auto
    input_map[p4_mahjong_m] auto
    input_map[p4_mahjong_n] auto
    input_map[p4_mahjong_pon] auto
    input_map[p4_mahjong_reach] auto
    input_map[p4_mahjong_ron] auto
    input_map[p4_mahjong_score] auto
    input_map[p4_mousex] auto
    input_map[p4_mousey] auto
    input_map[p4_paddlex] auto
    input_map[p4_paddley] auto
    input_map[p4_pedalbrake] auto
    input_map[p4_pedalgas] auto
    input_map[p4_pedalother] auto
    input_map[p4_stickx] auto
    input_map[p4_sticky] auto
    input_map[p4_stickz] auto
    input_map[p4_trackballx] auto
    input_map[p4_trackbally] auto
    input_map[safequit] auto
    input_map[service_coin5] auto
    input_map[service_coin6] auto
    input_map[service_coin7] auto
    input_map[service_coin8] auto
    input_map[ui_toggle_ui] auto
    input_steadykey no
    lcd_server none
    lcd_speed 4
    lcd_timeout 500
    misc_bios default
    misc_cheat no
    misc_cheatfile cheat.dat
    misc_difficulty none
    misc_eventdebug no
    misc_eventfile event.dat
    misc_freeplay no
    misc_hiscorefile hiscore.dat
    misc_lang none
    misc_languagefile english.lng
    misc_mutedemo no
    misc_quiet yes
    misc_safequit yes
    misc_smp no
    misc_timetorun 0
    record_sound no
    record_sound_time 15
    record_video no
    record_video_interleave 2
    record_video_time 15
    script_led1 on(kdb, 0b1); wait(!event()); off(kdb, 0b1);
    script_led2 on(kdb, 0b10); wait(!event()); off(kdb, 0b10);
    script_turbo while (event()) { toggle(kdb, 0b100); delay(100); } off(kdb, 0b100);
    script_video wait(!event()); set(kdb, 0);
    sound_adjust auto
    sound_equalizer_highvolume 0
    sound_equalizer_lowvolume 0
    sound_equalizer_midvolume 0
    sound_latency 0.05
    sound_mode auto
    sound_normalize no
    sound_samplerate 44100
    sound_samples yes
    sound_volume 0
    sync_fps auto
    sync_resample auto
    sync_speed 1
    sync_startuptime auto
    sync_turbospeed 3
    ui_color[help_other] 000000 808080
    ui_color[help_p1] 000000 ffff00
    ui_color[help_p2] 000000 00ff00
    ui_color[help_p3] 000000 ff0000
    ui_color[help_p4] 000000 00ffff
    ui_color[interface] 000000 ffffff
    ui_color[select] 000000 afffff
    ui_color[tag] 247ef0 ffffff
    ui_font auto
    ui_fontsize auto
    ui_helpimage auto
    ui_translucency 0.8
    input_map[p1_up] keyboard[0,up]
    input_map[p1_down] keyboard[0,down]
    input_map[p1_right] keyboard[0,right]
    input_map[p1_left] keyboard[0,left]
    input_map[p1_button1] keyboard[0,lcontrol]
    input_map[p1_button2] keyboard[0,lalt]
    input_map[p1_button3] keyboard[0,space]
    input_map[p1_button4] keyboard[0,lshift]
    input_map[p1_button5] keyboard[0,z]
    input_map[p1_button6] keyboard[0,x]
    input_map[p2_up] keyboard[0,r]
    input_map[p2_down] keyboard[0,f]
    input_map[p2_right] keyboard[0,g]
    input_map[p2_left] keyboard[0,d]
    input_map[p2_button1] keyboard[0,a]
    input_map[p2_button2] keyboard[0,s]
    input_map[p2_button3] keyboard[0,q]
    input_map[p2_button4] keyboard[0,w]
    input_map[p2_button5] keyboard[0,i]
    input_map[p2_button6] keyboard[0,k]
    input_map[p1_doubleleft_up] keyboard[0,j]
    input_map[p1_doubleleft_down] keyboard[0,l]
    input_map[p1_doubleleft_right] keyboard[0,i]
    input_map[p1_doubleleft_left] keyboard[0,k]
    input_map[p1_doubleright_up] keyboard[0,up]
    input_map[p1_doubleright_down] keyboard[0,down]
    input_map[p1_doubleright_right] keyboard[0,right]
    input_map[p1_doubleright_left] keyboard[0,left]
    vertical/input_dipswitch[cabinet] cocktailinvaderl/input_dipswitch[cabinet] cocktail
    292x240/display_rgbeffect triadstrong6dot
    320x224/display_rgbeffect triadstrong6dot
    512x480/display_rgbeffect triadstrong6dot
    292x240x60/display_rgbeffect triadstrong6dot
    292x240x60/display_magnify 3
    292x240/display_magnify 3
    240x248/display_rgbeffect triadstrong6dot
    240x248/display_magnify 3
    224x288/display_rgbeffect triadstrong6dot
    224x288/display_magnify 3
    294x239/display_rgbeffect triadstrong6dot
    294x239/display_magnify 3
    336x240/display_rgbeffect triadstrong3dot
    336x240/display_magnify 3
    512x480x30/display_rgbeffect none
    512x480x30/display_resize integer
    512x480x30/display_magnify 1
    292x240/display_mode generate-quad
    292x240/display_resize mixed
    512x480x30/display_mode generate
    512x480x30/display_vsync no
    224x256/display_mode generate-quad
    224x256/display_rgbeffect triadstrong6dot
    224x256/display_magnify 3
    384x224x60/display_mode generate
    384x224x60/display_rgbeffect none
    400x254x53/display_mode generate
    400x254x53/display_rgbeffect none
    480x464x60/display_mode generate-double
    480x464x60/display_resizeeffect filter
    480x464x60/display_rgbeffect triadstrong3dot
    224x288x60/display_resize mixed
    224x288/display_resize mixed
    224x256x60/display_rgbeffect triad6dot
    input_map[p2_doubleright_up] keyboard[0,u]
    input_map[p2_doubleright_down] keyboard[0,v]
    input_map[p2_doubleright_left] keyboard[0,y]
    input_map[p2_doubleright_right] keyboard[0,n]
    input_map[p2_doubleleft_up] keyboard[0,r]
    input_map[p2_doubleleft_down] keyboard[0,f]
    input_map[p2_doubleleft_left] keyboard[0,d]
    input_map[p2_doubleleft_right] keyboard[0,g]
    input_map[p3_up] keyboard[1,scan0]
    input_map[p3_down] keyboard[0,k]
    input_map[p3_left] keyboard[0,j]
    input_map[p3_right] keyboard[0,l]
    input_map[p3_button1] keyboard[0,rcontrol]
    input_map[p3_button2] keyboard[0,rshift]
    input_map[p3_button3] keyboard[0,enter]
    input_map[p3_button4] keyboard[0,o]
    input_map[p4_up] keyboard[1,scan0]
    input_map[p4_down] keyboard[0,n]
    input_map[p4_left] keyboard[0,v]
    input_map[p4_right] keyboard[0,u]
    input_map[p4_button1] keyboard[0,b]
    input_map[p4_button2] keyboard[0,e]
    input_map[p4_button3] keyboard[0,h]
    input_map[p4_button4] keyboard[0,m]
    input_map[p4_button10] keyboard[0,down]
    input_map[ui_up] keyboard[0,up] or keyboard[0,i] or keyboard[0,up]
    input_map[ui_down] keyboard[0,down] or keyboard[0,k] or keyboard[0,down]
    input_map[ui_left] keyboard[0,left] or keyboard[0,j] or keyboard[0,left]
    input_map[ui_right] keyboard[0,right] or keyboard[0,l] or keyboard[0,right]
    input_map[ui_select] keyboard[0,enter] or keyboard[0,1] or keyboard[0,3]
    vertical/input_map[p1_right] keyboard[0,l]
    vertical/input_map[p1_left] keyboard[0,j]
    vertical/input_map[p1_up] keyboard[0,i]
    vertical/input_map[p1_down] keyboard[0,k]
    vertical/input_map[p1_button1] keyboard[0,rcontrol]
    vertical/input_map[p1_button2] keyboard[0,rshift]
    vertical/input_map[p1_button3] keyboard[0,enter]
    vertical/input_map[p1_button4] keyboard[0,o]
    vertical/input_map[p2_right] keyboard[0,u]
    vertical/input_map[p2_left] keyboard[0,v]
    vertical/input_map[p2_up] keyboard[0,y]
    vertical/input_map[p2_down] keyboard[0,n]
    vertical/input_map[p2_button1] keyboard[0,b]
    vertical/input_map[p2_button2] keyboard[0,e]
    vertical/input_map[p2_button3] keyboard[0,h]
    vertical/input_map[p2_button4] keyboard[0,m]
    vertical/input_map[start1] keyboard[0,3]
    vertical/input_map[start2] keyboard[0,4]
    vertical/input_map[coin1] keyboard[0,7] or keyboard[0,8]
    Profile photo of petrockblog

    Are you able to provide a smaller config that works based off the default shipped config with just the required changes ? For example in your config above you have things like “device_video_clock” which don’t get used with our version of advmame – it will be easier for me to work with then.

    Profile photo of petrockblog

    BTW advmame 0.94 / 1.2 were reworked in March 2015 so the modeline definitions were not needed (they make no sense on the RPI), and it automatically generates some built in modes based off the game resolution. Is it possible the advmame you are using is older than that as I would have thought 1.2 and 1.4 would behave the same.

    Profile photo of caver01

    Both good questions. The 1.2 came from the PiPlay image. I didn’t compile it. As for a smaller config based on a default– I can use 1.2 to generate a default and work from there, but the whole point of this is that I never could get 1.4 run in high resolution by adding any of these config settings. It’s possible I have configs that don’t have any effect–I tried all kinds of ideas before I got it working. I expect this exercise may be easier if I start taking away lines until it stops working.

    Profile photo of petrockblog

    ok that is completely different from our 1.2 then and you will probably have the same problem (but it has the problem you have to set up modelines, and there are a few cases where they cause problems as it thinks a certain mode won’t be supported). currently it isn’t possible to have higher res vector games but I may tweak this when I get a chance (requires some additional code)

    Profile photo of petrockblog

    you can add additional emulators in /opt/retropie/configs/mame-advmame/emulators.cfg btw

    Profile photo of petrockblog

    I have made some changes to the advmame emulators – the vector width and height is now configurable in the config file – please give it a test

    you need to update retropie-setup and re-install advmame from binary. then you can configure the width/height with the option “display_width” and “display_height” (they default to 640 / 480)

    Profile photo of caver01

    Fantastic! I can’t wait to try it. Thanks so much. I will let you know. I assume this is for 1.4?

    Profile photo of petrockblog

    0.94 and 1.4

    Profile photo of caver01

    Even better!

    So, I tried both and they work great. I set my width and height in the configs as you described. It preserved the game’s aspect ratio (I think it was 1280×960) which is perfect–exactly what the other version of 1.2 was doing with the proper modelines and so on. I adjusted my intensity up a bit to 1.75 and set the flicker to 15. This is right where I like it, and it looks very nice, and crisp. All of the lines are native-pixel-smooth. I tested with asteroids deluxe.

    One thing I did notice is that if you increase the beam width (I don’t like to do that, but to each their own) single points (shots, asteroid particles) render as vertical lines, not upsized dots. I don’t remember if it was like that before or not, since I use a size of 1, but it’s worth a mention.

    This is great. Thank you so much! About the only thing better would be the addition of glow effect like the old AAE emulator, but this is much better than being stuck at 640×480.

    Is this limitation also a factor with raster games? There are RGB effects 3-triad, 6-triad, and scanlines that look better at higher resolution too–not for vector of course, but for other games. If not, that’s fine. I am happy with clean vector!

    Profile photo of petrockblog

    if you want scanlines etc (and shaders to make the picture look like a crt) you should try a libretro mame emulator.

    Profile photo of caver01

    Thanks. I am planning to do that. It’s a lot to learn, but I am getting there.

Viewing 16 posts - 1 through 16 (of 16 total)

Forums are currently read only - please visit the new RetroPie forums at

Skip to toolbar