viernes, 30 de mayo de 2008

Arranque del VG8010 en BlueMSX 2.7.1

Pues eso, para que no digáis que no cumplo, aquí tenéis un vídeo del arranque de la BIOS que volcamos del VG8010 en el BlueMSX 2.7.1. Como este emulador no soporta la extraña configuración de matriz de teclado que tiene dicho ordenador (así como su antecesor el VG8000), no hay forma de escribir algo coherente.

El mensaje que "se supone" he escrito es el archiconocidísimo "hello world!" y ya véis qué sale, jejejeje.

miércoles, 28 de mayo de 2008

Una nueva tienda de MSX en internet

Pues sí, cual no sería mi sorpresa cuando, trasteando en eBay, me encontré con el anuncio de la tienda de MSX Calamar. Este grupo de MSX es conocido por crear el PSX2MSX, un adaptador de joysticks de PlayStation a MSX.

Al parecer vuelven con fuerza y estrenan tienda en internet (http://www.msxcalamar.com) no dejéis de visitarles, que seguro que nos traerán muchas sorpresas en breve.

martes, 27 de mayo de 2008

Kralizec Goonies

Alucinante lo que nos están preparando nuestros amigos de Kralizec. Se trata nada más y nada menos que un juego basado en la conocida película de Los Goonies para MSX que promete ser uno de los bombazos de este año. Según sus autores es mucho más fiel a la película que el juego que en su día sacara Konami.

Las características del juego serán:
  • Cartucho físico de 4Mbits (512Kb) con música SCC.
  • Juego para MSX2, con soporte opcional para el VDP 9958 (MSX2+ ó Turbo-R).
Si no sucede nada raro el juego estará disponible a la venta este mismo año a través de la MSX Cartridge Shop, pero mientras tanto podemos disfrutar de un vídeo promocional desde YouTube.

lunes, 26 de mayo de 2008

Aleste 520EX y BIOS del VG8000/VG8010

¡Buenas!

Ayer nos reunimos unos cuantos amigos de Madrid para ver el Aleste 520EX, un curioso ordenador ruso híbrido entre CPC y MSX. Estuvimos probando juegos de ambas plataformas y la verdad es que funcionaban bastante bien, aunque en algunos de MSX (como el Vampire Killer) se veía como se redibujaban algunos trozos de la pantalla, fruto de un VDP que emula el 9938. Aquí podéis ver unos cuantos vídeos del ordenador corriendo diverso software. En esta página, podéis ver las características principales de este ordenador y aquí una página íntegramente dedicada al mismo.

También estuvimos volcando la BIOS de un VG8010, un curioso modelo de MSX hecho por Philips que no tiene puerto de impresora. Como no teníamos la fuente de alimentación de este ordenador, tuvimos que sacar el chip y leerlo con un lector/grabador de eproms. Tras varios intentos lo conseguimos y la probamos en el emulador BlueMSX. Curioso es que los colores de arranque no sean exactamente los mismos que en el resto de los MSX1, pero ya que el teclado esté mapeado de una forma completamente diferente al dictamen del estándar MSX es una locura. A ver si grabo un vídeo del arranque y os lo pongo por aquí.

Fue una mañana divertida para celebrar el día del orgullo friki :D

miércoles, 21 de mayo de 2008

Replayer PT3 en ROM con sintáxis asMSX

Creo que el título lo deja todo claro, ¿no?

Os dejo en la sección de descargas (nuevamente agradezco a La SeKTa el que me hayan proporcionado un espacio en su ftp) el código fuente del replayer de PT3 para MSX, con la particularidad de que esta versión funciona desde ROM (no contiene código automodificable) y ha sido adaptada a la sintáxis del asMSX. La eliminación del código automodificable ha sido obra de MSX-Kun, yo me he limitado a adaptarla al ensamblador que utilizo y a compactar lo más posible el código.

Junto al código del replayer he incluído un pequeño programa de ejemplo que, si tenéis un módulo PT3 a mano, genera una ROM y reproduce la canción desde ROM, gastando apenas 382 bytes de RAM, mientras que el replayer ocupa 1528 bytes en ROM. Esta es la versión que, actualmente, se encuentra funcionando en el QBIQS.

No olvidéis que el replayer original fue programado por Sergey Bulba y puede ser encontrado aquí

¡Espero que os sea útil!

viernes, 16 de mayo de 2008

33ª Reunión de Barcelona

Dentro de tres semanas se celebrará la Trigésimo Tercera Reunión de Usuarios de MSX en Barcelona a la que tengo previsto asistir. Allí pondré un stand donde se podrá probar el QBIQS y, además, llevaré un montón de hojas preparadas para que los visitantes dibujen patrones de piezas para ser incluídos en el juego, con el aliciente de poder probarlos in-situ.

Como ya os dije, no podéis perderos esta RU ya que promete ser muy interesante.


martes, 13 de mayo de 2008

Una rutina elegante

Definiendo el problema

El problema consiste en hacer mirroring de 4 nibbles W X Y Z, situados en dos bytes en ram en la forma WX e YZ. El resultado deben ser dos bytes de la forma ZY y XW, vamos, que los cuatro nibbles se han dado la vuelta por completo.

Normalmente leeríamos los bytes en el registro A, enmascararíamos para quedarnos con el nibble inferior, rotaríamos, leeríamos el nibble superior, guardaríamos los nibbles en variables auxiliares y escribiríamos todo después de haber hecho las rotaciones "a mano". Sin embargo yo quería hacerlo más elegantemente, de manera más rápida y, obviamente, con el menor número de instrucciones posibles.

Resolviendo el problema

Empecé por usar HL y DE como punteros, de forma que HL apuntase al primer byte (el compuesto por los nibbles WX) y DE al segundo byte (compuesto por los nibbles YZ). A continuación empecé a escribir instrucciones en la libreta a ver qué pasaba. La primera fue RLD.

¿Qué hace estra instrucción? Rota a la izquierda 4 bits de un número de 12 bits formado por los 4 bits inferiores del registro A y el byte contenido en la dirección de memoria apuntada por HL... Vale, pongamos un ejemplo :D

Si A vale $7E (en hexadecimal) y la posición de memoria apuntada por HL vale $38, al hacer RLD rotamos el número $E38 cuatro bits hacia la izquierda, resultando el número $38E, que vuelve a situarse en los 4 bits inferiores de A y en la posición de memoria apuntada por HL, es decir A valdrá $73 y la posición de memoria apuntada por HL $8E (ojo, siempre que sea RAM, que si no no variaría).

La solución

A partir de aquí el resto de la rutina salió solo. Como quería ir leyendo y escribiendo del contenido de las posiciones de memoria apuntadas por HL y DE se me ocurrió seguir con EX DE,HL instrucción que intercambia el valor de ambos registros. Así, después de un rato emborronando las páginas de mi libreta mientras iba en el metro, salió la siguiente rutina que realiza el trabajo deseado:

RLD
EX DE,HL
RRD
EX DE,HL
RLD
EX DE,HL
RRD
EX DE,HL
RLD

Donde RRD hace lo mismo que RLD pero desplazando a la derecha en lugar de a la izquierda. El valor que tuviera el registro A al comienzo del algoritmo seguirá siendo el mismo al final, igual que los valores de DE y HL, por lo que para utilizar esta rutina no hace falta salvar el contenido de ningún registro.

Y ahora me diréis "vale pero, ¿para qué sirve esta rutina?". Imaginad que tenéis una tabla formada por nibbles y que queréis darle la vuelta, es decir, obtener la misma tabla pero en sentido inverso. Por ejemplo para obtener la imagen especular de un puzzle del QBIQS... :)

¿A que queda elegante?


lunes, 12 de mayo de 2008

¡Más PONGs!

¡Muy buenas!

Aquí os dejo un enlace a un zip que contiene todas las versiones de PONG presentadas al Let's Pong que organizó Karoshi en verano de 2005, entre las que se encuentra el PONG512.


En total encontraréis seis diferentes versiones del juego PONG en 1k, más un extra de una versión extendida de una de ellas en algo más de 1k. Todas las versiones (salvo BONG) con su código fuente listo para ser estudiado por quienes se inicien en la programación en ensamblador.

Como diría un amigo mío (que se que lee este blog): "este enlace vale su peso en langostinos" ;D

lunes, 5 de mayo de 2008

QBIQS (VII) Nuevo vídeo

Lo prometido es deuda, así que aquí tenéis un nuevo vídeo del QBIQS. ¿Qué principales diferencias se pueden ver entre este vídeo y el de hace un año?
  • Punto de mira funcionando
  • Detección de rectángulos, incluso los formados por más de una pieza (combos)
  • Eliminación de rectángulos
  • Marcadores de puntuación
  • Marcador de nivel
  • Indicador de combos
Sin embargo aún quedan muchas cosas por hacer, ya que seguro que os habéis dado cuenta de que los puzzles siguen siendo los mismos (de hecho el mismo) que hace un año. Lo siguiente que me toca hacer es programar el final de cada nivel y a continuación me meteré con el tema de generar los niveles de forma aleatoria, así que los puzzles cambiarán (por fin) en breve.

Espero que os guste, como siempre dejad vuestros comentarios por aquí.