Wednesday 7 May 2014

GroovyMAME Installation on Arch Linux

Boot using archlinux-2014.05.01-dual.iso. Uses a snapshot download to compile GroovyMAME.
Arch Linux
----------
# loadkeys uk
# fdisk /dev/sda
o
n
[default]
[default]
[default]
[default]
w
# mkfs.ext3 -L groovy /dev/sda1
# mount /dev/sda1 /mnt
# pacstrap /mnt base syslinux sudo 
# dd if=/dev/zero of=/mnt/swapfile bs=1M count=512
# chmod 600 /mnt/swapfile
# mkswap /mnt/swapfile
# genfstab -L -p /mnt >> /mnt/etc/fstab
# echo /swapfile none swap defaults 0 0 >> /mnt/etc/fstab
# arch-chroot /mnt
# echo groovy > /etc/hostname
# ln -s /usr/share/zoneinfo/Europe/London /etc/localtime
# mv /etc/locale.gen /etc/locale.gen.def
# echo en_GB.UTF-8 UTF-8 > /etc/locale.gen
# locale-gen
# echo LANG=\"en_GB.UTF-8\" > /etc/locale.conf
# echo KEYMAP=uk > /etc/vconsole.conf
# nano -w /etc/mkinitcpio.conf
  MODULES="radeon nouveau i915"
# mkinitcpio -p linux
# passwd
# syslinux-install_update -i -a -m
# sed -i 's/sda3/sda1/g' /boot/syslinux/syslinux.cfg
  Append video=VGA-1:640x480@60 
# cp /etc/netctl/examples/ethernet-dhcp /etc/netctl/profile
# ip link
  Note interface name, use in next sed command instead of INTERFACE
# sed -i 's/eth0/INTERFACE/g' /etc/netctl/profile
# netctl enable profile
# useradd groovy
# passwd groovy
# mkdir /home/groovy
# chown groovy:users /home/groovy
# echo groovy ALL=\(ALL\) ALL > /etc/sudoers.d/groovy
# sed -i 's/#MAKEFLAGS/MAKEFLAGS/g' /etc/makepkg.conf
# exit
# umount -R /mnt
# reboot

Using AUR
---------
# pacman -S base-devel
$ curl -L -O https://aur.archlinux.org/packages/sd/sdl-groovy/sdl-groovy.tar.gz
$ curl -L -O https://aur.archlinux.org/packages/gr/groovyume/groovyume.tar.gz
$ curl -L -O https://aur.archlinux.org/packages/xf/xf86-video-ati-groovy/xf86-video-ati-groovy.tar.gz
$ curl -L -O https://aur.archlinux.org/packages/xf/xf86-video-nouveau-groovy/xf86-video-nouveau-groovy.tar.gz
$ curl -L -O https://aur.archlinux.org/packages/at/attract-git/attract-git.tar.gz
... tar xvf .....tar.gz
... cd ....
... makepkg -s
... pacman -U ....pkg.tar.xz

Cab Setup
---------
$ switchres64 640 480 60 --monitor arcade_15 --edid
$ mv edid.bin edid-15khz.bin
$ switchres64 512 384 60 --monitor arcade_25 --edid
$ mv edid.bin edid-25khz.bin
$ switchres64 640 480 60 --monitor arcade_31 --edid
$ mv edid.bin edid-31khz.bin
# mkdir /usr/lib/firmware/edid
# cp edid*.bin /usr/lib/firmware/edid
# sed -i 's/BINARIES=""/BINARIES="\/usr\/lib\/firmware\/edid\/edid-15khz.bin \/usr\/lib\/firmware\/edid\/edid-25khz.bin \/usr\/lib\/firmware\/edid\/edid-31khz.bin"/g' /etc/mkinitcpio.conf
# nano -w /boot/syslinux/syslinux.cfg  
  Add to APPEND for 15KHz: drm_kms_helper.edid_firmware=VGA-1:edid/edid-15khz.bin fbcon=rotate:0
  Add to APPEND for 25KHz: drm_kms_helper.edid_firmware=VGA-1:edid/edid-25khz.bin fbcon=rotate:0
  Add to APPEND for 31KHz: drm_kms_helper.edid_firmware=VGA-1:edid/edid-31khz.bin fbcon=rotate:0 
  For vertical monitors change rotate to 1 or 3
# mkdir /etc/systemd/system/getty@tty1.service.d/
# nano -w /etc/systemd/system/getty@tty1.service.d/autologin.conf
  [Service]
  ExecStart=
  ExecStart=-/usr/bin/agetty --autologin groovy --noclear %I 38400 linux
  Type=simple
$ cp /etc/skel/.* .
$ echo [[ -z \$DISPLAY \&\& \$XDG_VTNR -eq 1 ]] \&\& exec startx >> .bash_profile
$ echo exec attract >> .xinitrc
  
Xorg Drivers
------------
$ ABSROOT=. abs extra/xf86-video-ati
$ cd extra/xf86-video-ati
$ cp ~/groovyarcade.diff/xf86-video-ati-7.2.0/*.diff .
$ nano -w PKGBUILD
Add .diff files to source=()
Add patch lines for each diff file after the first cd line in build():
patch -p1 -i "${srcdir}/patch.diff"
$ updpkgsums  
$ makepkg
# pacman -S xf86-video-ati-xxxx.pkg.tar.xz

$ ABSROOT=. abs extra/xf86-video-nouveau
$ cd extra/xf86-video-nouveau
$ cp ~/groovyarcade.diff/xf86-video-nouveau-1.0.1/*.diff .
??? DIFF doesn't currently work. Line to change is identical.
$ nano -w PKGBUILD
Add .diff files to source=()
Add patch lines for each diff file after the first cd line in build():
patch -p1 -i "${srcdir}/patch.diff"
$ updpkgsums  
$ makepkg
# pacman -S xf86-video-ati-xxxx.pkg.tar.xz

Additional Packages
-------------------
# pacman -S base-devel abs xmlto docbook-xsl bc unzip alsa-lib libxinerama qt4 glu mesa nasm python2 wget git xorg-server xorg-server-devel xorg-xrandr ati-dri nouveau-dri glamor-egl xorg-xinit xorg-twm xterm

Linux Kernel
------------
Requires patches from Ansa89 in http://forum.arcadecontrols.com/index.php/topic,107620.0.html
$ ABSROOT=. abs core/linux
$ cd core/linux
$ wget http://forum.arcadecontrols.com/index.php?action=dlattach;topic=107620.0;attach=310448
$ unzip -j patch-3.15.zip
$ nano -w PKGBUILD
Add .diff files to source=()
Add patch lines for each diff file before the config section:
patch -p1 -i "${srcdir}/patch.diff"
$ updpkgsums 
$ makepkg
# pacman -U linux-headers-x.xx.pkg.tar.xz
# pacman -U linux-docs-x.xx.pkg.tar.xz
# pacman -U linux-x.xx.pkg.tar.xz

$ curl -L -O https://aur.archlinux.org/packages/li/linux-groovy/linux-groovy.tar.gz

SDL
---
Uses GroovyArcade packages from https://code.google.com/p/groovyarcade/source/
$ git clone https://code.google.com/p/groovyarcade.diff/
$ cd groovyarcade.diff/sdl-1.2.15-5
$ makepkg
# pacman -U sdl-1.2.15-5.xxx.pkg.tar.xz
# pacman -S sdl_ttf

GroovyMAME
----------
$ wget http://git.redump.net/mame/snapshot/mame0153.tar.bz2
$ tar xvjf mame0153.tar.bz2
$ wget https://54c0ab1f0b10beedc11517491db5e9770a1c66c6.googledrive.com/host/0B5iMjDor3P__aEFpcVNkVW5jbEE/v0.153_015b/hi_153.diff
$ wget https://54c0ab1f0b10beedc11517491db5e9770a1c66c6.googledrive.com/host/0B5iMjDor3P__aEFpcVNkVW5jbEE/v0.153_015b/0153_groovymame_015b.diff
$ cp *.diff mame0153
$ cd mame0153
$ patch -p0 -E <hi_153.diff
$ patch -p0 -E <0153_groovymame_015b.diff 
$ make NOWERROR=1 ARCHOPTS=-march=native PYTHON=python2

Attract Mode Frontend
---------------------
# pacman -S base-devel abs
# pacman -S ffmpeg sfml xorg-server fontconfig ttf-freefont
$ git clone http://github.com/mickelson/attract
$ cd attract
$ make

Finishing Touches
-----------------
# nano -w /etc/grub/default
Update GRUB_CMDLINE_LINUX with extra parameters:
15KHz:   vga=0x311 video=VGA-1:640x480ec
25KHz:   vga=0x311 video=VGA-1:512x384ez
31Khz:   vga=0x311 video=VGA-1:640x480ey
# grub-mkconfig -o /boot/grub/grub.cfg
# wget https://www.archlinux.org/mirrorlist/\?country=GB\&protocol=http\&ip_version=4\&use_mirror_status=on -O /etc/pacman.d/mirrorlist
Enable mirrors by uncommenting.
# nano -w /etc/pacman.conf
IgnorePkg = linux linux-headers linux-docs sdl xf86-video-ati xf86-video-nouveau
# pacman -Syu

Making Packages
---------------
# pacman -S pkgbuild-introspection
# updpkgsums
# mkaurball

Repackaging SDLMAME
-------------------
$ ABSROOT=. abs community/sdlmame
$ mv community/sdlmame/ groovyume
$ cd groovyume
$ mv sdlmame.install groovyume.install
$ mv sdlmame.sh groovyume.sh
$ sed -i 's/sdlmame/groovyume/g' groovyume.* PKGBUILD
$ sed -i 's/SDLMAME/GroovyUME/g' groovyume.* PKGBUILD
$ sed -i 's/ mame / ume /g' groovyume.* PKGBUILD
$ sed -i 's/ mame64 / ume64 /g' groovyume.* PKGBUILD
$ sed -i 's/OPTIMIZE=2/ARCHOPTS=-march=native TARGET=ume/g' PKGBUILD
PKGBUILD mods
  pkgdesc="GroovyUME is a custom UME build mainly aimed at CRT monitors"
  depends - remove sdl>= entry. Add sdlgroovy, xf86-video-ati-groovy, xf86-video-nouveau-groovy
  optdepends=('linux-groovy')
  source lines for hi_153.diff and 0153_groovymame_015b.diff
  before the fi before make add patch lines:
  patch -p0 -E <${srcdir}/hi_153.diff
  patch -p0 -E <${srcdir}/0153_groovymame_015b.diff
  Extra lines for the MESS tools castool floptool imgtool nltool
  install -m755 castool $pkgdir/usr/share/${pkgname}/castool
  install -m755 floptool $pkgdir/usr/share/${pkgname}/floptool
  install -m755 imgtool $pkgdir/usr/share/${pkgname}/imgtool
  install -m755 nltool $pkgdir/usr/share/${pkgname}/nltool 
$ updpkgsums
$ makepkg -s    

1 Comments:

Blogger Unknown said...

Hello!

Do you know if this would work with any nvidia card?
(especially for me 7900GS pcie model)

thanks!

26 August 2014 at 11:37  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home