lunes, 9 de julio de 2018

¡Hola de nuevo mundo!

Esta es una entrada de prueba que forma parte de las tareas requeridas en el módulo profesional Implantación de Aplicaciones Web del CFGS ASIR.

 ¡Hasta pronto!

martes, 2 de diciembre de 2008

Charla: Desarrollo Casero para Wii

!Rápido, aprisa, no hay tiempo!

Escribo esta entrada a toda velocidad porque, aunque últimamente no tengo tiempo ni para rascarme, me gustaría avisar a mis escasos lectores de que el próximo sábado 13 de diciembre voy a dar una pequeña charla sobre desarrollo casero para Wii. Comenzará a las 11:15 de la mañana en el centro cívico Las Sirenas, situado en La Alameda de Hércules en Sevilla.

Sólo añadir para lo que estén interesados que la entrada será libre y que tenéis más información en la web de la asociación DESEA.

martes, 19 de agosto de 2008

Match!

¿Os acordais de hace 20 años cuando los videojuegos estaban hechos por equipos de una o como mucho dos personas? Eran otros tiempos, mejores o peores según a quien se le pregunte. A día de hoy quedan pocas plataformas en las que sea viable emprender un proyecto en solitario, y MIDP es una de ellas.

Comunmente conocidos como "Juegos Java", los juegos basados en MIDP corren en dispositívos móviles, casi siempre teléfonos, y debido a sus limitaciones técnicas suelen ser lo bastante sencillos como para ser abordados por un sólo programador. Con esa idea en mente me decidí hace unos días a crear mi primer juego MIDP.

El resultado fue "Match!", un juego de tipo puzzle en el que hay que formar parejas de frutas hasta que no quede ninguna suelta, todo en el menor tiempo posible. Tardé un par de días en programarlo así que no está muy pulido. Los gráficos me los ha hecho un amigo en una tarde, por lo que tampoco son gran cosa. De todas formas estoy bastante satisfecho con el resultado, dos días para hacer algo jugable, entretenido y que ha funcionado en varios equipos es un nuevo record personal.

Comienza un viaje alucinante.


¡Ánimo que sólo hay 72!


Esta es la pantalla que más me costó hacer... No es broma.

La forma de instalarlo varía en cada teléfono, aunque lo normal es usar un cable o BlueTooth. Si lo pruebas sería un detalle que dejases un comentario diciendo si en tu móvil ha funcionado bien o no y el modelo de éste. ¡Que lo disfrutes!

Descargar Match!

martes, 10 de junio de 2008

PNGU 0.2b

Os presento la nueva versión de mi librería de manipulación de imágenes png para Wii y GC. Viene cargadita de novedades, así que espero que os guste :D

Características de la versión actual:

  • Está basada en libpng 1.2.29

  • Soporta imágenes de 8 y 16 bits por canal.

  • Soporta imágenes en formato RGB, RGBA, escala de grises y escala de grises + alfa.

  • Lee las dimensiones de la imágen, el formato de píxel, los colores transparentes y el color de fondo.

  • Convierte a formatos YCbYCr, RGB565 lineal, RGBA8 lineal, 4x4 RGB565, 4x4 RGB5A3 y 4x4 RGBA8.

  • Permite guardar imágenes YCbYCr en formato png RGB8.

  • Lee y escribe las imágenes en memoria o en dispositivos devoptab (SD, Gecko SD, etc...).

  • Está preparada para su uso en aplicaciones multihilo.

Limitaciones de la versión actual:
  • No carga imágenes de 1, 2 o 4 bits por canal.

  • No carga imágenes paletizadas.


I present you the new version of my png handling library for Wii and GC. It comes with a lot of new features, so I hope you like it :D

Current version features:

  • It's based in libpng 1.2.29

  • Handles images of 8 and 16 bits per channel.

  • Handles images in RGB, RGBA, grayscale and grayscale + alpha formats.

  • Reads image dimensions, pixel format, background color and transparent colors list.

  • Converts images to YCbYCr, linear RGB565, linear RGBA8, 4x4 RGB565, 4x4 RGB5A3 and 4x4 RGBA8 formats.

  • Saves YCbYCr images in png RGB8 format.

  • Handles images stored in memory or in devoptab devices (SD, Gecko SD, etc...).

  • It's ready to be used in multithreaded applications.

Current version limitations:
  • Doesn't handle images of 1, 2 or 4 bits per channel.

  • Doesn't handle paletized images.


Lista de aplicaciones que usan PNGU / List of applications using PNG
Descargar PNGU 0.2b / Download PNGU 0.2b

miércoles, 14 de mayo de 2008

Virtual File System para Wii/GC


VFSlib es una librería que he desarrollado para Wii/GC y que permite realizar tareas de E/S bajo una interfaz unificada. En otras palabras, para el usuario de VFSlib leer archivos de una tarjeta SD o leerlos de Internet no supone ninguna diferencia, ya que las funciones que usa son las mismas en ambos casos.

Las ventajas de acceder a dispositivos distintos usando una interfaz común son evidentes: Se simplifica la creación de aplicaciones ya que no hay que preocuparse de los detalles específos de cada dispositivo y, además, las aplicaciones adquieren automáticamente la capacidad de usar nuevos dispositivos cuando estos se añaden a VFSlib.

Para facilitar aún más las cosas las funciones de VFSlib son compatibles con las funciones stdio de manejo de streams de ANSI C. Sólo son específicas de VFSlib aquellas operaciones no definidas en stdio, como por ejemplo las relativas a directorios.

La versión 0.1a de VFSlib permite acceder al lector SD de Wii y a archivos disponibles en Internet mediante el protocolo HTTP.

Podeis descargar el código fuente de VFSlib y un ejemplo de uso aquí. También he escrito una documentación, que poco a poco iré completando.



VFSlib is a library I've developed for Wii/GC that encapsulates different I/O operations under a common interface. In other words, for the user of VFSlib reading files from an SD card or from Internet doesn't make any difference, because the functions used in both cases are exactly the same.

The advantages of accessing different devices using a common interface are obvious: The process of developing applications is simplified because there is no need to concern about the specific details of each device and, moreover, the applications adquire automatically the ability of using new devices when they are added to VFSlib.

To make things even easier, the functions of VFSlib are compatible with ANSI C stdio stream handling functions. The only ones specific to VFSlib are those that are not defined in stdio, for example directory related functions.

VFSlib release 0.1a allows accessing Wii's SD card reader and all files available in Internet via the HTTP protocol.

You can download source code and an example of usage here. I've also written a documentation that will be gradually completed.

viernes, 25 de abril de 2008

LIBPNG 1.2.26 + PNGU v0.1c para Wii

Desde que hace unos meses se descubrió un bug que permite ejecutar código casero en Wii mucha gente se ha metido de cabeza a estudiar los entresijos de la consola de Nintendo.

Hay varias librerías que pueden usarse para hacer aplicaciones caseras en Wii, pero la más utilizada sin duda es libogc, que está incluida en devkitpro. Aunque es una librería muy completa suelen necesitarse librerías complementarias que cubran aquellos aspectos para los que libogc no ha sido diseñada. Uno de estos aspectos es la carga de imágenes, sonido, etc...

Para rellenar una parte de ese hueco he compilado la librería libpng para Wii. Creo que puede ser una alternativa a libjpeg, que también ha sido portada recientemente. El formato PNG presume de muchas prestaciones: Almacena un color de fondo, un color de transparencia, permite tener un canal alpha con varias modalidades de profundidad, comprime sin deteriorar la calidad, es un formato abierto, etc... Además libpng es la librería más completa para manejarlo.

Para rematar la faena he creado un conjunto de funciones (PNGU_*) que permiten cargar una imagen en un búfer de memoria muy fácilmente. De esta forma se puede empezar a experimentar con la librería de inmediato. La versión actual de PNGU es la 0.1c y tiene las siguientes características:

Permite cargar ficheros desde un búfer de memoria o desde una tarjeta SD.

Puede descomprimir imágenes PNG y convertirlas a formato YCbYCr, RGBA8, 4x4 RGB565, 4x4 RGB5A3 y 4x4 RGBA8.

De momento sólo está probada con archivos PNG en formato RGB8, aunque es muy posible que funcione con otros tipos de PNG, como RGBA8.

Os dejo la librería ya compilada, las funciones PNGU_*, varios proyectos de ejemplo, un archivo .bat para el que quiera compilar la librería él mismo y algunas indicaciones adicionales aquí.

Y por supuesto, no dudeis en dejar un comentario si encontrais algún bug o teneis dudas sobre como usarla.

martes, 25 de marzo de 2008

La odisea de programar un PIC: SMT1

Hace unos días me dirigí a una tienda de electrónica de mi localidad para comprar un programador de PICs. Mi intención era adquirir un TE20, por su precio y compatibilidad con todos los modelos de PIC. Lo más parecido que pude encontrar fue un clon del TE20 llamado SMT1, así que pagué 15€ por él y me lo llevé a casa. Y pensar que no me construí un programador casero para ahorrarme problemas...

Nada más introducir "SMT1" en Google aparecen decenas de foros con mensajes de gente a la que el susodicho programador les da problemas. Ni ICProg ni WinPIC800 traen un perfil de configuración específico para el SMT1, aunque el WinPIC800 si lo trae para el TE20, por lo que debería funcionar a la primera. Y digo debería porque me ha llevado casi 5 horas hacerlo funcionar bien, y tan sólo lo he conseguido en ICProg.

Como en ninguno de los foros que he mencionado antes se da una solución al problema voy a comentaros la configuración precisa que a mi me ha funcionado:

Usaremos ICProg versión 1.06A.
En configuración de hardware (F3) seleccionamos "JDM Programmer", "Windows API", "I/O delay 20 ms" y el puerto serie al que tengais conectado el programador, normalmente "COM1" o "COM2". Todo lo demás hay que dejarlo en blanco. Aceptamos para volver a la pantalla principal de ICProg y seleccionamos el dispositivo que vayamos a programar. Yo he probado con éxito el PIC12F629 y el PIC16F628A.

Configuramos el puerto serie correctamente.
Todas mis pruebas las he hecho bajo WinXP, así que si alguien usa un S.O. distinto tendrá que hacer estos ajustes de otra forma. En concreto los que useis WinNT/2000 tendreis que instalar un driver específico para ICProg que podéis descargar de la página oficial del programa. Aclarado esto entramos en "Panel de control", icono "Sistema", pestaña "Hardware", botón "Administrador de dispositivos". En el árbol de dispositivos buscamos "Puertos (COM & LPT)" y hacemos doble click sobre el puerto serie que estemos usando. Vamos a la pestaña "Configuración del puerto" y, de arriba a abajo, introducimos los valores "1200", "8", "Ninguno", "1" y "Ninguno". A continuación pulsamos "Opciones avanzadas" y deshabilitamos la casilla "Usar búferes FIFO". Aceptamos los cambios y cerramos el panel de control.

Insertamos el PIC en su zócalo.
Esto SIEMPRE hay que hacerlo con el programador desconectado del ordenador. Recordad que los integrados se insertan de modo que la patilla 1 quede en el extremo que tiene una muesca. Si vais a programar PICs de 8 patas insertadlos en un extremo del zócalo de 18 patas, ya que el de 8 está configurado para programar memorias EEPROM. Ahora sí, conectamos el programador al PC. Si la conexión con el puerto serie es correcta y el PIC está bien puesto la luz roja del SMT1 debería encenderse.

Volvemos a ICProg.
Abrimos el fichero hex que contiene el código a programar (Ctrl+O), y pulsamos el botón "Program All" (F5). Si todo ha ido bien ICProg muestra el mensaje de confirmación "Verification succesful".

Cosas a tener en cuenta si el invento sigue dando problemas:

Cerrar todas las aplicaciones a excepción de ICProg.
He comprobado que con algunos programas P2P trabajando en segundo plano se producen muchos fallos en la comunicación.

Usar un PC de sobremesa.
En algunos portátiles los puertos serie están "recortados" para ahorrar batería y no dan la corriente necesaria para programar.

Jugar con la configuración del puerto en Windows.
Por lo general se recomienda una velocidad inferior a 9600 baudios, es cuestión de ir probando. También se puede configurar el control de flujo a "Xon/Xoff".

Usar "Direct I/O" en lugar de "Windows API".
A mi se me cuelga el ICProg cuando lo intento, pero he leído que hay a quien le funciona.

Variar el valor de "I/O delay".
Cuanto más alto sea este parámetro más lento será el proceso de programación pero también menos propenso a errores de comunicación.

Repasar la colocación del PIC dentro del zócalo.
Recordad que el pin 1 va en el lado que tiene la muesca y que para los PICs de 8 patas se usa un extremo del zócalo de 18. Podeis probar con más de un PIC por si se diera la improbable circunstancia de que tengais uno defectuoso.

Desconectar y reconectar el programador al PC.
He notado que a veces se producen muchos fallos seguidos y se solucionan de esta forma. Puede que sea por el puerto o por el software... Misterios de la informática.

Comprar / fabricar otro programador.
Si sólo vais a usar PICs de 8 patas hay esquemas circulando por la red en los que con tan sólo 3 resistencias y un transistor tendreis el apaño hecho. Yo mismo he construido uno de este tipo, comunmente conocido como el "Cutre Programador", y funciona mucho mejor que el dichoso SMT1. Para los más manitas circula incluso el esquema de un programador genérico para PICs USB, que al ser USB se puede usar sin problemas en un portátil.

Espero que estos consejos os hayan servido de ayuda, ¡Suerte y buena programación!

Noticias anteriores