El sitio personal de David Colmenero (D_Skywalk)

Posts tagged with 'Desarrollo'

OpenPPJoy Actualizado!

Con todo esto de recuperar AGES anoche me quité un par de horas de sueño para actualizar OpenPPJoy a su versión 0.4z que soporta por fin el Kernel 2.6.38, las gracias a VeS que además corrigió la configuración base de las teclas para adaptarse perfectamente a la configuración por defecto de MAME :)

Panel ejemplo OpenPPJoy
Esquema realizado con las herramientas de diseño más sofisticadas para mostrar como montar un pequeño panel a modo de ejemplo para OpenPPJoy. Tecnología punta HOIGAN!

Los cambios los tenéis en el repositorio ya disponible y listo para ser compilado:
http://code.google.com/p/openppjoy/source/list

Los pasos son tan sencillos como siempre:

svn checkout http://openppjoy.googlecode.com/svn/trunk/ openppjoy
cd openppjoy/arcade-modulo
make
make modules_install

Igualmente voy a preparar una versión debian del módulo usando DKMS, que es un pequeño pero potente programa* (patrocinado por Dell)* que permite mantener un driver que no está disponible en la rama oficial del kernel de forma sencilla para el usuario, ya que se encarga de vigilar que tengamos nuestro módulo actualizado cada vez que renovemos nuestro kernel. Si tenéis alguna tarjeta NVIDIA, ATI o alguna Webcam rara ya os sonará haberlo visto ;)

El siguiente paso será hacer el driver configurable, me gustaría usar /proc pero quiero no alargar demasiado la nueva rama 0.5, haré unas pruebas con la beta que me envió hace ya más de un año Pakito (mil gracias tio) y veré que se puede construir a partir de ahí que sea estable y demás :)

Un Saludo!


Retomando AGES... Ubuntu para Máquinas Arcade

El problema del verano es que te deja mucho tiempo libre y uno elucubrando todos los días, al final termina pensando el por que no recuperar alguno de los viejos proyectos, que además estén igualmente enfocados con la empresa y así de camino tienes una excusa para frikear y trastear… pero desde un punto de vista educativo y aplicable, claro ;)

Ahí me tenéis en pleno agosto con las muchachas en el agua, terminando la puesta apunto de la máquina arcade, sudando la gota gorda lijando y pintando al solano, pero para os voy a engañar estaba disfrutando cada segundo, jejej. Bien pues una vez terminé y reparé un par de problemas que me dio el monitor me puse manos a la obra con la recuperación del proyecto AGES (archivo de marcianitos), que básicamente se trata de conseguir una live/instalador de Ubuntu/Natty enfocado exclusivamente para máquinas arcade con monitores originales de tuvo CRT.

Logo de Ages
A.G.E.S Live

Los problemas principales, los de siempre: tener que hackear el kernel y además buscar la manera de que las xorg emitan a 15khz. Por suerte otro muchacho ya avanzó bastante en este sentido: groovymame permite tener nuestra maka con linux en 5 minutos funcionando con samba, ssh, las x y un bonito menu de roms…

¿El problema?
Que por debajo de todo eso hay una Gentoo y a uno que viene de las santas tierras debianitas, claro, que menos que usar ubuntu ;D

Ya metido en el ajo he tenido bastantes problemas en conseguir que el driver de la ArcadeVGA (AGP) funcionara igual de bien que antiguamente lo hacía solo con el framebuffer de la consola y svgalib. Pero tras mucho pelear con [KMS] kernels panic y gdbs (XD) he conseguido resoluciones de por ejemplo 256×244 (del wonder boy) modificando xserver y el driver radeon (se supone que las X sólo permiten resoluciones menores de hasta 320×200) y que además funcionan no sólo mejor sino aceleradas con OpenGL!!! fuck yeah!

Wonder Boy (MAME)
Wonder Boy (MAME)

Una vez os he puesto en antecedentes comentar que ya tengo una pequeña ubuntu-minimal funcional con los paquetes que se necesitan, xorg base, python y poco más. Estoy muy contento con ella y sólo me falta preparar el repositorio y subir todos los parches para que cualquiera se la pueda montar como quiera ;)

Pretendo grabar un video en estos días para mostrarlo, por que es un lujazo como funciona, han sido un par de semanas de curro con nocturnidad pero han valido la pena, el vídeo va fíno y las xorg se comportan mucho mejor que cuando usaba consola.

Un Saludo y ya para la siguiente entrada os traigo paquetes, parches y vídeo, a ver si algún otro marciano se aníma a montar su maka con linux :)


Repositorio para OpenPPJoy

Intentando darle un nuevo empujoncito a OpenPPJoy y aprovechando la ayuda que recibí por mail de Pakito (thx!), he preparado un nuevo repositorio para OpenPPJoy y he actualizado además la interfaz de acceso al kernel, aunque aun me queda trabajo ;)

https://code.google.com/p/openppjoy/

El driver LPT para máquinas arcade, OpenPPJoy estaba desactualizado y sólo era compatible con versiones del Kernel de Ubuntu 7.x o así. Aun a falta de mayor testeo he publicado los cambios en el repositorio y he actualizado la documentación tanto en el nuevo Wiki como en la hoja de proyecto del Blog.

Falta: añadir imágenes a la documentación, añadir un ejemplo funcional (como el que uso yo) y estaría bien pasar a hacer el driver compatible con la implementación que proponen en Retrovicio, aunque requiere reescribirlo casi por completo :(

Esta semana iré compaginando Wiituka y OpenPPJoy a ver que me da tiempo a hacer, por lo demás preparando el portátil para la campus party la semana que viene ;)

Un Saludo!


Unificando Hardware - Final Stage!

Retomamos un poco el hilo del XBMC Servidor, uno de los inconvenientes que he tenido al querer usar la misma máquina tanto de servidor como de reproductor ha sido que XBMC aunque no lo uses está ahí y gastando un 12% de CPU (tengo un skin muy bonito XD). Por tanto, nos consume luz y proceso que podríamos aprovechar o ahorrar.

Mi idea es apagar XBMC automaticamente sino se usa, pero poder iniciarlo de nuevo pulsando el mando a distancia.
¡Vamos al tajo! Smiley: Muy contento!

Lo primero que pensé fué aprovechar lirc y que mejor que montarlo rápidamente con un pequeño demonio hecho en python (thx pyLirc). Dicho y hecho aqui os dejo el demonio:

#!/usr/bin/python

# pyServiceHandleXBMC - Almost taken from pyLirc Doc
#                       and modded by D_Skywalk
# version 110210 (1.a)
import pylirc, time, os
blocking = 0;
#
if(pylirc.init("pylirc", "/usr/local/etc/lircrc.ServiceHandleXBMC", blocking)):

   print "pyService XBMC using Lirc is Waiting..."
   code = {"config" : ""}

   while(code["config"] != "quit"):

      if(not blocking):
         time.sleep(1)

      # Read next code
      s = pylirc.nextcode(1)

      while(s):

         # Print all the configs...
         for (code) in s:

            print "Command: %s, Repeat: %d" % (code["config"], code["repeat"])

            if(code["config"] == "run"):
               # Read last code
               s = pylirc.nextcode(1)
               pylirc.exit()
               os.execl("/usr/local/bin/runXBMCservice", "")

         # Read next code?
         if(not blocking):
            s = pylirc.nextcode(1)
         else:
            s = []

   # Clean up lirc
   pylirc.exit()

El código es básicamente el ejemplo del uso de lirc con python, añadiendo la llamada al pequeño script en bash que lo único que hace es ejecutar “service xbmc-live start”
¿por que no lo hice directamente de ahí? por que python me protestaba… mejor no preguntar XD

Para usarlo vais a necesitar un fichero lircrc, algo asi (adaptarlo a vuestro mando si no es el de XBOX)

begin
    prog = pylirc
    button = 5
    config = quit
end

begin
    prog = pylirc
    button = DISPLAY
    config = run
end

Podéis usar o añadir los botones que teneis en /etc/lirc/… tengo puesto que con 5 cierra el demonio para depurar y tal me venia bien, sino lo necesitais con borrar ese boton lo tenéis Smiley: contento!

Para arrancar el demonio al cerrar XBMC añadid la llamada a /usr/bin/runXBMC en:

...
    if [ -e /tmp/noRestartXBMC ] ; then
        screen -A -m -d -S xbmcREMOTE /usr/local/bin/pyServiceLircHandleXBMC #linea a añadir
        rm /tmp/noRestartXBMC
...

Uso screen para mandarlo a segundo plano y tener mejor control del proceso, pero sino queréis usarlo supongo que podreis usar también nohup y demás…
Finalmente y sin cerrar este fichero debéis quitar el argumento –standalone de la llamada a xbmc, para que os permita cerrar XBMC sin apagar todo el sistema.

Bien, no se si entre el público habrá algún día otro pijo-linuxero con el mismo problema, pero quizás lo más importante de este envio es la facilidad de crear un programa a tu medida con python en un par de ratos y sin dolores de cabeza, que lujo de lenguaje a ver si me lo empollo un poquito más Smiley: guay!

Un Saludo!