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 (intrigante) dice: Y te pagan las horas extra, supongo.

N-ésima cagada

Habi - 11/06/2011 1:25:29 - Yuyus

Por aquí tenemos la costumbre de terminar todos los refranes en "patada en la boca". En este caso tenemos: En casa del herrero, patada en la boca.

Bien. Todo comenzó cuando me pregunté cuán rápido podría ser el puerto paralelo de un ordenador moderno (integrado en su controlador IO y accedido a través de LPC) con respecto a uno clásico.

Así que me bajé un driver de acceso a puertos, el cual venía hasta con un componente escrito para Delphi. Vale, escribo un programa que accede 1M de veces a algún puerto y calcula la frecuencia. Y en el caso de $378 me da más de 80Mhz en escritura, y más de 75Mhz en lectura. Wow.

Al principio no me lo creí, pues el LPC debe dar un ancho de banda comparable al ISA. Pero después de ver que todo me iba bien decidí, erróneamente, aceptarlo; a saber cómo integran las cosas hoy en día, lo mismo colgaba del puente sur directamente.

Con eso puedo adaptar una unidad de disco y controlar todos los aspectos desde el PC, sin usar controladora ni nada; eso pensé, pues estaba haciendo un proyecto similar a través de USB y esto me simplificaba mucho. Así que me dispuse a ello:

Para acelerar, pasé de usar el componente y llamé directamente a las funciones del driver desde mi programa. Se hacen algunas funciones básicas (como dirección, paso, …), otras intermedias (como Index, Seek), y a probar.

Conecto, le hago los primeros tests, y… ¡perfecto! Descubro que la señal IDX no se apaga inmediatamente, sino que se mantiene un rato (arreglo fácil) y el resto (control del motor, cabezales, densidad, lectura, escritura, etc.) van perfectos. Puedo, en efecto, leer las magnetizaciones y decodificar todo con el PC, pudiendo por tanto leer discos de Amiga, C64, etc.

Así que me dedico a almacenar valores, temporizados con QueryPerformanceCounter y es entonces cuando descubro con horror que captura muchos menos de los que debería. Haciendo pruebas veo que las lecturas al puerto son mucho más lentas de lo que esperaba, algo más de 350Khz (bastante superior a un puerto paralelo normal, pero yo necesito al menos un par de Mhz para lo que quiero; y muy por debajo del ISA, ¿nos frena el integrado en este caso?).

Y es que no basta con crear el componente de acceso a puertos; además hace falta llamar a un método para su inicialización interna, que no se llama desde su constructor. Una vez llamado, los resultados son los mismos.

Finalmente, ya estaba pensando abandonar el prototipo en placa de agujeros y volver a mi diseño original con PIC e interfaz USB 2.0 cuando me he dado cuenta de algo: la contención es realmente similar en otros puertos em los que no debiera serlo; es decir, es consecuencia del overhead de los cambios a modo núcleo, IO, etc. Ayh. Usando otro método en un SO de 32 bits logro más de 750Khz, y lo mismo bajo Linux con ioperm / iopl. Ayh ayh. En cualquier caso insuficiente, gracias a esta arquitectura chapucera.

4


Teaser

Habi - 05/06/2011 23:07:55 - Chorradas

Llevo tiempo sin publicar nada. Así que, aunque no me gustan los teasers, ahí van un par de dos proyectos distintos...

3


Arte aviar

Habi - 19/05/2011 20:59:40 - Yuyus

Bolsipoio vomitón sobre pseudocroma glauco:
 
Y de regalo:
 

5


Dragon Bore

Habi - 18/05/2011 22:08:36 - Chorradas

Hace poco, buscando algo entre mi colección de CDs originales, me encontré con un añejo juego: Dragon Lore: the legend begins (1994), publicado como parte de una colección de juegos en CD-ROM de Planeta DeAgostini en 1996.

El juego ha envejecido bastante mal; a pesar de ser un pseudo-3D con gráficos renderizados éstos son VGA estándar (320x200x256) en vez de la SVGA ya típica por esas fechas (640x480x256 como p.ej The 7th guest que es del año anterior o Myst también del 94).

El pseudomovimiento de los personajes es lo peor: dentro del juego son sprites 2D estirados malamente en la pantalla, y en las animaciones 3D renderizadas es patético, a saber qué se fumaron los ¿animadores?

Pero lo peor es la interfaz de usuario, es indescriptible lo incómodo de tener que usar los dos botones del ratón y de forma distinta para cada cosa, y sobre todo el tener el mismo atajo para hablar con alguien Y para atacarle; ideal para hacer amigos. Además el juego cuenta con un desarrollo absolutamente lineal y extremadamente simple.

Sin embargo, los paisajes están muy trabajados (al contrario que los personajes), y la música es decente. Y para la época supongo que era un buen juego, con el que bastaba ver la intro para quedarte embobado.

En cualquier caso, decidí desempolvarlo, jugarlo un poco y mirarlo por dentro (desempaquetándolo previamente). Y así es como descubrí varias cosas. Como que la edición de Planeta no es la original.

Supongo que habrá una edición original en castellano, porque por dentro existen recursos para inglés, francés, español y alemán en los textos cortos y largos, así como soporte de una demo. En la edición de planeta están los textos en inglés y francés, y no hay español; sólo han traducido los textos cortos de descripción para el inventario (en SmallENG.bin) sobre el propio idioma inglés y también la interfaz en el ejecutable (Tales.exe).

Por eso esta versión NO tiene subtítulos. A cambio tiene un doblaje realmente malo al castellano latinoamericano basado en una peor traducción. Y como marca de la casa, Planeta usaba una imagen de CD con mayor tamaño que el de grabación, para que diese errores de lectura si se intentaba copiar.

Así que ayer mirando por internet, localicé y bajé la última versión en inglés, la Gold. Para empezar, el intérprete no es mismo: pasamos de un programa de algo más de 100KB escrito en ensamblador (requiere casi 600KB, pero funciona en mi viejo XT) a uno hecho en Watcom C de casi de 2MB (necesita esa memoria, y un 386; y al contrario que el primero, no tiene una caché variable XMS / EMS).

Desgraciadamente han cambiado más cosas y no puede sustituirse tal cual sin más, porque con éste nuevo SÍ funciona la canción del inicio en DosBox y automáticamente pone su velocidad (por estar en modo protegido). Internamente han agrupado los archivos de de zona (.kf, .vue, .zon y .bit) en uno solo (.kfg), han añadido sincronización en la voz (.pls) y una nueva revisión del formato .hnm. Y algunos cambios menores, como música ambiente, mejor menú, cursor de espada en vez de Werner dando vueltas, pequeñas animaciones extra, animaciones sin reborde negro, etc. Y por fin botones separados para hablar y atacar.

A cambio han quitado muchos sonidos que por otro lado son innecesarios; por ejemplo, no hacen falta 32 sonidos de esquivar (WOOSHxx.VOC), los 10 de la Gold sobran. Y además con la nueva versión (HNM4) de los archivos .hnm ocurre que la versión Gold al final ocupa algo menos que la de Planeta.

Otra cosa que me llamó la atención en ambas versiones han sido los parcheos: para inutilizar archivos del empaquetamiento machacan el nombre a “xxxxxxxx.xxx” y así no tener que reempaquetar 600MB de datos. Y curiosamente que en la Gold utilizan un modo X para el video (con unas rutinas realmente lentas, necesitarás un 386 decente o mejor un 486) para un juego que no lo puede aprovechar pues no hay scrolls (framebuffer mayor) ni se usa un segundo buffer (página) de video.

Por todo lo demás son casi idénticas. Algunas diferencias mínimas de cara al usuario, como:

   

 

   

¿Por qué he perdido tiempo con todo esto? No sé, pero no ha estado mal.

2


Apañando XTs (I)

Habi - 08/05/2011 21:07:34 - Tecnoesoterismo

Hace mucho, mucho tiempo regalé mi primer PC (del que ya he hablado) a mis sobrinas; tiempo después acabó en una casa alquilada de la cual tenía la sospecha que iba a ser abandonada en breve; así que un buen día y con la ayuda de mi sobrina M. nos pasamos y recogimos el Spectrum 48Kb, la Atari 2600 y las "tripas" de mi viejo PC. Y el tiempo me dio la razón.

La placa no tiene dimensiones estándar y además originalmente tenía un raiser para el bus ISA, con lo que sólo tiene un conector:

 

Algo que he decidido arreglar hoy:

 

Y de paso cambiarle la sulfatada batería de NiCd:

Por culpa de las EPROMS con la BIOS no se pueden enchufar hasta el fondo placas ISA de 16 bits, pero hacen bien contacto. Podría moverlas a la zona vacía donde la RAM (ya que usa bancos de 2 chips de 4b en vez de 8 de 1b), o mejor aún: poner el zócalo por debajo y enchufar las EPROMS con las patillas dobladas al revés. Pero no es necesario, es apenas 1mm.

En cualquier caso vuelvo a tener mi viejo XT perfectamente operativo. A ver si me hago con un XTIDE, y le hago una carcasita chula, aunque sea de cartón.

4


Oriental delight

Habi - 03/05/2011 0:14:55 - Chorradas

Ricos, ricos. :9

9


Ahi va otro

Habi - 02/05/2011 0:50:31 - Yuyus

16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

 

2


Clonatari

Habi - 01/05/2011 21:54:47 - Chorradas

Hace no mucho me cogí por eBay un pack temático de Atari 2600:

Abajo veis una Jr de segunda generación (arcoíris amplio), y la de arriba que parece una de primera no es sino un cutreclón (made in Taiwan), con ¡255 juegos incorporados!

En la parte de atrás tiene un conmutador "128 GAME <- 32 GAME -> 95 GAME" de tres posiciones. La posición de 32 juegos funcionaba sin problemas, en las otras dos no sólo no se llegaba a esa cuenta, sino que hacía cosas raras a veces.

Además indicador cuadrado rojo no se iluminaba con la consola en funcionamiento; de hecho es una pegatina. Es por ello que decidí abrirla:

  

  Extrañamente, tiene un led rojo de alimentación, pero redondo en vez de cuadrado; hay un agujero en la carcasa donde el rectangulito rojo, pero la luz es tan tenue que no llega a traspasar, no se ve ni en oscuridad total; pero ahí está, claramente visible con la consola abierta.

Tras repasar la tierra del conector de video (y mejorar así la calidad de la imagen) y la entrada al regulador de corriente (funcional, pero mal soldada) me percato de dos diodos cerca de la ROM de máscara de la parte de abajo; dos 1N4148 que están cortados, a mano. Diodos que vienen desde el conmutador de selección de juegos.

Así que además decido apañar el corte (un tanto malamente, pero funcional):

 

 

Y... sorpresa: la posición de 128 saca los 128 sin problemas, la de 32 funciona perfectamente y los 95 se cuentan perfectamente... aunque son juegos repetidos. Lo cual es legal: dicen que son 255 juegos, pero no que sean distintos. Mirando por internet, vemos que éste es el comportamiento normal, y haciendo caso a los integrados, éste es en efecto el comportamiento original.

En definitiva: supongo que un intento del anterior dueño por ver si podía sacar más juegos, y luego no supo cómo apañarlo.

0


Ping post

Habi - 01/05/2011 1:28:04 - Chorradas

0


Retropingüinos

Habi - 04/04/2011 10:33:12 - Tecnoesoterismo

Corte...

...y confección.


18


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