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

Habi dice: Me dan ganas de meterme en un agujero oscuro y no salir hasta que venga un puto hobbit a robarme un anillo

Arreglando cosillas

Habi - 24/03/2016 19:45:26 - Posts lúcidos

No suelo escribir mucho por falta de tiempo, así que se me acumulan las cosas. Veamos 3 cosillas que he “apañado”.

Empezaré hablando del “Single Chip AVR BASIC Computer V0.3”; como su nombre indica, es un miniordenador construido en torno a un microcontrolador ATMEGA1284P. Él mismo genera la señal de vídeo y viene con un intérprete BASIC.

 

 
Cuando me puse a mirar el software me llevé las manos a la cabeza: es un refrito de varias cosas hechas por otra gente; y alguna de esa gente tampoco tenía mucha idea. Por ejemplo, las rutinas en ensamblador de bajo nivel para el vídeo y tal son muy buenas, pero de ahí para arriba la cosa empeora (TVOut, el propio Tiny BASIC Plus y lo peor: el código escrito por el autor). El punto más bajo para mí es donde pone “TV.begin(PAL, 720, 480);”.
 
 
¿Qué tiene de malo? Dejando de lado el hecho de que es imposible por velocidad y memoria, ese método sólo acepta bytes (con lo que es equivalente a sacar 208x224), he ahí las 34 columnas que sacaba. Y dentro de ese método “begin”, por cierto, hay también varios errores: la comprobación de que x sea divisible entre 8 debiera ser “if ( x & 7 ) return 1;”, no da el error sobre las Y que dice que da, etc. También tiene otro en el cómputo de columnas (donde dice “if (cursor_x >= (display.hres*8 - pgm_read_byte(font))) {“ debiera ser > a secas), ... Se corrigen.
 
También está mal dimensionada la memoria; se hace dinámico con el montón, se le habilita el sonido, y haciendo limpia se queda el fw en la mitad. También habilito los comandos gráficos (creando esos tokens en BASIC). Ahora tenemos CLS, LOCATE, PSET, LINE, RECT, CIRCLE, ... y hasta un huevo de pascua. :D
 
 
Un par de cosas graciosas del intérprete: probad a teclear “10 En un lugar de La Mancha”, y veréis que acepta la línea (otra cosa es que de error al ejecutar; para él, todo es una cadena de texto por dentro y la interpreta constantemente; no tokeniza, es lento). Y otra: si tecleamos “10 GoTo 10: Print "Hola"”, un programa perfectamente válido sintácticamente (aunque le sobraría el Print) nos da un error al ejecutar, porque debe parear el final del Goto con un retorno de carro y no los dos puntos.
 
Finalmente, me decido y le cambio el cristal por uno de 20Mhz (total, no uso bootloader ya para sacar más memoria), y eso me permite sacar en horizontal más resolución. Le pongo 256x192, porque me recuerda mucho a un Zx80. Y porque lo mismo le hago un emulador del mismo algún día.
 
 

Lo siguiente en la lista es la WozBlaster. Es una tarjeta de sonido para MSX, clon de la MoonSound. El diseño de ese blog se ha fusilado hasta la saciedad.
 
Sin embargo, tiene un problemilla; cualquier persona que la ha construido / comprado puede observar cómo se calienta hasta el punto de quemar. Pero, ¿a qué se debe ello?
 
El problema está en la GAL. Ha sido “compilada” a partir de un esquemático y sin especificarle qué hacer con las patas sin usar; así que quedan conectadas a Vcc. Y en la placa están conectadas a Gnd. Ahí tenéis 4 bonitos cortos, algo peligroso para la fuente del MSX, el MSX y la propia WozBlaster.
 
¿El arreglo? Simplemente levantando esas patas (11, 12, 13, 14 y 17)...
 
 
...O siendo más profesional, rehaciendo las ecuaciones y de paso calculando en paralelo /CS para que no se retarde la generación de /BusDir (con lo que se pueden usar GALs más lentas, y por tanto baratas).
 
 

Hace poco me hice con un Everdrive N8 para mi Famicom. Un cacharro realmente interesante.

El caso es que fui a probar el Maniac Mansion, el cual funciona perfectamente en todas sus versiones occidentales., pero por alguna razón no funciona la japonesa.
 
¿A qué se debe? Pues aparentemente a que los volcados que hay por internet están mal hechos; usa un mapper 2 y está marcado como 242. Tan sencillo como coger un editor hexadecimal y cambiar el byte 7 de $FF a $0F.
 
 
 
Una versión occidental, para comparar:
 
 

enrique - 25/03/2016 12:05:55

te echaba de menos!



Habi - 26/03/2016 19:43:28

¡Gracias! :) 
 
Es lo que tiene tener poco tiempo libre.



Victor - 01/04/2016 18:34:51

Ya tardas el cambiarte el nick, eres Bitman! el superheroe de los bits 
 




Post cerrado