Para versión siguiente:

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


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

-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??

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

-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

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

-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?

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


-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---
-------------


-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
-fbdev en linux, fbdev_cls peta al cambiar de maquina. Ejemplo de 48k a +3


-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



-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


-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


-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 .



-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---



-gac debug con condactos y paso a paso



-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



--- Documentar ---


-Documentar cómo van los archivos txt de update del server
-comentar desensamblado copion9
-diagrama de como funciona zeng online: quiza ya no hace falta porque hay la ventana de ZENG status

--- Fin Documentar ---



-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 (F8), pero solo cuando es driver texto. Pero la gestion de teclado cuando se pulsa F8 es un tanto especial, porque
envia la tecla abajo y vale en cualquier parte de menu. Quiza en F8 se deberia conservar el viejo de texto aun



-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



-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


-en FAQ formatos MDR/RMD, DDH/RAW



-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?


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


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


-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


-si tiene que avisar de nueva version disponible en github, parece que no sale aviso si salta un first aid de inicio (testeado en windows)

-Zumbido ZEsarUX en versión Windows a que se debe? A detector de silencio? lo he llegado a escuchar en haiku, con callback new


-Juego mighty steel fighters cpc. Requiere expansión de RAM? Emularla
"Mighty Steel Fighters GGP" Amstrad CPC by AmstradGGP



-Corregir algunos casos (todos?) en que se intenta cargar/grabar archivos desde una imagen mmc montada
y no va porque no uso funciones zvfs. Ejemplo cargar snapshot .z80


-Botones superiores no gestionan errores generados por un item
Ejemplo:
pulsamos boton network-> zeng online client-> list rooms
Si el remoto tiene diferente versión ZRCP, se genera error por debug_printf pero no se ve en el menu. El menu se cierra. Aparece el error al abrir el menu con F5
Si vamos desde menu principal-> network-> zeng online client-> list rooms, el error si que se ve
O sea parece que al pulsar desde los botones, se sale del menu y se quita el aviso de "abre menu debido a error"
(    	    	if_pending_error_message=1;
menu_fire_event_open_menu();
)


----

ZENG Online

-Si se hace get-snapshot sin haber uno primero, creo que peta: no deberia porque se controla que el size no sea 0
-Cliente sin permisos de get-snapshot, en el footer acaba diciendo OFFLINE. No deberia poner ese mensaje si no tiene permisos de get-snapshot


-Modo streaming
acabar de probar cambios maquina spectrum y no spectrum en master y slave, antes y despues de conectar


Revisar si hay mas sitios donde es necesario  pthread_testcancel();


Teclado en pantalla no va con Zeng online?

-Modo streaming video para ql? Moviendo memoria de video
------

-en external audio source. hago shift-e (flush) y mientras está la ventana splash, pulso en pantalla spectrum
No se cierra el menu realmente, solo pierde el foco. Deberia cerrar el menu
Si en cambio pulso justo al inicio de ventana splash, si que cierra el menu
Pasa en cualquier caso de ventana splash, por ejemplo en cpu statistics y clear statistics
->en external audio source cambio el mensaje de splash por uno normal de menu_generic_message, eso lo solventa
Pero habría que solventar esa problematica en splash
Creo que el origen viene porque al salir de ventana de splash, la variables de mouse_pressed_background_window
está a 0 , y esto sucede porque en zxvision.c, en este trozo al gestionar pulsacion de raton fuera de ventana:

					//Si la ventana activa permite ir a background, mandarla a background
					if (zxvision_current_window->can_be_backgrounded) {

La ventana de splash como tal no soporta background, y por eso no cumple esa condición
Luego entra por aquí:

					//Si la ventana activa no permite ir a background, cerrarla
					else {
							mouse_pressed_close_window=1;
					}

Y por tanto no asigna mouse_pressed_background_window
Quizá lo que debería hacer, si está en ventana de splash, al pulsar con raton fuera:
-activar mouse_pressed_background_window si la ventana que habia debajo de esa permite background
-cerrar ventana de splash (que ya lo hace hora)
Realmente tiene que haber algo diferente entre menu_generic_message_splash y menu_generic_message, porque con el primero,
al pulsar fuera, se queda el foco fuera de la ventana y con el menu cerrado. Pero con el segundo, el foco se queda en la ventana que habia debajo


-De alguna manera que se vea una miniatura de la pantalla del juego cargado
En alguna ventana nueva quizá

-Corregir timestamps. Con variables de 32 bits (31 realmente) se llega al límite en año 2038

-Ventana que permita agregar notas, que permita quedarse en background
Problema: donde se guardan las notas? En config no puede ser, ocuparia demasiado
Deberia ir vinculado a un archivo de texto. Basicamente se trata de hacer un mini editor de texto

-Copi128: poder meter traps al grabar que permita identificar cuando se va a generar un nuevo bloque en un tap,
y cada escritura de un byte del copi128 lo meta como byte en un tap. Asi se puede usar para grabar generando taps
Este lógicamente usa rutinas propias de grabación (y carga) para poder usar los 128kb de ram y por eso no funcionan
los traps que tenemos ahora

-En desktop contar último icono de la lista para que al dibujar solo se cuente hasta ese: aun configurando 10000 iconos maximo,
no hay diferencia al menos al mover un icono (eso leyendo los 10000). Por tanto en principio no vale la pena contar hasta el ultimo usado


-Conversion de audio datos ZX81
*Cuando encuentre un pulso sospechoso, llamar a un callback y que pregunte al usuario qué hacer
*poder editar la onda cuando haya un error - que se pare si hay un error (numero de pulsos desconocidos para valor de bit). Requeriria otra ventana diferente de la waveform?
No sé si vale la pena, porque los casos que veo suele ser de 5 pulsos (que convierte automáticamente a un bit 0) o de 9-10 pulsos (que convierte automáticamente a un bit 1). Creo que otros errores ya resultarían en archivos de audio de poca calidad que tendría que preguntar al usuario
miles de veces
*poder convertir audio de zx80? No sé si tiene mucho sentido, aunque se podría pero hay pocas cintas de zx80 por ahí para recuperar...
*poder convertir por linea de comandos. convert RWA a P/P81. Automático sin preguntar amplitud. Con --convert-...
*Luego también se podría integrar en visual real tape, la función que obtiene el nombre del programa y su longitud
*en menu_file_realtape_browser_show, con tecla V de view muestra los bloques de datos de un rwa, si es zx8081 o spectrum. creo que aqui
se llama tambien al usar visual real tape, esa info de bloques
*al insertar en standard tape un archivo smp/rwa, llama a snap_load_zx80_zx81_load_smp: ahi se deberia autodetectar,
y en algun sitio indicar si se usa el algoritmo viejo o el nuevo. OJO! que es comun a zx80 y zx81
*unkatris.wav, no es capaz de convertirlo. Quiza esto quiero que siga siendo asi, esa señal no tiene transiciones a valor 0 por ejemplo



-Captura sonido a archivo de disco
*opcion para archivo de salida en ventana de captura

-alguna manera que desde external audio source:
abra hexedit con expresión follow de ix
abra watches con watch DE, IX etc para la carga
abra vista basic
defina también tamaños de esas ventanas?
Todo esto es para tener esas ventanas auxiliares útiles cuando se está cargando o copiando desde cinta
->quiza esto se podria hacer con envio de mensajes entre las dos ventanas (*send_message_function...)


-SDL2 no deja cambiar a zoom 2 redimensionando con ratón

-sdl en debian 12 32 bits inicializa muy lento

-Volante:
*continental circus, ---steering-wheel-address b50ch, parece de 16 bits, pero no va bien. intentar que funcione
*en haiku se bloquea al arrancar si conectado un volante

-implementar máquinas de 60 Hz (timex, master system etc)
-modo 60 hz en atic atac, para next. Y quizá empezar con maquinas timex que tienen 60 hz, que tienen menos scanlines...
-implementar timings ula TK90x

-baseconf: intentar que arranque. Y si no, quitar de la lista



-convertir todos tabs a espacios en archivos de código fuente: cmd-shift-p: convert indentation to spaces. Hacerlo uno a uno por cada fuente



-en ventana waveform, con valor minimo de onda (./zesarux --tonegenerator 2) no se ve

-Chrome. Menu "load dos from rom". que tiene que hacer? falta una rom?



ok tape, realtape, outtape -con --tape por consola, si hay un zesarux_autosave.zsf, no carga la cinta, aunque la inserta (y se queda topspeed y un pendiente load"").
Esto es porque primero se llama a tape_init() que inserta la cinta y posteriormente a autoload_snapshot();
quiza tape_init() tendria que ir despues de autoload_snapshot() pero hay que validarlo bien todo antes
Por que tape_init() se llama tan pronto?
validar también --snap, --slotcard, --outtape, no sé si fallan tambien cuando hay un zesarux_autosave.zsf
Ademas en algunos casos (no recuerdo que combinacion ahora), al hacer reinsert (o insert, si no estaba insertada) de cinta, generaba segfault

-modo linemode de ZRCP que se pueda cambiar temporalmente a través de ZRCP para que instancias de zeng o zeng online lo puedan desactivar
para poderse comunicar correctamente (ni zeng ni zeng online funcionan si está activado linemode telnet)


-pasar dumps de mis mdv exportando contenido entero a carpetas. Y poner carpetas con el label correspondiente
partir de /Users/cesarhernandez/Documents/ql/microdrives_recuperados
Y dejar originales tambien en codigo fuente
desde qemulator, montar el .mdv original en mdv1, y en mdv2_ una carpeta
usar WCOPY mdv1_ to mdv2_
Si hay archivos con acentos en el nombre, hay que copiarlos a mano

-en speech, parece evitar algunas lineas con acentos, por ejemplo menu opciones, item estadísticas (pero sí que lee por ejemplo archivo configuración)
-en speech, al cerrar ventanas de menu parece leer el titulo de la ventana en background mas arriba. Por ejemplo ir a help->about y cerrarla

-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



-drag drop en otros sistemas: windows (necesario sdl2), linux (con xwindow se puede?)


-pulsar dos veces con boton derecho en zx desktop abre dos veces el menu de zx desktop (menu pequeñito) y luego al pulsar ESC hay que pulsar dos
veces

-que con menus de botones superiores (obviamente con topbar desactivado) pudieras cambiarte de cada uno de los menus con flecha izquierda-derecha, tal cual como se hace con topbar: ejemplo estando en Machine que pudieras saltar a Audio con flecha derecha

-ZX desktop: si menu char height no es 8, limite de ventanas por debajo al moverlas hace un efecto extraño,
probablemente porque el alto es multiple de 8 y queda menos de una fila abajo sin poderse usar



-al pulsar en un menú padre, que vaya a la opción que se le pulsa de dicho menú padre

