Showing posts with label advmenu. Show all posts
Showing posts with label advmenu. Show all posts

Tuesday, November 5, 2013

Emulator choice and sample Advancemenu configuration file


Emulators

My emulator choices were constrained by a couple of things. Firstly, I had downloaded a heap of ROMs (from a disk put out in 1998!) so they needed to work with them. Secondly, there aren't that many emulators for Linux (especially for NeoGeo!). 

I was considering getting Space Ace and Dragon's Lair, old school laser disc games, but I haven't added them yet. I have the ROM files, but not the video files. It could be fun creating a video disc game of my own ( there are editors out there, I don't think it would be hard) but i lack the time and inclination at the moment.-Daphne is the emulator for those games. Here is how to get it to work with Advancemenu

For my other ROMs, there are other emulators which I could have used, especially for the NES, which has quite a variety, but as I said before, these are the ones which worked with my roms. 

So I have: 
Gens for Sega Megadrive (aka Genesis)
Osmose for Sega Master System
MAME for arcade machines
fceux for NES games
Gngeo for Neo Geo games

Frontends
I'm using this in a cabinet, with a heap of roms and emulators all mixed together, so I need a frontend to launch the different games, and keep everything organised. I've opted for Advancemenu, though there are loads of other frontends (a couple of lists are here and here) which are up to the task. Advancemenu can display the games how I want (a list on the left, screenshot on the right), and works with all of the emulators I want to use. Effectively, you could use advancemenu as a launcher for just about anything - movies, music, whatever - not just games.

Configuration files

Advancemenu (download my config here, includes comments)

My Advance menuconfig has the following features:
*Multiple emulators, with one emulator per screen.
*Custom keys mapped to page through ROM lists (one emulator per page).
*A 'utility' section, for shutdowns, restarts and verifying mame roms.
*Preview screenshots of games.
*8bit tunes as background music for the menu.

The music directory and mame roms directories are on a usb stick, which gets loaded when the operating system starts up.  I used ls-by-uuid to get the uuid of the usb stick, and added the following line to my /etc/fstab to load it where I wanted each time:

 UUID=dac3b911-d2e7-462d-b0cf-d19aa4d1fa48 /Roms/MAME/ fat32  auto  0       0
Utility directory
This has 3 scripts, one to shutdown the computer, one to restart the computer, and one to verify the mame roms. To do the shutdown and restarts, I had to add the user running Advancemenu to /etc/shutdown.allow.

Some configuration tips
You can add BIOS files to emulators, so they can run more games, for example adding the Naomi BIOS to MAME allows you to play Naomi based games. I put them in a seperate BIOS folder, and add that to the ROM search path in the emulator config file. That way the emulator can read the file, but Advancemenu doesn't add the BIOS files to its menu.  
All of the emulators I've used allow for multiple paths to the files.

Sample config file for AdvanceMenu, with comments

So it seems I can't upload text files to blogger (who knew!) so I've just dumped my Advmenu config as a blog post.



#updated by Zenoscope
config restore_at_exit
device_alsa_device default
device_alsa_mixer channel
device_color_bgr15 yes
device_color_bgr16 yes
device_color_bgr24 yes
device_color_bgr32 yes
device_color_bgr8 yes
device_color_palette8 yes
device_color_yuy2 yes
device_joystick none
device_keyboard auto
device_mouse none
device_raw_firstkeyhack no
device_raw_mousedev[0] auto
device_raw_mousedev[1] auto
device_raw_mousedev[2] auto
device_raw_mousedev[3] auto
device_raw_mousetype[0] pnp
device_raw_mousetype[1] pnp
device_raw_mousetype[2] pnp
device_raw_mousetype[3] pnp
device_sdl_samples 512
#updated by Zenoscope
#otherwise conflicts with what the emulators are using
device_sound oss
device_video auto
device_video_cursor auto
device_video_doublescan yes
device_video_fastchange no
device_video_interlace yes
#updated bu Zenoscope - fullscreen Advmenu
#device_video_output fullscreen
device_video_output auto
device_video_overlaysize 1024
device_video_singlescan yes
difficulty none
display_brightness 1
display_gamma 1
display_orientation
display_restoreatexit yes
display_restoreatgame yes
#updated by Zenoscope
display_size 800

#The emulators AdvanceMAME, AdvanceMESS, MAME, xmame, DMAME, DMESS and DRAINE
# are directly supported. All other emulators require "generic"
#updated by Zenoscope
# Xmame Arcade emulator

emulator "xmame" generic "/usr/local/bin/xmame.x11"
emulator_roms "xmame" "/Roms/MAME/"
emulator_roms_filter "xmame" "*.zip"
emulator_altss "xmame" "/Roms/MAME/snaps"

#Gens Megadrive/Genesis emulator
emulator "megadrive" generic "/usr/local/bin/gens"                      
emulator_roms "megadrive" "/Roms/SegaMegaDrive/roms/"                                       
emulator_roms_filter "megadrive" "*.zip"                                      
emulator_altss "megadrive" "/Roms/SegaMegaDrive/snaps"

#Mastersystem emulator
emulator "SegaMS" generic "/usr/bin/osmose"
emulator_roms "SegaMS" "/Roms/SegaMS/roms/"
emulator_roms_filter "SegaMS" "*.zip"
emulator_altss "SegaMS" "/Roms/SegaMS/snaps"

#NES emulator
emulator "NES" generic "/usr/bin/fceu -opengl 0"
emulator_roms "NES" "/Roms/NES/roms/"
emulator_roms_filter "NES" "*.zip"
emulator_altss "NES" "/Roms/NES/snaps"

#SNES
emulator "SNES" generic "/usr/bin/znes"
emulator_roms "SNES" "/Roms/SNES/roms/"
emulator_roms_filter "SNES" "*.zip"
emulator_altss "gens" "/Roms/SNES/snaps"

#NeoGeo
emulator "NeoGeo" generic "/usr/bin/neocd"
emulator_roms "NeoGeo" "/Roms/NeoGeo/roms/"
emulator_roms_filter "NeoGeo" "*.zip"
emulator_altss "NeoGeo" "/Roms/NeoGeo/snaps"

#Daphne a laserdisk game emulator, needs the video files to go as well.
#emulator "daphne" generic "/usr/local/bin/*****"
#emulator_roms "daphne" "/Roms/Daphne/roms/"
#emulator_roms_filter "daphne" "*.zip"
#emulator_altss "daphne" "/Roms/Daphne/snaps"

#These ones need OpenGL to go.

#N64 emulator
# needs open GL drivers                                                                 
#emulator "N64" generic "/usr/local/mupen64plus-1.5/mupen64plus"                                  
#emulator_roms "N64" "/Roms/N64/roms/"                                         
#emulator_roms_filter "N64" "*.zip"                                            
#emulator_altss "N64" "/Roms/N64/snaps"

#Dreamcast
#emulator "dreamcast" generic "/usr/bin/lxdream"
#emulator_roms "dreamcast" "/Roms/dreamcast/roms/"
#emulator_roms_filter "dreamcast" "*.zip"
#emulator_altss "dreamcast" "/Roms/dreamcast/snaps"

#Sega Saturn
#emulator "saturn" generic "/usr/local/bin/saturn"
#emulator_roms "saturn" "/Roms/saturn/roms/"
#emulator_roms_filter "saturn" "*.zip"
#emulator_altss "saturn" "/Roms/saturn/snaps"

#psx
#emulator "psx" generic "/usr/local/bin/gens"
#emulator_roms "psx" "/Roms/psx/roms/"
#emulator_roms_filter "psx" "*.zip"
#emulator_altss "psx" "/Roms/psx/snaps"

#menu organisation stuff
#mode list
#preview snap

event_alpha yes
event_assign up up or 8_pad
event_assign down down or 2_pad
event_assign left left or 4_pad
event_assign right right or 6_pad
event_assign enter enter or enter_pad
event_assign esc esc
event_assign space space
event_assign home home
event_assign end end
event_assign pgup pgup
event_assign pgdn pgdn
event_assign del del
event_assign ins insert
event_assign shutdown lcontrol esc
event_assign mode tab
event_assign help f1
event_assign group f2
event_assign type f3
event_assign exclude f4
event_assign sort f5
event_assign setgroup f9
event_assign settype f10
event_assign runclone f12
event_assign command f8
event_assign menu backquote or backslash
event_assign emulator f6
event_assign rotate 0_pad
event_assign lock scrlock
event_assign preview space
event_assign mute period_pad
event_mode fast
event_repeat 500 50
#group "Very Good"
#group "Good"
#group "Bad"
#group ""
icon_space 43
idle_screensaver 60 10
idle_screensaver_preview snap
idle_start 0 0
include
input_hotkey yes
lock no
menu_base 0
menu_rel 0
merge differential
misc_exit normal
misc_quiet no
#updated by Zenoscope
mode_skip full, full_mixed, text, list_mixed, tile_small, tile_normal, tile_big, tile_enormous, tile_giant, tile_icon, tile_marquee
mouse_delta 100
#preview_default none
#preview_default_cabinet none
#preview_default_flyer none
#preview_default_icon none
#preview_default_marquee none
#preview_default_snap none
#preview_default_title none
#preview_expand 1.15
sort parent
sound_background_begin none
sound_background_end none
sound_background_loop default
sound_background_loop_dir "/Roms/SystemFiles/Music"
sound_background_start none
sound_background_stop none
sound_buffer 1
sound_foreground_begin none
sound_foreground_end none
sound_foreground_key default
sound_foreground_start default
sound_foreground_stop default
sound_latency 0.1
sound_samplerate 44100
sound_volume -3
#ui_background none
#updated by Zenoscope
ui_background /Roms/SystemFiles/Menu_Graphics/background.png
#updated by Zenoscope
ui_bottombar no
ui_clip single
ui_color help 000000 ffffff
ui_color help_tag 247ef0 ffffff
ui_color submenu_bar 247ef0 ffffff
ui_color submenu_item 000000 ffffff
ui_color submenu_item_select 000000 afffff
ui_color submenu_hidden 808080 ffffff
ui_color submenu_hidden_select 808080 afffff
ui_color menu_item 000000 ffffff
ui_color menu_hidden 808080 ffffff
ui_color menu_tag 247ef0 ffffff
ui_color menu_item_select 000000 afffff
ui_color menu_hidden_select 808080 afffff
ui_color menu_tag_select 247ef0 afffff
ui_color bar 000000 ffffff
ui_color bar_tag 247ef0 ffffff
ui_color bar_hidden 808080 ffffff
ui_color grid 247ef0 ffffff
ui_color backdrop 000000 808080
ui_color icon ffffff ffffff
ui_color cursor 808080 ffffff
ui_command_error Error running the command
ui_command_menu Command...
ui_command "shut down" "/usr/bin/shutdown"
ui_console no
#updated by Zenoscope
#ui_exit none
ui_exit normal
#updated by Zenoscope
ui_font "/Roms/SystemFiles/Fonts/freaky-fonts_liquid-kidz/lqdkdz_nospace.ttf"
ui_fontsize auto
ui_game snap
ui_gamemsg "Loading"
ui_help none
ui_menukey yes
#updated by Zenoscope (all skip configs)
ui_skipbottom 20
ui_skipleft 20
ui_skipright 20
ui_skiptop 90
ui_startup none
ui_topbar no
ui_translucency 0.6
group_include ""
group_include "Good"
type_include ""
type_include "Application"
type_include "Arcade"
type_include "Bet 'em Up"
type_include "Breakout"
type_include "Computer"
type_include "Console"
type_include "Fight"
type_include "Filler"
type_include "Flipper"
type_include "Gun"
type_include "Puzzle"
type_include "RPG"
type_include "Racing"
type_include "Shot 'em Up"
type_include "Sport"

emulator_include "xmame"
xmame/mode tile_normal
xmame/preview snap
xmame/sort parent

emulator_include "megadrive"
megadrive/mode tile_normal
megadrive/preview snap
megadrive/sort parent

emulator_include "SegaMS"
SegaMS/mode tile_normal
SegaMS/preview snap
SegaMS/sort parent

emulator_include "SNES"
SNES/mode tile_normal
SNES/preview snaps
SNES/sort parent

emulator_include "NES"
NES/mode tile_normal
NES/preview snaps
NES/sort parent

emulator_include "neogeo"
neogeo/mode tile_normal
neogeo/preview snaps
neogeo/sort parent

#emulator_include "psx"
#psx/mode tile_normal
#psx/preview snaps
#emulator_include "dreamcast"
#psx/mode tile_normal
#psx/preview snaps
#emulator_include "daphne"
#psx/mode tile_normal
#psx/preview snaps
#emulator_include "N64"
#psx/mode tile_normal
#psx/preview snaps

#menu organisation stuff

group_include ""
type_include ""
xmame/group_include "Good"
xmame/type_include ""
emulator_include "MAME"
group ""
group "Good"
type ""


group ""
group "Good"
type ""
type "Application"
type "Arcade"
type "Bet 'em Up"
type "Breakout"
type "Computer"
type "Console"
type "Fight"
type "Filler"
type "Flipper"
type "Gun"
type "Puzzle"
type "Racing"
type "RPG"
type "Shot 'em Up"
type "Sport"

Tuesday, October 22, 2013

Choosing an operating system for running MAME, NES, Sega Master System, NEOGEO and Sega Megadrive emulators

Choosing an Operating System for running the Emulators
 
When starting out with the arcade machine, I had a look for some Linux Live CD distributions, as well as considering other operating systems: DOS (ms dos, dr-dos etc...) and even Windows. I had considered using Windows as some of the front ends look really good, like mamewah. But I wanted to do this arcade cabinet on the cheap.

I thought ms-dos might be a bit old, and possibly some emulators may not work with it, so I gave that a miss. However, one advantage of DOS would be it would be quick to load, and have low memory usage for the operating system, leaving more for the emulators.

 Because I am familiar  with Linux, I thought I'd give Linux a go. Its free, and a live distribution would theoretically take less time to set up than doing it from scratch. Plus, I knew nothing about video game emulators, and a live distribution would help me out in that respect.

 I couldn't find the KnoppixMame Live CD on the Knoppix website(but it is here! sigh), and I didn't know enough about emulators in order to set up a Debian net-install (after trying on a virtual machine), so I ended up using Puppy Arcade in a virtual machine to test it out. It worked really well, and out of the box, it was almost fully set up.

Puppy Arcade (based on Puppy Linux) is really good. It has loads of emulators and front-ends. There are supplementary packages (http://ppm.scottjarvis.com/ and http://murga-linux.com/puppy/viewtopic.php?p=488932#488932) which add in extra or updated packages, and I found it really easy to set up. However, I had a few issues with it. The most recent version of Puppy Arcade is version 10, which was last updated about 2010(?), so the emulators that come with it may be out of date.

There were a couple of old emulators (fceux for NES, and MAME for arcade) which wouldn't do full screen. There are updated versions which would do full screen, but I either couldn't compile a more recent version, or download a compatible updated package. I tried "cheating"by adding Debian packages, which are compatible with Puppy, but I ended up with too many dependencies needing to be updated.

  I found Puppy Linux somewhat problematic in itself. I come from a Debian background, and found the lack of a central repository for packages disappointing. I found a couple of updates to the emulators on other sites, but it wasn't enough.

   I had also done a full hd install, and its not possible to upgrade from Puppy Linux 4.20 (which Puppy Arcade 10 is based on) to Puppy Linux 5.20 (which may have more up-to-date packages?) without doing a full reinstall. 

 The deal breaker was really the lack of fullscreen though. The other NES emulators Puppy Arcade had would go full screen, but wouldn't work with some of the roms I had downloaded. I really wanted to stick with fceux, as it seemed to be most compatible with the random selection I tried. Plus I needed to be able to remap the keys on fceux due to some issues with my keyboard/joystick being wired up to use pre-bound keys. A newer version of fceux would let me rebind the keys to something else.

 So, I sadly bid goodbye to my Puppy Arcade install, and went over to Debian. I used a net-install to get all of the emulators I'd used under Puppy, and copied over the configuration files from ones I'd made in Puppy Linux.

 Because I'd  changed from Puppy Arcade to Debian, the version of MAME I was using also changed.  So,  I needed to update the ROMs for MAME. At some point the MAME ROM format had changed, so many of the ROMs I'd downloaded didn't go anymore. That was easy enough, its just something to be aware of.