Sábado, 31 de Diciembre de 2005

¡¡Feliz año nuevo!!

Es el primer año que termina desde que comenzó este blog. Deseo haceros llegar a todos los que me habéis apoyado poniéndoos en contacto, comentando los posts, dándolo a conocer a vuestros amigos, o simplemente leyendo la PDA de tungsteno, mi deseo de que ¡¡tengáis un muy próspero año 2006 lleno de salud, amor y alegría!!

Sábado, 31 de Diciembre de 2005

Muy completa colección de juegos gratuitos

Hoy por fin es Nochevieja, y como sé que muchos estarán ocupados con los preparativos, sólo voy a recomendar una simpática colección de juegos para un jugador, muy útil para los ratos de espera que tendremos durante el nuevo año, que con Palm se hacen mucho más cortos. Se trata de Simon Tatham’s Portable Puzzle Collection, y consta nada menos que de 24 juegos clásicos monojugador, como el same, el blackbox, los 15 cuadritos, el buscaminas, un sudoku… en definitiva, todo un arsenal para pasar el rato. Como siempre intento hacer, se trata de software libre, esta vez bajo licencia MIT por lo que somos libres de hacer lo que queramos con los ejecutables y el código fuente, excpeto atribuirnos su autoría.




Una completa colección de juegos tipo puzzle

Como curiosidad, comentar que originalmente fueron programados tanto para Linux (GTK) como para Windows, ya que el autor quería tener siempre disponible este entretenimiento, estuviese en el ordenador que estuviese. Navegando por su página me he dado cuenta que es nada menos que el creador del archiconocido Putty, un cliente de Telnet y SecureShell imprescindible dada la falta de algo similar que venga por defecto con Windows.

James Harvey es la persona que portó estos juegos a Palm, y en su página se encuentra la documentación de los juegos, tanto en HTML como formato Plucker, así como el código fuente para Palm y el propio programa, que podéis descargar directamente desde aquí. Espero que os gusten.

Viernes, 30 de Diciembre de 2005

Eliminado el contador de Webstats4u por los popups

Hace tiempo leí que el contador de visitas de Webstats4u (en la barra lateral, sección “Otra información”) producía popups publicitarios, pero debido a mi mala memoria, y al eficaz bloquedo de los mismos que hace el Mozilla Firefox, se me pasó por alto. Hoy haciendo pruebas con el Internet Explorer en una pestaña del Firefox para ver si renderizaba correctamente la página, he visto que me avisaba de un popup, y me he dado cuenta de mi despiste. El contador ha sido eliminado de la página, por lo que espero no vuelvan a aparecer los popups. Siento la molestia.

Por cierto. La publicidad de Google que aparece en la parte superior está puesta por mi hosting, Bitacoras.com.

Viernes, 30 de Diciembre de 2005

La Palm convertida en una máquina arcade portatil

En un post anterior habíamos visto que usando Little John PalmOS (LJP), podíamos jugar a juegos de la Nintendo NES y SuperNES, Sega Master System y GameGear, Atari 2600 y algunas consolas más en nuestra Palm. Pues si sois aficionados a los juegos clásicos (e inigualables), podeis probar también PalmMame, un emulador de máquinas recreativas para PalmOS.

PalmMAME es un port de MAME, siglas de Multi Arcade Machine Emulator, para PalmOS. Para los que no conozcáis MAME, es un proyecto que intenta emular todas las máquinas recreativas, éstas tragamonedas que arrasaron durante los 80 y 90, y que podemos encontrar en las salas arcade o en algunas cafeterías. El objetivo es que estos juegos, que a tantas personas han entretenido, no desaprarezcan sin dejar rastro cuando se hayan estropeado las máquinas en que corrían. La versión de MAME que tengo instalada en mi ordenador ejecuta 5848 juegos, así que podéis imaginaros la envergadura de este proyecto.


Pantalla de bienvenida de PalmMAME

PalmMAME está basada en la versión 0.36 de MAME. Aunque es una versión algo antigua, tiene suficientes juegos como para no aburrirnos. Hay que tener en cuenta que, debido a la potencia mucho menor de una Palm respecto al PC, los juegos más sencillos son los que van a funcionar a una velocidad aceptable. Pero entre ellos se incluyen todos los clásicos como PacMan, Galaga, Frogger, BubbleBobble, Phoenix, Space Invaders, Amidar, Pengo, y un larguísimo etcétera.


La lista de juegos emulados por MAME es interminable

Al ser un emulador para tantos juegos, el programa en sí es muy grande, por lo que el desarrollador de PalmMAME ha decidido “trocearlo” en archivos de 3Mb, llamados módulos. Cada módulo emula unos cientos de juegos, así que podemos decidir cuales copiar a nuestra Palm y cuales no. Cada vez que jugamos un juego, sólo es necesario cargar en memoria el módulo correspondiente. Aún así, debido a esos 3Mb de programa, el emulador tarda unos segundos en cargar. Necesita una Palm de alta resolución (320×200 mínimo) y que corra PalmOS 5, pero luego no demanda demasiado procesador durante la emulación. Por dar una referencia, se ejecuta sin problemas en mi Tungsten E2.

La instalación es similar a la de LJP:

  • El primer paso consiste en copiar los módulos en nuestra tarjeta SD, proceso que ya explicamos, asegurándonos de hacerlo en la ruta “/PALM/PROGRAMS/palmMAME”. Todos juntos ocupan unos 35Mb. Si no tenemos tanto espacio, podremos copiar sólo los que nos interesen. Si la versión de PalmMAME es la 0.15 (o posterior), también copiaremos en esta ruta, el directorio “StatBar”.
  • A continuación sincronizamos normalmente el archivo PalmMameLoader.prc a la memoria principar de la Palm. Este será el programa que ejecutaremos para jugar.
  • Finalmente, copiaremos las roms de nuestros juegos. Como en el caso de LJP, podrán estar comprimidas en formato ZIP (cada juego en un archivo separado). Creamos un directorio llamado “roms” en en que habíamos copiado los módulos, es decir “/PALM/PROGRAMS/palmMAME/roms”, y ahí las copiaremos.


Menú de juegos de PalmMAME

Ya tenemos instalado todo, así que ejecutamos el PalmMAME (debería aparecer ya en nuesta lista de programas), y como es la primera vez que lo ejecutamos, vamos al menú y elegimos “Opciones->Buscar ROM Modules”. Tardará un rato en hacerlo, pero no hay problema. Por último, deberemos configurar las teclas, asignando una acción a cada tecla de nuestra Palm. Para los que nunca hayan usado MAME, existen dos teclas que deben conocer: Coin es la que simula que introducimos una moneda, y Start sirve para empezar a jugar una vez que hemos metido algunas.

¡Y ya está todo preparado! Tendremos una lista de todos los juegos que puede ejecutar PalmMAME (con los módulos que hayamos copiado), y en azul oscuro indicará los que no están disponibles, mientras que en azul claro saldrán los que sí. En la lista aparece el nombre que le debemos dar al archivo ZIP para que lo reconozca, así que si algún juego no sale en azul claro, habrá que revisar el nombre que le hemos dado.

Y esto es todo lo que se necesita saber para jugar a nuestros juegos clásicos favoritos. Me he basado en un genial tutorial escrito por Palmerouy en los foros de PDAExpertos. Si quieren conocer PalmMAME con algo más de profundidad, éste es un buen lugar para comenzar.

Jueves, 29 de Diciembre de 2005

Evitar cuelgues en las nuevas Palm con NVFS (I)

Como este análisis va a ser profundo, anticipo que se van a tratar los reinicios que aleatoriamente sufren los usuarios de Palms con el nuevo sistema de memoria NVFS (especialmente los dos primeros equipos que lo implementaron: la Tungsten T5 y el Treo 650), la causa de los mismos, y cómo se pueden solucionar.

Desde el lanzamiento de la Tungsten T5, allá por el 2004, Palm ha implementado en sus dispositivos el novedoso sistema de memoria denominado NVFS, que son las siglas de Non-Volatile File System. Consiste en la utilización de memoria flash (el mismo tipo de memoria que las tarjetas SD) como memoria principal de la PDA. La memoria flash no necesita alimentación eléctrica contínua para preservar la información, cosa que sí necesitaba la anterior memoria utilizada, del tipo RAM, similar a la de los ordenadores.

Esto tiene dos ventajas: menor consumo de energía (con lo que la autonomía mejora enormemente), y que el contenido de la memoria no se pierda cuando se agota completamente la batería. Pero el NVFS también trajo inconvenientes. Más precisamente, la implementación del mismo. Y para entender el problema, primero debemos conocer cómo es exactamente el nuevo sistema de memoria.

En PDAExpertos está muy bien explicado. Voy a resumirlo a lo mínimo necesario para entender el resto del análisis. Para una lectura en más profundidad, recomiendo su artículo.

Las Palm anteriores a la Tungsten T5 tenían el siguiente esquema de memoria:

  • Por un lado un chip de memoria ROM con el sistema operativo, programas y librerías que venían de fábrica. La memoria ROM, como su nombre indica, es de sólo lectura, no la podemos modificar.
  • Y un chip de memoria RAM a su vez con dos partes: la que nosotros realmente accedemos, donde se instalan los programas, se guardan los documentos, etc, y una pequeña parte a la que no podemos acceder, denominada Dynamic Heap, que es la usada por los programas cuando se ejecutan. Ambas partes podrían identificarse con el disco duro y la memoria principal de un ordenador, respectivamente.

Las Palm con NVFS tienen otra estructura:

  • Un chip de memoria flash, en el que está, en una zona, el sistema operativo, librerías y programas que vienen de fábrica (viene a ser la ROM de los modelos anteriores), y en otra zona de la misma, la memoria para nuestro uso, donde se guardan los programas que instalamos nosotros, los documentos, etc. Digamos que es como un disco duro de ordenador, en el que el sistema operativo está en un directorio, y en los demás nuestros programas y datos.
  • Pero sigue habiendo también un chip de memoria RAM. Y os preguntaréis ¿para qué? La razón es que un programa no se puede ejecutar directamente en la memoria flash, debe hacerlo en RAM. Por lo tanto, cada vez que se ejecuta una aplicación, ésta debe copiarse primero a RAM. Esto lo hace nuestra Palm de manera transparente, y el retraso que produce es imperceptible.
    Esta memoria RAM contiene el Dynamic Heap que comentamos antes, y además una zona llamada DbCache que es donde se copian, como decimos, los programas para ejecutarse. Una vez que cerramos un programa, se borra de la DbCache para hacerle sitio al siguiente programa que ejecutemos (así debería ser al menos…). Y ésta caché es precisamente la causante de todos los problemas.

Resumiendo, la famosa DbCache, de unos 10Mb, a la que no podemos acceder directamente es, como hemos visto, de uso interno del sistema operativo. Y los problemas de “Not enought memory…” que da el Blazer, o los reinicios por errores “Fatal Exception” o “Memory full” que se producen cuando abrimos un programa que consume mucha memoria, o sin causa aparente en algunos casos, se deben a su peculiar forma de funcionamiento. Pero eso lo veremos en el siguiente post, porque éste ya se ha hecho bastante denso.