sromero escribió:Pues tengo que decir que es una lástima.
Yo he estado varios años desconectado del mundillo retro (mínimo desde la salida del ZX-Uno) y volví hace poco. Hace cosa de 1 mes me encontré el ZXBareEmulator y me pareció una pasada. Una vieja Pi 1B de primera hornada (comprada el día de salida) y que por la poca cantidad de RAM ya no estaba para muchos usos, se convirtió de repente en un Spectrum que arrancaba en cuestión de unos segundos y con una calidad de imagen HDMI brutal.
Gracias por el apoyo Santiago. Contesto a tu mensaje en particular porque no quiero que quede la impresión de que determinado personaje, que es capaz de jurar que los círculos tienen esquinas, ha conseguido una victoria tan definitiva que me ha obligado a abandonar el desarrollo. Nada más lejos que La Coruña. Hace semanas que, porque vino a cuento, lo comenté también en VdR. O sea, que no ha sido un calentón, sino algo meditado hace meses.
Creo que alguna vez he explicado que la idea de un emulador BM la tenía mucho tiempo, pero era impracticable porque un PC es complicadísimo desde hace años, hay mucho HW diferente y sería muy engorroso de instalar en HD, o habría que hacerlo arrancar desde USB. Vamos que por muchas razones no es práctico ni posible.
Cuando salió la Pi tardé varios años en comprar la primera, una PI 1B+. Una vez que piBacteria demostró (a lo bruto,porque escribir un mínimo emulador en ensamblador del ARM tiene bemoles) que era posible hacer algo así, y descubrí la librería Circle, empecé a hacer pruebas de desarrollo, acerca de cómo actualizar la pantalla, cómo volcarla a un FB y otras cosas. Estuve 3 años largos colaborando con el autor de Circle, ayudándole a depurar funcionalidades, haciendo sugerencias (hay un buen puñado de cosas que están en Circle gracias a convencer a René de que era útil tenerlas) e implementando otras como el soporte de joysticks PS4, Xbox One y Switch Pro. Desgraciadamente, y esto no lo había dicho hasta ahora, René es muy estricto y particular con el tema del software y me dio un "ultimatum" para que publicara los fuentes del emulador, cosa que no acepté, así que mis colaboraciones con él acabaron hace más un año. La única manera que veo para que nadie se aproveche comercialmente del emulador es esa, no publicar los fuentes, el mundo está lleno de sinvergüenzas que se pasan las licencias por el forro de sus caprichos. Es una fuente de profunda insatisfacción no poder ponerlos en github, como está el resto de mis cosillas, pero no se puede tener todo. Y, aún así, lo venden en eBay, o lo vendían, no me dedico a buscar nada en esa plataforma.
Una vez tuve portado el core de Z80 a C++, me costó exactamente una semana de trabajo a ratos tener el 48k funcional. Y en un par de días más el 128k y el +2a (cuyo objetivo real no era el +2a, sino el +3, una vez tuviera FDC y DSK implementados). Parecía algo nuevo, un enfoque diferente, y sigo creyendo que lo era. Pero las opiniones de uno son una cosa, y las del mundo otra muy diferente. La mayoría de la gente no busca, ni conoce, ni entiende eso de conseguir "la máxima precisión", si sus juegos favoritos funcionan, probablemente la diferencia entre lo "bueno" y lo "excelente" es tan tenue que ni merece la pena el esfuerzo porque casi nadie lo aprecia. Y, para que nadie pueda pensar otra cosa, diré que ZXBaremulator está a años luz de la excelencia, es un emulador que cumple pero al que le faltan millones de cosas para estar a la altura de otros. Al menos para mis expectativas.
Por contra, es innegable el revuelo que produjo el ZX-Uno dentro de la comunidad, prometía algo diferente y esta vez era de verdad, nada de software, era todo hardware, cosas impensables de otra forma podían hacerse. Pero
mi realidad fue que compré un ZX-Uno de 2MB en enero del 2018, y cuando conecté la placa y vi la calidad de imagen, quedé un pelín decepcionado. No esperaba calidad HDMI, pero sí algo manifiestamente mejor que el Spectrum real y no era así (conecto mi +2a por SCART y no se ve peor, sinceramente). Pero lo malo vino cuando empecé a pasarle tests y me di cuenta que, detrás de todo ese inmenso currazo que se pegó el equipo del ZX-Uno, cosa que está fuera de toda duda, comprobé que se habían implementado muchas cosas adicionales pero que
lo que de verdad me importaba, no llegaba ni a decepcionante. Puede que fuera un problema de mis propias expectativas, pero yo también me había tragado el anzuelo de que "si está en FPGA, es bueno".
Pero más allá de mi decepción personal con el ZX-Uno, y del hecho incontestable de que su desarrollo estaba prácticamente parado, está la observación de que todas las implementaciones conocidas en FPGA del Spectrum son mediocres como mucho y la gente está supercontenta con el resultado. Los usuarios no preguntan porqué no se ve bien el test "IR_Contention", que no saben ni que existe, preguntan que si tiene ULA+, chip SAA, Wifi, controladores DMA y modos gráficos de 4096 colores, como el Amiga. Aunque luego hayan dos programas que lo usen y poco más.
Así pues, mi principal objetivo y, porqué no decirlo, mi obsesión con la precisión es rara y vacua. Es una solución en busca de un problema que nadie tiene ni le interesa. Cada vez que alguien me ha sugerido algo que podía ser interesante, como el soporte de teclado real por poner por caso, no ha supuesto un aumento de usuarios, sino de dolores de cabeza. Me pareció buena idea coger el montaje de la revista MagPI #67 porque ya estaba explicado y podía referirme a él. Pero los GPIOs escogidos se dan de leches con el sonido PWM, cosa que al autor del montaje no le preocupaba porque usaba Linux y el sonido lo saca por HDMI. Comprendo que dejar a las placas basadas en ARMv6 sin sonido es una cabronada, pero es casi imposible sacar sonido HDMI en ellas, la PI tiene muy pocos GPIOs y ni siquiera sé si moviendo los pines para liberar los necesarios para el PWM la cosa funcionaría bien.
Por si a alguien le interesa, la razón es que tuve *muchos* problemas con la conexión del teclado real a causa de la capacitancia de los cables. Hay una diferencia fundamental entre el montaje de la MagPI y mi emulador: la MagPI usa un daemon escrito en Python que lee el teclado asíncronamente respecto al Spectrum a razón de 60 veces por segundo y lo transforma en eventos de tecla para el emulador Fuse, pero ZXBaremulator lee el teclado de forma síncrona, cada vez que el programa lee el puerto correspondiente, y eso provoca que frecuentemente una serie muy rápida de lecturas acaben en valores erróneos porque a las líneas no les da tiempo a cambiar de estado entre las mismas. Eso se puede solucionar poniendo resistencias de pull-up, pero a ver quién es el guapo que a estas alturas le dice a los pocos que han montado una PI dentro de un teclado real que tienen que modificar sensiblemente su montaje.
Por tanto, nada me garantiza que adaptando el emulador para que funcione en la Pi400 vaya a conseguir ni un usuario más, como mucho tendría casi 100€ menos en la cartera, eso sin contar con las diferencias y problemas de Circle con las Pi4, que ya he mencionado en otro mensaje. Y no conté que el emulador hace uso de algunas clases "tuneadas" de Circle para que las cosas funcionen como necesitaba, porque tengo 3 clases especialmente adaptadas y muy sensibles: la del manejo del usertimer, la del manejo del PWM y la del manejo del VC4 para el sonido. Adaptar eso puede ser un dolor de webos muy serio. Y la gente seguirá pidiendo que las ARMv6 (PI1 y las Zero) hagan lo mismo que las placas que tienen 4 CPUs. Añadir que el soporte de las ARMv6 debe tener en cuenta que, aunque las Zero van a 1 Ghz, las primeras como la tuya solo van a 700 Mhz. No puedo hacer algo que necesite 1 Ghz de CPU sí o sí, creo que es fácil de comprender. Además, tampoco tengo una Zero, y me he hinchado a explicar, sin demasiado éxito, que las Zero solo son un elemento limitante de lo que hubiera podido hacer el emulador en el futuro. Que solo por el sonido HDMI ya merece la pena gastarse un poco más y hacerse con una PI-3A+, que es más pequeña y barata que la 3B+. Y así es con todo: usuarios que tienen teclados USB que no funcionan todas las teclas, usuarios con gamepads "compatibles PS3" marca "laputadelacabra" que no funcionan bien, joysticks que no tienen las teclas donde dicen tenerlas y un larguisimo etcétera. Y nadie comprende que te comuniquen sus desdichas y no pierdas el culo para darles una solución personalizada, usando sus propias ideas claro, que son valiosísimas y nadie medianamente inteligente las despreciaría.
Como ferviente usuario y defensor del Spectrum, observo con tristeza que la gente hace muchas albricias y alharacas a los "fuegos artificiales", a anuncios pomposos que luego se traducen en verdades a medias, si llegan a eso, y no hace falta irse a las FPGA para darse de sopetón con esa realidad. No pensaba implementar nada que no fuera de un Spectrum, ni siquiera el ULA+ que sí soporta mi otro emulador, porque sé que es trabajo baldío. Pero es que eso es lo que vende. O sea, que como comercial soy un desastre, por eso soy un técnico.
Tenía planeado un cambio bastante considerable de organización y manejo de la pantalla, pasando de una paleta de 16 colores real (idea de Villena en su piBacteria) a una de 16 bits al doble de resolución para, de paso, intentar disimular un poco el tearing a 60 Hz, porque la de 50 Hz no me gusta nada debido a que mis teles hacen unas cosas muy raras a esas frecuencias, puro procesamiento de imagen a sako-pako.
Y ya era imperiosa la necesidad de crearme una serie de clases para mostrar menús, cajas de diálogo y otros elementos típicos de un GUI que no tengo, porque en BM no puedo usar SDL, Qt ni ninguna otra librería gráfica propia de Linux. Este curro, además de muy laborioso, es muy aburrido y necesitas mucha motivación para hacerlo, algo así como César Hernández en su ZesarUX (chapó, me quito el sombrero). Como nada de esto me va a servir para tener ni dos usuarios más y en el estado actual me conformo con lo que tiene, decidí hace ya muchas semanas que no iba a seguir con él. Otra cosa es cuando lo haya dicho aquí, porque lo solté así de pronto, en un mensaje que iba de otro desafortunadao tema y quise aclararlo. Espero que no haya sido peor el remedio que la enfermedad.
Afortunadamente, ya existe un core preciso para el ZX-Uno, ahora solo falta que algún valiente lo porte a una FPGA con salida HDMI y abandonar mi emulador estará sobradamente justificado. Gracias por tu trabajo Kyp.
Gracias a todos por leer este ladrillako infumable y a los que me han apoyado en el hilo.