Página 4 de 4

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Lun Ene 15, 2018 6:37 pm
por zx81
Bueno, en algún sentido, algo hemos avanzado. He subido una nueva peta que cambia totalmente el mixing del beeper+AY, incluso cierta parte de la generación del sonido. También se me ha ocurrido una solución para el carraspeo que se producía a veces al terminar la carga de una cinta. Lo bueno es que la idea es extensible a más sitios. Otra cosa referente al sonido que he reajustado es que anoche me dí cuenta de que los volúmenes relativos del beeper y el AY no estaban bien ajustados, al menos comparando con el ZX-Uno, pero no me sorprendería que en real fuera igual. Ahora, cuando suceden los dos a la vez, se escucha más claramente el beeper.

Lo que he quitado, por no tener sentido ya es el ajuste de volumen con '+' y '-' del teclado numérico. Eso ya se ajusta desde la propia TV, así que no le veo utilidad.

kernel7.img: 549040 bytes
md5sum: f4e912638f7ef5c115af664b3601c2ea

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Mar Ene 16, 2018 12:04 pm
por chernandezba
Curiosidad...
zx81 escribió: El VC4 es superexigente en cuanto a tiempos y, de hecho, los dos threads de kernel que usa en Linux (de 4) que se ocupan de él lo hacen con propridades de -19 y -20.
Que es el VC4 y que tiene que ver tu emulador con Linux? No es baremetal, sin sistema operativo?
No se si ese VC4 del que hablas es esto

https://github.com/freeblob/ack-vc4

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Mar Ene 16, 2018 12:25 pm
por zx81
chernandezba escribió:Curiosidad...
zx81 escribió: El VC4 es superexigente en cuanto a tiempos y, de hecho, los dos threads de kernel que usa en Linux (de 4) que se ocupan de él lo hacen con propridades de -19 y -20.
Que es el VC4 y que tiene que ver tu emulador con Linux? No es baremetal, sin sistema operativo?
No se si ese VC4 del que hablas es esto

https://github.com/freeblob/ack-vc4
El VC4 es lo que se ve en ese enlace de github, el VideoCore IV, la GPU que llevan las Raspberrys y que mantiene bajo control al procesador ARM. Hablar de Linux era por comparación, aunque en el fondo, sí tiene que ver. Como todo lo referente al VC4 está sin documentar, la única solución que le ha quedado a Rene ha sido usar las librerías VC4 que gasta Linux. Y para poder usar esas librerías con mínimas modificaciones, ha tenido que crear una capa de compatibilidad Linux<->Circle. La diferencia es que Linux es un sistema operativo completo hackeado por la gente de la Fundación Raspberry y Circle tiene que emular eso con sus limitaciones, por ejemplo, un scheduler cooperativo que solo funciona en la CPU-0. Luego he tenido yo que inventarme cómo usar todo eso desde la emulación que se ejecuta en la CPU-1.

La CPU-0 ya lleva su faena, pues es la única que gestiona las interrupciones de la placa, entre ellas, las 8000 ints/seg que genera el controlador USB. Al principio, puse un bucle de espera en CPU-0 que ponía a dormir a la CPU hasta la llegada de una interrupción (125 usec, quizá antes). Pues bien, esa espera era demasiado larga y los threads que atienden al VC4 no llegaban a tiempo y el sonido se escuchaba mal. Por eso mencionaba que dos de los threads de Linux se ejecutan con nices de -19 y -20, para poner en evidencia que exigen mucha CPU y precisión.

Y si nos ponemos puristas, no hay Raspberry sin sistema operativo. El archivo start.elf del firmware es un kernel comercial completo de tiempo real que se ejecuta en la GPU llamado ThreadX.

La chulería que ha hecho Rene poniendo soporte para algo tan aparentemente tonto como el sonido HDMI ha sido tremenda. Merece más reconocimiento del que, desgraciadamente, tendrá.

En navidades intentó mejorar el scheduler para que pudiera usar otras CPU, pero tenía demasiada latencia y era peor el remedio que la enfermedad, así que ha habido que descartarlo. El lo mejoró y yo hice los tests, que aquí cada uno tuvo lo suyo.

A mi me ha costado lo mío ponerle sonido HDMI al emulador pero lo del autor de Circle, no tiene nombre....

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Mar Ene 16, 2018 1:15 pm
por chernandezba
zx81 escribió:[

Y si nos ponemos puristas, no hay Raspberry sin sistema operativo. El archivo start.elf del firmware es un kernel comercial completo de tiempo real que se ejecuta en la GPU llamado ThreadX.
Muy curioso esto del ThreadX, he navegado un poquito por la web
https://rtos.com/solutions/threadx/

Y yo que hasta ahora pensaba que la GPU se gestionaba integramente desde el sistema operativo (Linux normalmente) pero resulta que la propia GPU está ejecutando otro sistema.... :O

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Mar Ene 16, 2018 1:22 pm
por chernandezba
Por cierto la gpu de la rpi solo hace funciones de gpu? Es decir, video, aceleracion hardware, etc?
O también gestiona cosas como el usb?

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Mar Ene 16, 2018 1:34 pm
por zx81
chernandezba escribió:Por cierto la gpu de la rpi solo hace funciones de gpu? Es decir, video, aceleracion hardware, etc?
O también gestiona cosas como el usb?
Gestiona más cosas, todo lo que sea relacionado con pantalla (resoluciones, refrescos, servicios varios), cámara, sonido, relojes del sistema, etc lo controla la GPU y tú te comunicas con ella vía mailboxes. Es lo único que está medio documentado.

El USB lo gestionas tú, partiendo de la base que el host USB es una porquería como una casa y que está sin documentar. Luego hay periféricos, como las alarmas de los relojes (4) que la GPU se reserva dos para ella solita y tú no debes tocarlos, aunque podrías.

Pero vamos, PWM, GPIO, I2C, SPI, ciertas interrupciones, las controlas tú.

Lo curioso es que la GPU lleva su propia MMU y parece que al ARM solo le deja ver lo que le da la gana. Vamos, como en todo matrimonio que se precie, él (ARM) se ocupa de las cosas importantes; ella (la GPU) decide lo que es importante y lo que no.

Encima, la Pi1 está pobremente documentada. Para la Pi2 salió una especie de addenda no oficial con algunas cosas nuevas. Para la Pi3, nada. Como placa de desarrollo bare-metal e investigación, es un fraude. Si la quieres para ponerle Linux y hacer el mono Amedio con Python, vale.

Yo creo que parte del problema del vídeo y del sonido es que la GPU puede decodificar H.264, si pagas por ello la correspondiente licencia. Si tuvieras acceso a todo, probablemente no haría falta pagar por nada. Tampoco sé si la implementación de HDMI tiene restricciones ni lo que pagaron por ella. Ahí debe haber un buen bakalao de NDAs de por medio.

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Mar Ene 23, 2018 4:47 pm
por chernandezba
zx81 escribió: Encima, la Pi1 está pobremente documentada. Para la Pi2 salió una especie de addenda no oficial con algunas cosas nuevas. Para la Pi3, nada. Como placa de desarrollo bare-metal e investigación, es un fraude. Si la quieres para ponerle Linux y hacer el mono Amedio con Python, vale.
Pues ya he aprendido unas cuantas cosillas de este "mundillo" que parece que es la Raspberry. Gracias!

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Lun Feb 19, 2018 3:57 am
por hikoki
zx81 escribió:Lo de probar con otras teles no está mal....
Al fin he podido probar con otra tele!
Como sospechaba en esta suena de maravilla. Ni rastro de los efectos "pérdida de volumen" y "debilitamiento de AY cuando aparecen efectos beeper"

Edito:

Como parece un problema del televisor, probaré a poner la opción AVL en OFF

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Mar Feb 20, 2018 1:20 pm
por hikoki
hikoki escribió:Como parece un problema del televisor, probaré a poner la opción AVL en OFF
Efectivamente! El problema desaparece desactivando AVL (autovolumen) en las opciones de audio del televisor :oops: :)

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Jue Feb 22, 2018 2:29 pm
por hikoki
Dos sugerencias para nuevas versiones:

- Una sola tecla para el botón de Reset. Puede ser útil para proyectos hardware.
- Mensajes del emulador no se ven si el zoom de la tv está activado. No tiene mucha importancia ya que siempre puedes desactivar el zoom cuando voy a realizar alguna operación.

Re: ZXBaremulator v2.1-VCHIQ beta

Publicado: Dom Abr 15, 2018 7:19 pm
por ANTIMANIMAL
hikoki escribió:Dos sugerencias para nuevas versiones:

- Una sola tecla para el botón de Reset. Puede ser útil para proyectos hardware.
.
Todos los Raspberrys tienen dos pines (sin conector de fabrica) que lo resetean por hardware. Puedes buscar informacion de donde esta en cada modelo por google y soldar ahi un pulsador.

Yo tambien estoy metido en un proyecto de hardware para montarlo interno en un teclado zx original y lo he resulto asi.

Con las teclas de menus y cambio de modelo lo resuelvo con un segundo teclado , pero para ello tengo que recurir a a un raspberry pi 2 en lugar de usar un viejuno pi1 .