Closed EremusOne closed 2 years ago
Hola Victor! Gracias de nuevo por tus cambios, me parecen muy interesantes. Este fin de semana no voy a poder revisarlos, pero en cuanto pueda los miro en detalle y los integro. En cuanto a tener un thread separado para CPU y otro para vídeo es una de las cosas que heredé del emulador original y que me gustaría cambiar. A base de esperas nunca se va a alcanzar un emulador cycle-perfect, lo suyo sería generar el vídeo a la vez que la CPU ejecuta instrucciones. Tengo medio pensado la manera de hacerlo, y para ello es necesario poder hacer ambas tareas en un único thread, para lo cual es necesario que estén perfectamente optimizadas ambas tareas. Por eso tus optimizaciones en el thread de vídeo son muy necesarias. Lo que me gustaría sería generar el framebuffer en el thread de CPU y utilizar el thread de vídeo para el OSD, el cual también me gustaría también rediseñar, tiene bastantes carencias.
Mergeados los cambios. Voy a subir un cambio mío para lo del borde uint32 a uint32 ;-)
Hola de nuevo,
He añadido unas cuantas mejoras a la carga de .taps. Ahora se detecta la entrada y salida de las rutinas de carga en ROM y se pone en marcha y detiene la cinta automáticamente. Para algunos juegos que tienen multicarga o solicitan parada de cinta va muy bien :) Si los juegos usan rutinas de carga propias lógicamente no actúa pero, a pesar de todo, creo que es un buen añadido.
Por otra parte, he estado estudiando el código de la videoTask con objeto de aprender como funciona ya que quiero implementar un OSD donde se vea, en tiempo real, el avance de la carga y mas cosas.
Aprovechando el estudio del código, he optimizado la función videoTask con algunas de las mejoras de Ackerman y algunas de cosecha propia. Ahora es el doble de rápida según mis mediciones. No se si servirá de algo ya que con la velocidad anterior era suficiente pero quizá esa velocidad venga bien para dar soporte a algún modo extraño de video del Spectrum o para sacarla mas adelante de multithread. Échale un ojo si quieres por si hubiera metido la pata en algo. En mis pruebas se ha comportado bien :)
He añadido también la ROM de diagnósticos de D. Smith y B. Alford por si pudiera venir bien.