Al dia de hoy, la unica manera que encontre de compilarlo es en la misma Cubieboard. Una vez que booteo la primera tarjeta sd con el sistema debian base, la utilizo como ambiente de desarrollo para instalar otro software que no este disponible en los repositorios.
Lo primero es instalar las herramientas de desarrollo y las dependencias de advancemame. En este caso solo estoy cumpliendo las basicas para que al correr, muestre sobre el framebuffer (video), suene por alsa (sonido) y soporte nativo de dispositivos de entrada (teclado, mouse, joystick). La idea es hacer un binario mas chico y que tarde menos la ejecucion tambien evitando que cargue librerias inecesarias.
# apt-get install build-essential
# apt-get install nasm libslang2-dev ncurses-dev libfreetype6-dev zlib1g-dev libexpat1-dev libasound2-dev
Obtenemos las fuentes estables. Lo mas comodo de hacerlo de esta manera, es que ya vienen combinadas con las originales de mame. En caso de querer obtenerlas del repositorio git, tambien es necesario obtener por separado las de mame y aplicar parches.
# wget http://downloads.sourceforge.net/project/advancemame/advancemame/1.2/advancemame-1.2.tar.gz
# tar zxvf advancemame-1.2.tar.gz
En este caso estoy probando con unos flags del compilador indicandole la arquitectura de la Cubieboard y el tipo de punto flotante, con la esperanza que aplique reglas que mejoren la performance al momento de la ejecucion dle binario.
# cd advancemame-1.2
/advancemame-1.2# ./configure CFLAGS="-O3 -march=armv7 -mfpu=vfpv3"
== Host ==
Environment : armv7l-unknown-linux-gnueabihf
Endianess : little
Bits : 32
Assembler for Pentium : no
Assembler MIPS3 emulator for Pentium : no
== Drivers/Libraries ==
Video : fb slang ncurses
Sound : alsa oss
Keyboard : raw event
Joystick : raw event
Mouse : raw event
Misc : zlib expat pthread freetype2
configure: WARNING: the SDL library was not found. You will not able to use this program in a window manager environment! If you have the SDL library installed somewhere try using the --with-sdl-prefix option.
== Compiler ==
CC : gcc
CXX : g++
CFLAGS : -O3 -march=armv7 -mfpu=vfpv3 -mtune=native
LDFLAGS : -s
== Configuration ==
Emulator : mame
Debugger : no
Si todo salio bien, compilamos. Este proceso puede tardar mas de 2 horas.
/advancemame-1.2# make
Para instalarlo sobre el mismo sistema:
/advancemame-1.2# make install
Si queremos instalarlo en un lugar distinto hay que setear un marametro en el Makefile.
Esto es util para poder copiarlo o empaquetarlo.
/advancemame-1.2# mkdir /root/ADVMAME
/advancemame-1.2# vi Makefile
# prefix=/usr/local
prefix=/root/ADVMAME
/advancemame-1.2# make install
Basicamente el mismo proceso que el anterior.
# wget http://downloads.sourceforge.net/project/advancemame/advancemenu/2.6/advancemenu-2.6.tar.gz
# tar zxvf advancemenu-2.6.tar.gz
# cd advancemenu-2.6
/advancemenu-2.6# ./configure CFLAGS="-O3 -march=armv7 -mfpu=vfpv3"
== Host ==
Environment : armv7l-unknown-linux-gnueabihf
Endianess : little
Bits : 32
Assembler for Pentium : no
Assembler MIPS3 emulator for Pentium : no
== Drivers/Libraries ==
Video : fb slang ncurses
Sound : alsa oss
Keyboard : raw event
Joystick : raw event
Mouse : raw event
Misc : zlib expat pthread freetype2
configure: WARNING: the SDL library was not found. You will not able to use this program in a window manager environment! If you have the SDL library installed somewhere try using the --with-sdl-prefix option.
== Compiler ==
CC : gcc
CXX : g++
CFLAGS : -O3 -march=armv7 -mfpu=vfpv3
LDFLAGS : -s
/advancemenu-2.6# make
/advancemenu-2.6# make install
Para empaquetar lo mismo.
/advancemenu-2.6# mkdir /root/ADVMENU
/advancemenu-2.6# vi Makefile
# prefix=/usr/local
prefix=/root/ADVMENU
/advancemenu-2.6# make install
El mismo proceso una vez mas para tener un gestor de roms.
# wget http://downloads.sourceforge.net/project/advancemame/advancescan/1.17/advancescan-1.17.tar.gz
# tar zxvf advancescan-1.17.tar.gz
# cd advancescan-1.17
/advancescan-1.17# ./configure CFLAGS="-O3 -march=armv7 -mfpu=vfpv3"
/advancescan-1.17# make
/advancescan-1.17# make install
/*
/advancescan-1.17# mkdir /root/ADVSCAN
/advancescan-1.17# vi Makefile
# prefix = /usr/local
prefix = /root/ADVSCAN
/advancescan-1.17# make install
*/
# vi .advance/advscan.rc
rom rom
rom_new rom
rom_unknown rom_bad
rom_import rom_new
# advmame -listxml > info.xml
# advscan -R -v < info.xml
Para poder correr este softwar epor primera vez, es mandatorio tener configurado los parametros de reloj de la television.
Estas son las especificaciones para mi monitor Samsung LED 23'.
# vi .advance/advmame.rc
device_video_clock 25 - 162 / 31 - 75 / 56 - 60.318
display_resize 1
display_resizeeffect none