Habi Hablóg
Declaro:
XML válidoXHTML válido800x600 +
RSS válidoCSS válidoNavegador digno
  Blog   Archivo   Contacto   Administración  

Acerca de

Matemático, informático, aficionado a la electrónica, friki... y otras cosas que no vienen a cuento ni pasan los filtros de palabras.

¿Queríais un blog? Ahí va.

Red antisocial

¡Me van a volver loca! 2.0
La Fragata Portuguesa

Z
¡Me van a volver loca!

Últimos posts

El expediente X que nadie pidió
eNigma
La cuadratura del píxel
Portando desde Spectrum
Inexorable

Últimos comentarios

Habi
NoSupoResolverLaFuncion
Edu
Habi
EnriqueGG

Calendario

No hay fechas.

Categorías

Chorradas
Paranoias
Posts lúcidos
Tecnoesoterismo
Yuyus

Cenas de Abj

Abj debe 7 cenas.

Frase célebre

Abjurador dice: Por mí, lo hacemos como más cómodos os sintáis.

Recapitulando (I)

Habi - 28/11/2009 15:04:47 - Tecnoesoterismo

Me falla la memoria; haciendo un post nuevo, me he puesto a buscar otro que creía haber escrito en este blog, cuando no lo hice aquí. En fin, copiaré una parte del mismo actualizada para que se quede en este sitio para la posteridad (la caché de Google).

El post es sobre un juego antiguo, una de esas historias interactivas eroge tan comunes en Japón y una de las pocas en ser traducidas al inglés. Su nombre es Nocturnal Illusion (Mugen Yasoukyoku).

Normalmente suelo pasar de este tipo de juegos, pues no suelen ser más que una excusa para mostrarte imágenes hentai. Sin embargo este tiene una muy buena historia de fondo y las escenas cerdas metidas como con calzador. Me dijeron que me iba a gustar y no se equivocaron. En esta línea de juegos de misterio (aunque con toque gore en este caso) podemos encontrar más recientemente a otros como el DiviDead (pobre perro ¿Saburo se llamaba?), pero eso es otra historia.

Le eché una ojeada por dentro, y me di cuenta de algo: no es más que una máquina virtual, los verdaderos scripts son independientes de la plataforma. Considerando los inconvenientes del juego (es un ejecutable de 16 bits NE, pero con un segmento de 32 bits para las operaciones gráficas) me decidí a analizarlo y generar de nuevo la máquina virtual.

Tal cual está no funciona en ninguna versión de Windows de 64 bits (pues ya no existe la máquina virtual de 16 bits). Tampoco es fácil debugearlo, pues está dentro de la VM de 16 bits, y la mayoría de los debuggers asumen siempre código de 32 bits, y aunque no sea así saltamos al código de la VM a la mínima. Sólo hay un desensamblador (que no debugger) que funciona bien, el IDA, con esta mezcla 16 bits / 32 bits.

Así que lo primero que hice fue desensamblarlo enterito, y después de agrupar código y datos, quitar basura, renombrar las cosas, identificar estructuras, etc, acabé con un librito de sólo 170 páginas en Courier de 8 puntos, doble columna y doble cara.

 

Más tarde, y tras buscar durante bastante tiempo, fui capaz de encontrar el original japonés para PC98.

¿Qué es un PC98? Es la abreviatura de PC-9801 y de los PC-9821, unas máquinas autóctonas de Japón fabricadas mayormente por NEC aunque hubo clones. Mientras aquí teníamos PCs, ellos tenían sus propias arquitecturas y no fue hasta la salida de Windows 95 que las empezaron a dejar de usar.

Estaban basados en x86 (8086, NEC v30 en principio; 80286 y 80386 más adelante, y después son básicamente PCs), con sus chips PIC y DMA pero en otras direcciones de hardware. Distintas BIOS con su soporte de kanas y kanjis y hardware de video y sonido dedicados. Aunque había otros competidores (x68000 (Sharp) y FM Towns (Fujitsu), por citar algunos), este fue el más extendido.

Tenían su versión de DOS y todo, similar al DOS/V pero con los kanas en BIOS, y usaban los mismos formatos de disquete y casi los mismos de disco duro (aunque con algunos cambios; hasta 16 particiones en vez de 4, unidad de arranque siempre A en vez de A ó C, arranque desde cualquier unidad (disquete, HD, MO, CD-ROM, ...), proceso de arranque estandarizado). Por eso es que es relativamente fácil entender sus programas, salvando accesos a hardware y llamadas BIOS.

En cualquier caso, las fases del proyecto con el Mugen son:

  1. Desensamblado (100%).
  2. Análisis (100%).
  3. Creación de la máquina virtual (75%).
  4. Creación de herramientas de manipulado de scripts (ensamblado / desensamblado) (0%).
  5. Modificaciones al programa (0%):
    1. Traducirlo al castellano.
    2. Añadirle el texto original japonés (y creo que también salió en chino, si alguien lo sabe que me lo confirme).
    3. Poner un modo sin escenas cerdas.

De momento está parado, hasta que me dé el yuyu algún día. Pero está bastante avanzado, funcionan perfectamente todos los menús y muchas partes del juego, y es compatible con los juegos guardados que se tengan.

Su VM trabaja con palabras de 16 bits, y tiene alineado su código y hasta sus datos a nivel de direcciones. Consta de unos 100 opcodes distintos, con funciones tanto de bajo como de alto nivel.

Particularmente me costó la rutina de decodificar las imágenes, una mezcla de códigos de longitud variable y diccionario rotatorio. Un formato japonés conocido simplemente como PI.

También hice una herramienta que manipula los archivos empaquetados, extrae, quita y pone ficheros, y navega por las imágenes y scripts mostrándolos.

Y ya vale de post, que bastante he escrito para ser una recapitulación.

0


Nigromancia II

Habi - 12/11/2009 12:51:30 - Posts lúcidos

Hoooooooola, vine a reanimar a los muertos.

 

 

Bueeeeeeeeno, chao.

2


Formatos

Habi - 01/11/2009 23:02:00 - Tecnoesoterismo

Dibujos

Mi primer programa de dibujo venía con mi primer ratón (que me regaló mi hermana) para mi primer PC. Por aquel entonces, eran un artículo de lujo y costó lo suyo.

El programa se llama Mouse Painter y, al igual que el resto del software, estaba en alemán:

El programa utilizaba el formato PCX, de sobra conocido. En sus tiempos me hice mi propio visor en ensamblador, y más adelante uno más refinado en Turbo Pascal con soporte para más formatos. He aquí un pequeño collage de dibujos hechos con ese programa que aún conservo (y hay un premio para quien averigüe de dónde sale la tortuga esa):

Tiempo después llegó un programa de dibujo un tanto mejor, el Dr Halo:

El otro día intenté leer sus archivos de dibujo, y me di cuenta de que no aparece la información exacta del formato PIC en ninguna parte, sólo del CUT (para recortes). Además, no funciona bien en DosBox.

Una vez terminé mi propio programa conversor, me dijeron que sí existía algo de información en http://www.dal.kr/chair/ce/gformat/halo.txt, aunque es para una versión anterior, no listan los modos de video y tarjetas, no saben lo que hacen los campos de longitud y peor: no dicen cómo están los gráficos, se limitan a decir “I *do not* recommend trying to do any conversions to or from Halo .pic files. They are terribly sensitive to boards and modes thereof”.

En fin, ahí va otro de esos collages:

Y finalmente vino la época dorada: el Autodesk Animator y el Autodesk Animator Pro. A mi parecer el mejor programa de dibujo y animación, con permiso del Deluxe Paint, y facilidad de exportación para usarlos en mis propios programas (GIF, PIC en crudo, y documentación abundante de los formatos CEL, FLI y FLC):

Y aquí nada de collage, porque ya no era tan niño cuando hice los dibujos, y en este caso sí avergüenza. Pondré sin embargo un dibujo psicotrópico de una sobrina mía:

 

Sistemas de archivos

Supongamos que se tiene una imagen de disco, y que ese disco tiene formato NTFS. Aunque bajo Windows 7 puede montarse no me vale, pues es de un disco pocho. Así que me decidí y le añadí soporte NTFS (sólo lectura) a mi programa editor de imágenes:

Total: una tarde. Y funciona, en vez de quejarse y cascar como hace el Linux (loopback) por estar pocho el disco.

 

Paquetes RPA

Y por último una petición, un programa que extraiga archivos del formato RPA que usan ciertos juegos:

Viendo que es un formato propio del Ren’Py y viendo para qué vale ese programa me hago una idea de para qué se le va a usar. En fin.

En cualquier caso, hay una pequeña cabecera que incluye dos datos: el origen del índice y la clave con la que se encriptan las entradas de posición y longitud de los ficheros. Los ficheros están además con basurillas entre medias para confundir, y en versiones modernas con parte del principio del mismo dentro de los índices.

Los índices están al final, comprimidos con Deflate, y codificados con esa clave. En versiones modernas están hasta los 16 primeros bytes incluidos dentro, para que no funcionen los programas de extracción de imágenes y tal (a la vez que mantiene la compatibilidad con las versiones anteriores). Y todo en un streaming de los objetos Python (pickled).

0


3D, o casi

Habi - 07/10/2009 22:34:43 - Tecnoesoterismo

Ya llegó mi nuevo pedido de DX. Esta vez tocaron algunas cosas para mi tallercito de electrónica y algunas gafas 3D.

Mi idea es usar unas de esas polarizadas con el monitor, aprovechando que el celofán gira 90º la polarización de la luz, para obtener una visión estereoscópica sin necesidad de recurrir a anáglifos ni nada por el estilo. Pero ya que estaban baratas, cogí entre otras las típicas con par rojo / azul.

Como seguramente sabrán, nVidia en sus drivers tiene soporte para sistemas estereoscópicos, a partir de una GeForce 8, para usar con gafas obturadoras de LCD y así enviar una imagen distinta a cada ojo sincronizándose con el refresco vertical.

Lo que ya es menos conocido es que tiene un modo “3D Vision Discover”, en el cual la propia tarjeta te monta el par en forma de anáglifo, corrigiendo colores, videos, etc. Así que decidí hacer la prueba.

El resultado depende un poco del juego pero es realmente bueno, y ya que funciona a nivel de drivers, compatible con casi cualquier juego o aplicación que use Direct3D. Particularmente estoy satisfecho con los resultados obtenidos con el Overlord, a pesar de no estar probado por nVidia, ni tener profile para él ni nada.

Hale, a dejarse los ojos.  8)

0


PDAndo USBísticamente

Habi - 04/09/2009 1:39:10 - Tecnoesoterismo

Esta es una imagen cogida de la web de cómo es la PDA que tengo con su peana, la cual es necesaria para cargarse, pues no se carga de USB:

¿Por qué no se carga de USB? ¿Por qué es el más de la mitad de alta que la propia PDA y aún más grande en profundidad? Esas son preguntas que siempre me hice. Así que me cargué la peana, y encontré una ínfima placa con el conector para la PDA, otro para el USB y otro para la alimentación:

El cable amarillo es un puente que le he hecho: de la alimentación del USB (igual que la de la fuente) al conector donde iba la misma. Ahora la PDA se carga de USB y sólo de USB (aunque se podría poner un diodo de baja caída pasé al final):

¿Por qué pasé al final? Pues porque con la fuente de alimentación externa y un conector USB hembra doble de una placa madre averiada puedo hacer esto:

Y alimentar / cargar cualquier cacharro USB directamente de la red, incluyendo si quiero la propia PDA.

¡Tachán!

1


M$ Boy

Habi - 02/08/2009 21:32:14 - Chorradas

Ahora que estoy de vacaciones tengo más tiempo para trabajar en casa. Colocando cosas de las cajas de la mudanza que aún tengo en el trastero, me he encontrado con esto:

Es el MS-DOS 4.01 que venía con mi primer PC, qué recuerdos. Pero al lado tenía esto:

¿Un 6.22 original? ¡Ah, ya recuerdo! Venía de regalo con:

Este NT4 server. También he localizado:

Un Windows 3, un NT4 workstation y este 98se. Pero no sólo había cosas de Microsoft en la caja, no crean:

Aquí tenemos un excelente DR-DOS 6.0, con su ViewMAX.

Y cosas más bizarras; un ServerGuide de IBM y software CAD para estaciones de trabajo CLIPPER (un cuasi-RISC de 32b) ejecutando CLIX (una variante de UNIX V) con extensiones de servidor para VAX / VMS.

A ver si me traigo del curro los ME, 2000 y XP para la colección.

3


Cianhidrosis

Habi - 31/07/2009 0:30:33 - Posts lúcidos

O cómo convertirse en un plastidecor gigante:

Cantad conmigo:

3


Cerdo nuestro

Habi - 26/05/2009 23:59:21 - Chorradas

En principio era el Cerdo.

 Y dijo: sea la luz; y fue la luz.

Entonces dijo el Cerdo: Hagamos a la Vaca a nuestra imagen, conforme a nuestra semejanza.

 

Amén.

2


The 7th thief

Habi - 09/05/2009 1:23:21 - Posts lúcidos

Volviendo atrás en el tiempo nos encontramos a Habi jugando a un juego en CD-ROM de los primeritos. De cuando no había casi nada en CD y encima no se podían grabar. Ese juego era "The 7th guest", publicado por Virgin (Trilobyte).

Es una historia de miedo (para mayores de 15 años, según la caja), la cual actúa como hilo conductor entre puzle y puzle, que es de lo que realmente va el juego. Está hecho con una mezcla de 3D prerenderizados y videos con actores de verdad, todo en dos CDs con una calidad muy buena para la época (nada de MPEG todavía) y una música muy correcta en onda / pistas de audio.

Los puzles son lo que uno cabría esperar: juegos de palabras, combinatoria, y algunos clásicos como los del ajedrez (caballos, alfiles, 8 reinas, etc). Con esta excepción:

Este juego de aquí se juega contra un adversario (AI), no es un solitario como el resto. Las reglas son simples:

  1. Cada uno en su turno elige una ameba de esas de su color, la cual puede hacer dos cosas: o se reproduce a una casilla adyacente o bien “salta” dos casillas de distancia.
  2. Una vez efectuado el paso anterior, las amebas contrarias que estén tocando a la de la nueva posición se convierten a su color.
  3. Se repite 1 y 2 hasta que no queden casillas libres. Gana quien más amebas de su color tenga.

Y no es fácil, juega bastante bien. De todos los puzles de ese juego, este me pareció siempre el mejor.

Pues bien. Hoy haciendo el tonto por el [archivo de World Of Spectrum], me he encontrado con esto:

Juego no publicado, cuyos autores hicieron para Virgin (Mastertronic) en su día. Y alternativamente para Amstrad CPC:

Y ya tirando de la madeja de esta cadena de fusilamientos descubrimos que a este juego se le llama Ataxx, en honor al primer clon del Infection. Para más detalles, la [página de la Wikipedia al respecto] y esta otra sobre la [versión para Amiga], en la cual descubrimos entre otras cosas que "Binary Magic" era el seudónimo de Craig Galley, el creador original del juego, el cual aparece por nombre en la versión Amiga:

Y aún más: si leéis la página de Spot (DOS) en este último sitio, hallaréis que quien estuvo detrás de esto fue Graeme Devine, quien estuvo en Mastertronic y luego en Trilobyte, Virgin mediante.

De las cosas que se entera uno.

6


Aventura

Habi - 29/04/2009 22:10:55 - Chorradas

Cuando uno se pone a mirar programas por dentro de vez en cuando uno se encuentra cosas. A veces son mensajes del tipo "No deberías estar leyendo esto", otras veces insultos, en algunas ocasiones intentos de ofuscación, cuelgue o incluso formateo del disco duro.

Otras veces uno se encuentra cosas simpáticas, como rutinas de debugeo que mandan mensajes a ventanas inexistentes, escriben la memoria de video monocroma o los mandan vía puerto serie.

Y otras veces lo curioso son las propias tripas, el funcionamiento del programa.

Hay un juego que me gusta, el Seiklus. Tengo por costumbre terminármelo en una horilla de vez en cuando. Pero en esta ocasión algo fue mal.
Podría haber sido por el Vista, por la arquitectura x64, por los nuevos DX, por los drivers de video... pero no, fue por la chapuza que es ese programa llamado Game Maker con el cual está hecho que no me funcionó del todo bien. Marcos negros alrededor de algunos de los sprites, y en cierto punto se me quedó colgado.

Me fastidió bastante la situación, así que me puse a hacer algo. Los ejecutables de ese programa son un pequeño runtime con el archivo del propio juego pegado (aunque encriptado). Es decir, una vez extraído, puede cargarse de nuevo en el Game Maker y tener acceso a todo el juego. Pantallas, personajes, scripts... todo.

Me bajé una versión 7, lo importé, y me puse a parchearlo, pues está hecho para una versión anterior (la 5): rehice la función draw_text_sprite, corregí las transiciones, las funciones de texto, las de viewport... y voila, un Seiklus compilado con la última versión que (medio-) funciona bien.

Mi descubrimiento, en la línea anterior del post, es que su creador ha definido sprites para objetos (personajes) que se encuentra en cada pantalla para recibir eventos. Como veis en la imagen, esos de la luna nunca aparecen en el juego. El de la corona está presente para coger las teclas durante el juego.
Junto con eso, notas internas para acordarse de cosas, un modo con trucos, fases de animación no usadas, repetidas para enlentecer (ya le vale) y una programación francamente mala. Tampoco es que el Game Maker de para mucho más, pero aún así.

Y con esto me despido, pues voy a jugarme por fin mi merecida partida.

0


Reglas del 10:
10 últimos   10 después   10 antes   10 primeros