Para versión siguiente:

-------------
---Errores---
-------------


-exolon rzx, si se abre menu, se queda continuamente disparando y agachado (joystick seleccionado: cursor&shift, aunque parece que no importa esto)


-parpadeos en driver xwindow en zx desktop al moverse por menus

-cacalib, en consola texto pura, parpadeo en menu (y en general en cualquier pixel emulado con brillo)

-con daad debug, si hago un cambio de gui style, se activa la opcion de watch en daad debug... quiza no está gestionando bien el overlay??


-revisar en menu_debug_change_registers(void),
//Si lanzo con debug_print ERR, y estamos en modo step, se habilita multitarea, por que?


-archivos de cintas que no se cierran en windows al expulsarlas


-quiza en threads que no se cancelan en windows (zeng?) agregar llamada a pthread_testcancel();

-en daad debug, pulsar m de condmessage, sale dos veces (con cozumel 1 y inventario)



-En visor dsk que solo muestre primer extent de un archivo. ya esta??
-extractor dsk no obtiene bien longitudes de disco cpc (porque intenta obtener cabecera plus3dos). ok ya?
-extractor dsk que use misma manera que visor dsk?
-extractor dsk creo que a veces lee archivos con cabecera plus3dos. ejemplo : chase hq2. tampoco parece obtener bien siempre los datos (de otro sitio...)
lecturas de plus3dos headers no van bien: Real length file SCREEN  .    read from PLUS3DOS header: 55560

-quiza seek beyond limit en floppy no deberia saltar error (solo verbose), caso de tauceti pcw. no consigo sacar ese error? otro juego que salga?

-rutinas speech y kill speech se llaman aunque no haya nada pendiente. desde timer, llama a scrtextspeech_filter_run_pending

-file browser no muestra dispositivos. importante para uart
Por alguna razón, en /dev no llega a leerlos ni entrando antes del filtro. Quiza algun parametro especial del directorio
o algo que no hago bien al leer directorio. La solución pasa por escribir el nombre directamente en el file selector (pulsando TAB o click de raton
arriba)
-no lee enlaces simbolicos en filesystem: ejemplo /home/pi/PREPARADOS de raspiboy
-no se ven enlaces simbólicos en navegador de archivos. Como mínimo de Mac no se ven. Y en Linux?
-quiza get_file_type deberia excluir sockets y devices, no considerarlos archivos normales,
asi en smartload y similares no aparecerian -> pero en caso de UART si que deben salir dispositivos!!

-revisar pantalla completa en SDL, X11
--en sdl1, con windows en maquina virtual, parece que pone una resolucion menor que la ventana de ZEsarUX, y el footer y la pantalla emulada quedan mezcladas


-cambio de maquina con full screen (16k a 48k) peta: quiza son en Mac?




-si se pulsa boton de cerrar todos los menus, desde una ventana que se ha abierto desde otra con menu tabulado, se cierra esa ventana de menu tabulado,
en vez de dejarse en background
Ejemplo: AY Player, pulsar Editar playlist, y ahí cerrar todos menus


-full screen en cpc + real video (y creo que sin real video tambien) se ve mal. Probar por ejemplo con brunilda dandanator

-en linux, con "stop emulation on menu", raton no mueve opciones de menu, ni deja mover ventanas
->no he conseguido reproducirlo

-Exploding fist next:
*cargando desde browser de next, sale la intro y luego se cuelga
*cargando con smartload, parece que carga archivos por esx pero no muestra nada en pantalla. Usa filemap, como Atic Atac...




-Si se crea ventana de alto negativo, acaba haciendo panic al asignar memoria. Quizá controlar esto?

-keyboard help
- pulsar , o . en ZX81 con ventana abierta, deja apretada la N o M
- chloe. completar teclas extendidas. ver que hacer con combinaciones de shift...
- keyboard help no hace por ejemplo en cpc 664 teclas [ ] pulsando esas teclas en el teclado fisico: esto sucede porque en menu
no genera codigo de tecla al pulsar esas extendidas

---Fin Errores---



-------------
---Mejoras---
-------------

-mejorar render paws/gac/daad/quill:
*uso atributos igual que spectrum: 8x8 paper+tinta
*implementar relleno: mapa de puntos rellenos, y mostrar con tramado adecuado. solo fill cuando ventana esté dirty (misma logica que Location Image o ZXLife por ejemplo). algoritmo relleno recursivo? habria que tener un mapa de pixeles de spectrum de 256x192 tal cual




-dall-e. text aventure location image
*esperar a waitpid?
*en hobbit las descripciones salen antes de borrar la pantalla
*en linux: cierro ventana imagen, borro output imagen, abro y segfault


-text adventure map: texto en mapa deberia seguir char filter. Pero char filter
esta pensado solo para print char y mostrarlo en consola. deberia haber una funcion que teniendo un caracter, retornase otro pasado por el filtro



-algun tipo de build que no sea ni linux ni mac ni windows, sino simplemente UNIX_GENERIC o algo similar

-conviene ocultar Wall y Wextra en version estable? puede salir algun warning util solo en version estable? no deberia, son warnings muy especificos



-driver fbdev en pc , con "zesarux --noconfigfile --vo fbdev > /dev/null". al desactivar border, genera panic. tambien desactivando border


-A mejorar en Next para próxima versión: Ver TODO_machines, sección Next, en : "A mejorar en Next para próxima versión"


-paws debug que funcione con aventuras en 128k. Ver manual de paws para esto
-daad no usa 128kb. Aunque hay un nuevo parser de daad (hecho en zxbasic) que si usa 128kb. comentar con Carlos-uto


-texto speech en menu se oye antes que se empiece a mostrar filesel

-en rpi quiza compilar con onebitspeaker? o no? entiendo que pcspeaker no usara sino que intentara usar gpio


-Función joystick conmuta full screen
-F función cualquiera Tecla F por joystick


-Smartload path tiene setting en command line? si Y en menú? es el del ultimo archivo cargado con smartload



revisar paso de parametros en pthread_create, debe ser con estructuras estaticas (no en stack) o bien estructuras en malloc
y los miembros no deben ser punteros a *, sino contenido todo en la estructura
Por ejemplo en
menu_zsock_http(
    Si se cancela la query y el thread sigue activo, hay el riesgo de acceder a memoria que ya no esta disponible
Esa funcion se llama por ejemplo desde speccy browser y viene con punteros que habria que convertir todos en una estructura
mejorada de menu_zsock_http_struct en que no haya punteros
Lista en teoria completa de llamadas a pthreads con parametros a revisar:
menu_zsock_http
menu_download_file



-fbdev en linux, fbdev_cls peta al cambiar de maquina. Ejemplo de 48k a +3

-asociar archivos tap, tzx etc en Mac a ZEsarUX



-cambio modo stereo de zxuno mediante hardware. registro F7. https://www.zxuno.com/wiki/index.php/ZX_Spectrum
algun programa que lo use? el zxunocfg?





-algun tipo de indicacion en un menu que diga que no debe activar salir_todos_menus al pulsar ESC, por ejemplo en algunos no quiero
que se cierren los anteriores, ejemplo:
*cambio de zona de memoria desde debug cpu o hexdump
*breakpoints
*watches
En estos casos de momento lo que he hecho es que al final de cada menu se haga un "salir_todos_menus=0"



-Process management: Render emulated display incluye tiempo de todas las ventanas? Si abro el text adventure map, que consume 6 ms con la guerra
de las vajillas, el tiempo de render dice 8 ms. si cierro text adventure map, el render baja a 3 ms

-tooltips en botones superiores y en dispositivos inferiores, y en botones de ventanas



-si se desactivan botones inferiores y superiores, el limite al mover iconos sigue siendo la zona de esos botones, aunque ya no existan
Lo mismo pasa con un reorder
Y lo mismo con posición de nuevos iconos



-algún tipo de asistente para el primer arranque? Tipo:
*idioma: english, español, català
*zx desktop activado (junto con background windows)
*etc...





-Debug console quizá ancho debería considerar siempre el Máximo al calcular posición siguiente línea, esto en print y scroll
Asi se podría redimensionar siempre sin que se descuadren los textos anteriores . hecho?


-Posible driver nuevo u opción en curses en que el menú siga siendo estándar pero el output de la máquina emulada sea el mismo que stdout


-permitir smartload de zrcp sin que haya que abrir y cerrar el menu, para poderlo usar con driver simpletext o null por ejemplo,
ya que no abren el menu


-soporte libretro:
compilacion minima con 3 cores:

git clone https://github.com/libretro/libretro-super.git libretro-super
cd libretro-super
./libretro-fetch.sh fuse smsplus sameboy
./libretro-build.sh fuse smsplus sameboy


Copiar un core a retroarch, uno de ejemplo
 https://docs.libretro.com/development/cores/developing-cores/#skeletor-sample-core
cd /Users/cesarhernandez/Downloads/libretro-super
./libretro-build.sh skeleton

cd "/Users/cesarhernandez/Library/Application Support/RetroArch/cores"
cp /Users/cesarhernandez/Downloads/libretro-super/dist/osx-x86_64/skeleton_libretro.dylib .



-numero de version que corresponda con el año de antigüedad de ZEsarUX? V11 : 2024, V12: 2025, V13: 2026?



-al insertar cintas parece que no se cierra menu, y antes creo que si que se hacia

-quiza recordar ultimo ancho de ventana en void zxvision_generic_message_tooltip(,
util por ejemplo para leer archivos de licencia,
aunque eso afecta a todo mensaje genérico que aparezca en pantalla
O quizá solo hacerlo para determinadas ventanas de algunos menus, por ejemplo el de licencias

Soportar uft-8 en el footer, que sirva para texto footer normal pero tambien con opciones de --programsettingsinfo de archivos .config.
Quitar el parche para soportar la eñe en dicha opcion
Cuidado que  en la consola si hay verbose debug, se muestra caracter extraño para la ñ




-Teclado en pantalla en rpi borra el input de debajo




-Idea menús:
Clara distinción entre línea de menú y entre ventana con opciones
Menús solo deberían ser líneas navegables hasta un destino

Quizá main menu que sea ventana de 1 de alto con entradas menu tabuladas de
Smartload snapshot storage debug etc..
Y sin barra título
---Fin Mejoras---


-Pantalla completa en Next sale cortada

-ZRCP no envia teclas extendidas cuando se pulsan desde slave: por ejemplo QL y teclas []

-ZENG para msx ¿no? se leen los cursores en destino cuando se pulsan desde slave

-gac debug con condactos y paso a paso

- Emulación trs 80?

-quiza que se permita ventanas que puedan moverse y estar parte fuera de rango visible. mientras origen ventana este dentro de rango,
el resto puede salir fuera -> comprobar al hacer print y putpixel que no sale fuera

-Incorporar bittransfe como manera de generar snapshot en .tap. Agregar parámetro de estado interrupciones, registro i. Otros registros que falten? R? Problema que está guardando algunos registros en parte alta de la memoria y puede interferir con el stack si no se ha cambiado el CLEAR


-carpetas con acentos en file selector sale a la derecha el texto de <dir> movido

--- Documentar ---


-Documentar cómo van los archivos txt de update del server
-comentar desensamblado copion9
-diagrama de como funciona zeng online

--- Fin Documentar ---



-lambda 8300
-Microace. https://www.timexsinclair.com/computers/microace/
-Ringo R470

-quiza hsync_generator_active.v en zx80/81, que no se usa practicamente, puede servir para estabilizar la imagen en horizontal


-buscador opciones menu: creo que lo mejor es que cada menu indique, al crearse, la ruta donde se ubican
Por ejemplo "Betadisk" está en Main Menu->Storage->Betadisk



-menu display. teclado en pantalla. quiza poner aqui el nuevo de help keyboard. dejar ese viejo solo para drivers de video de tipo texto, cacalib, etc. considerar ademas que ese antiguo solo sale para spectrum y zx80/81. Ojo que el teclado en pantalla de texto debería también salir al pulsar tecla de OSD teclado, pero solo cuando es driver texto

-Poder ver variables de una cinta .P, .O e incluso basic de spectrum (desde el bloque de basic de un .tap?)
quizá tiene un uso muy reducido porque los programas necesariamente no se graban con variables, excepto algunos que guardan datos
como matrices y cosas asi. pero en ese caso se pueden cargar y ya luego examinar variables

-issues de submenus:
--quiza en un menu_dibuja_menu_dialogo_no_title_lang, al pulsar ESC, no debe activar salir_todos_menus
aunque no todos. por ejemplo en +3dsk, visor format disc, pulsar en archivo-> blocks, ahi si pulsa esc si que interesa que cierre todo



-con no border on full screen & no footer on full screen, al salir de full screen a veces peta
parece que es la llamada a menu_interface_border

-zona de memoria nueva que apunte a buffers internos, como real video, audio buffer o cosas asi. tiene sentido?

-top bar menu
ok*primero poder desactivar solo botones de arriba bajo demanda
ok*top bar tiene que poder aparecer como overlay. Así se puede hacer mostrar al mover ratón, y también mientras menús están activos
*si menu que se abre tiene seleccionado un item de submenu, al pulsar boton izquierdo en otro sitio provoca que esa ventana
la deja en lista de submenu
*busqueda indexada. que cuando se haya abierto top bar agregue automaticamente "Main Menu" a todos, siempre que no venga indicado
claro. o no, porque si hay top bar, "Storage" menu por ejemplo es un menu directo sin tener que pasar por Main Menu
*al estar en un menu y pulsar en otro de topbar, que se reabra, el truco creo que esta en activar menu_pressed_open_menu_while_in_menu.v


-quiza menu_ventana_scanf_numero_enhanced deberia mostrar el error en ventana en vez de soltarlo por debug_printf,
porque luego hay sitios como Sectors info de microdrive que al cambiar de sector con tecla 's' tengo que detectar
si hay un pending error message y mostrarlo
->Al menos ya se retorna un valor de estado (si pulsado ESC o valor fuera de rango, retorna <0) por lo que algunas
llamadas ahi retornan sin hacer nada cuando es <0. en algunos casos no es necesario detectar pending error message,
pues si van a menu anterior, al abrir ese menu ya detectan error pendiente y lo mostraran

-botones superiores e inferiores que no estén pegados a la pantalla: moverlos una columna a la derecha

-----------------------
---INICIO microdrive---
-----------------------

*convertir rmd a mdr y vuelta a rmd
Con archivos p256, etc. creados con microdrive-test.tap
mdr no encuentra todo archivo p4096 (parece que falla dos ultimos bloques), aunque chkdsk bien y extract archivo bien
rmd final funciona bien, encuentra todos archivos
Con Fuse tampoco encuentra ese archivo
La particularidad es que ese archivo tiene bloques a final de microdrive y al principio
-esa conversion de rmd a mdr, sin archivos (solo con el formateo) pasa de 126 a 125 sectores...



-----------------------
---FIN microdrive---
-----------------------




-----------------------
---INICIO Hilow     ---
-----------------------

-Comentarios en la ROM de hilow de Jane recopilar

-poder convertir ddh a raw


-----------------------
---FIN Hilow        ---
-----------------------

-visualcassettetape
*soporte tap, tzx y otros formatos de cinta binaria




-en FAQ formatos MDR/RMD, DDH/RAW


-Soportar extensiones .sd y .sdhc? Las últimas deberían activar parámetro de direccionamiento sdhc

-Sonido de lectura y escritura de floppy +3, según codificación. Manchester? Mfm?


-ppi chip 8255 el mismo en cpc y msx...



-En MSX y SVI no estoy usando usa msx_ppi_mode_port/svi_ppi_mode_port en lectura. Quien lo lee y para que?



-Alto total de process switcher se amplía si necesita ubicar más iconos?
Debería aumentar total_height si es necesario

-Next: puerto 0x5f de DAC D entra en conflicto con volumen canal A de chip AY?




-Modo minimizar ventanas que ni se vean. Quiza solo cuando process switcher este cargado?
y en ese modo al abrir la aplicación, se desminimice
*Y en process switcher se indica de alguna manera que está minimizada
*con shift-flecha derecha aparecen también las minimizadas
*opción que se llame algo como "hide on minimize"
*problema que todas las funciones que activan ventana por posición, como al pulsar ventana, tienen que ver
que ventana está minimizada y con el setting de "hide on minimize" activo

-Opción por defecto no permitir zoom x diferente de zoom y al redimensionar ventana mediante ratón. Quedarse con valor inferior de zoom

-Accesos mmc más allá del límite no deben desactivar la tarjeta. Solo log del aviso. En general para todos los dispositivos

-Render con hilos. Cada 4 líneas, 4 CPU diferentes. Problemas con bloqueos?

-Tecla en debug cpu para habilitar todos los breakpoints

-speech: caracteres con acentos, eñes etc no se leen bien en ventanas como por ejemplo help->changelog cuando idioma es español
sucede porque viene de zxvision_draw_window_contents y esta enviando por ejemplo caracter de eñe como 129, pues
es como esta en la ventana. pero deberia convertir ese 129 a la eñe de utf8, o bien, convertir ese 129 a una "n" y lo similar con otros
caracteres, por ejemplo convertir "á" en "a"
Para eso tendria que haber una tabla de cada caracter que uso desde 128 en adelante a su equivalente en utf8
En cambio, items de menus si se leen bien porque ahi se le envia linea a linea el texto original (con utf8) y no
se le envian los caracrteres desde zxvision_draw_window_contents

-Speccy online browser
Con speech cuando salen las diferentes opciones de un juego (tzx, tap etc) no se escuchan porque se lee la línea del nombre del juego y no la de debajo que dice el tipo

-Conversión de .P a .P81

-Visual real tape: con cinta cdt de CPC (zynaps.cdt) dice que hay bloques de spectrum y no es asi

-con menu cerrado, sin ventanas: pulsar boton derecho en iconos del escritorio,
lo hace pero el menu contextual sale arriba del todo y no en la posición del cursor


-modo 60 hz en atic atac, para next. Y quizá empezar con maquinas timex que tienen 60 hz, que tienen menos scanlines...

-ay player poder cargar playlist de archivo, grabar playlist

-poder grabar a cinta desde MSX en archivo .cas. Revisar otras máquinas que se pueda hacer

-breakpoints que se disparen cuando se cumpla una condición N veces:

1) Olvídate de que el "pass count" (lo llamo así por ser como lo llama Turbo Pascal) sea una variable más de tus expresiones, no tiene sentido. Debe ser un valor opcional aparte.
2) Si el pass_count==0 parará todas las veces (o sea, como hasta ahora).
3) Si el pass_count!=0 parará cuando la condición del breakpoint se cumpla por pass_count veces (si vale 3, se salta 2, para en la tercera)
4) Cuando se crea un breakpoint en el menú de breakpoints te pide el pass_count, ofreciendo 0 como valor por defecto, y se pone el contador interno a 0
5) Cuando se crea un breakpoint desde linea de comandos se puede poner opcionalmente un passcount, si no se pone es 0. Al crearse, el contador interno es 0.
6) Cuando se crea un breakpoint de cualquier otra manera (toggle, run to, los de DAAD/PAW, etc.) no pregunta, pass_count= 0.
Yo creo que con eso vale, y la verdad, no se me ocurre en qué esceneario necesitaría una opción para resetear contadores.

-Llamadas a menu_warn_message y similares, al iniciar ZEsarUX, cuando esta restaurando ventanas, como la de menu_microdrive_raw_map (comentada al principio: menu_warn_message("Visual Memory window is opened),
deja la ventana de ZEsarUX en un estado inconsistente
Quiza se deberia controlar que las llamadas a *message no hagan nada si no esta acabado de iniciar aun

-vofile con output para archivo bitmap raw en blanco y negro, para posible enlace con pantalla e-ink