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

-Zeng opción para enviar mensaje a un usuario concreto
-En Zeng si usuario envía pulsación tecla pero la liberación de tecla no llega por fallo de red, se quedará la tecla pulsada siempre
Hacer un proceso en que, si nadie pulsa una tecla (ni clientes Zeng ni el propio servidor) durante 5 minutos, que libere todas teclas


-Juego de la vida que tenga ayuda con las reglas del juego. O ya lo tiene?

-poder detectar si una instancia se ejecuta desde docker (y NO si se ha compilado desde docker):
esto a nivel de estadística, permito saber en estadisticas web (enviando un parametro) que se han ejecutado instancias de testeo de docker
Para que quiero esa estadística? Se podria simplemente que el Dockerfile al ejecutar zesarux le pase un parámetro --docker y luego
eso se envía en las estadísticas

-real video render
Que en vez de ir siempre al offset 0,0 pueda ir al offset de una ventana abierta, la de video output
Esto permitira mover el render a una ventana. Pero requiere:
-que esa ventana aunque esté arriba no "tape" el render de pixeles: por defecto toda ventana arriba tapa el render de abajo. quiza atributo nuevo de ventana tipo "transparente"
o solo un atributo especial para este render
-que el render no salga de los limites de esa ventana ni de la ventana principal
-alguna manera de conmutar entre el render normal y el de esa ventana


-FX de pantalla emulada que en vez de aplicarlos al rainbow buffer, lo aplique a un buffer posterior que ya tiene el zoom aplicado
Esto permitiria que efectos como scanlines se vieran mejor (al no aplicarse el zoom despues del efecto, sino que el zoom vendria antes). El flujo seria:

-maquina emulada genera rainbow buffer -> se genera otro buffer de tamaño * zoom -> se aplica FX a ese nuevo buffer-> se renderiza en pantalla ese buffer, teniendo en cuenta
que ya no habrán varias rutinas putpixel segun si zoom 1 o zoom >1, sino que siempre seria zoom a 1 (porque ya ha escalado en el buffer anterior)
-efectos que leen posicion raton/zoom, ya no se dividira por zoom
-hay algunos efectos que no quedaran tambien aplicandolos en el buffer con el zoom, cuales?


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

-cuando F8 no está asignada a default, al abrir teclado en pantalla desde menu display, al pulsar una tecla no se vuelve a entrar a teclado en pantalla
Esto es debido al llamar a menu_si_pulsada_tecla_osd, se pierde acción

-Poder enviar eventos a ventanas. Por ejemplo para el ay player, una función que diga enviar un mensaje (“next track”) a ventana (“ayplayer”).
ok--menu debug para enviar mensaje a ventana, para el usuario (string ventana, string mensaje). si hay error (retorno no 0) mostrar ventana de error
*diferentes ventanas pueden enviarse mensajes entre si (incluso en vez de no solo comandos fijos, sino mensajes mas complejos)
*nuevo icono/f-function que para enviar mensajes a ventanas. al crearlo, que pregunte a cual de las ventanas posibles (de zxvision_known_window_names) y que muestre la ayuda de los comandos al usuario para saber que enviar
*funcion en zrcp para enviar mensajes a ventanas
*ver como comentarlo en changelog, si es experimental, si hay varias ventanas que lo permiten, uso, etc
*desde record audio input que se pueda abrir unos watches concretos y hex editor con un follow concreto (para debug de cargas de cinta). Hay ya un to-do de esto

-Agregar ¿todas? las entradas de menus de indexación, llamando a menu_add_item_menu_index_full_path, ejemplo:
        menu_add_item_menu_index_full_path(array_menu_settings_debug,
            "Main Menu-> Settings-> Debug","Menú Principal-> Opciones-> Debug","Menú Principal-> Opcions-> Debug");
Los menus que no usen menu_add_item_menu_index_full_path se les genera automáticamente, si se han abierto desde Main Menu se le agrega ese prefijo,
pero otros que vienen por ejemplo desde Top Menu o desde Top Buttons pues no

-en view sensors agregar sensores de canales de General Sound

-Render objectos 3D (para widgets sensors y otros efectos) mediante el "Painter Algorithm": renderizar todos los triángulos ordenando de mas cerca a mas lejos, así
se ocultan las caras no visibles. Aquí lo difícil sería saber qué triangulos están mas lejos o mas cerca, se pueden ver las coordenadas pero por ejemplo hay problemas con
caras adyacentes de un cubo. Ejemplo:

             ****************
            **      1      **
           * *            * *
          *  *           *  *
         *   *   2      *   *
        ****************    *
        *    *         *    *
        *    *         *    *
        *    ****************
        *   *          *   *
        *  *           *  *
        * *            * *
        **             **
        ****************

    Cara de detrás: 1
    Cara de arriba: 2
    Tienen un vértice en común. Como se determina que 1 está mas atrás de 2? Porque la profundidad de 1 está a la misma que el vértice mas alejado de 2,
    por tanto "parecería" que están a la misma profundidad
    Nota: para el ejemplo se han dibujado caras como cuadrados, pero es lo mismo para triángulos
    Quizá obtener el punto medio de los 3 vértices de un triángulo y obtener la profundidad en ese punto?


-al pulsar con ratón en menu previo, a veces cierra todos los menus. parece que es cuando se ha abierto tooltip, pero no siempre

-ventana para saber qué notas se están enviando a dispositivo midi externo
*mejorarla quizá dibujando piano? aunque será lo mismo que la ventana Audio Chip Piano

-juegos de la lightgun magnum, el sinclair action pack, envian continuamente valores a midi registro 14. por que?


-compilar en 32 bits quiza hace que las columnas de registros modificados mas alla de 32 no funcionen
menu/menu_debug_cpu.c:2296:52: warning: left shift count >= width of type [-Wshift-count-overflow]


-revisar parpadeos en linux en top buttons al moverse por los menus
->parece que solo pasa con driver xwindow, con sdl no pasa


-ventana status esxdos handler:
*archivos abiertos. asi como la info de cada uno. ya hay un comando de zrcp que lo retorna. esxdoshandler-get-open-files
*cwd?


-probar fullscreen en todos drivers
*permitir raton en full screen. probar fullscreen con zx desktop
sdl2 ok. aunque al volver de fullscreen no lee bien raton
en sdl1, raton lo ubica en la posicion inicial
*sdl1, sdl2: revisar fullscreen funcione bien con parametro limites pantalla, o no hacer caso de esos limites en full screen?
->parece que no siempre falla el calculo de posicion del raton. con debian 32 bits x86 funciona bien


-smartload en QL de archivo qlay .mdv: que expanda y lo active como mdv1. aunque al ser solo los mdv de qlay del tamaño concreto, reduce mucho los mdv que se pueden usar
Quizá habria que tener alguna herramienta para expandir cualquier mdv

-Si estoy en maquina ZX80 con menu view basic maximizado, cambio a QL, donde voy a tener menos alto de zx destkop,
y al reorganizar esa ventana, resulta que acaba teniendo mas alto del que cabe. (post_set_machine_no_rom_load_reopen_window llama a zxvision_rearrange_background_windows)
Si ademas lo combino con que estas lineas de zxvision_rearrange_background_windows para que el rearrange considere y=1 como inicial si se sale de margenes:

        if (x<0) x=0;
        if (y<0) y=0;

cambio por:

        if (x<0) x=0;
        if (y<0) y=origen_y;

Se sale mucho mas la ventana cuando hay top menu o botones superiores.

El tema es que rearrange esta pensado para reorganizar desde el menu window, no cuando ha cambiado el tamaño del desktop
Si ha cambiado el tamaño habria que revisar el tamaño de todas las ventanas y reducirlas

-osd watermark no se ve en QL

-que se guarde en recent files las carpetas accedidas para el root dir de mdv


-Poder ocultar menús del topbar: por ejemplo que no aparezca el menu Help

-Poder decir sin ZX desktop topbar salen nombres menús textos enteros o no: consecuencia del anterior, si hay menos menús cabran enteros los nombres

-Poder crear ventanas sin barra de título. Creo que esto ya está en algún TO-DO. Es para que los menus de topmenu se desplieguen sin barra de titulo, pero
solo los primeros menus principales, los submenus si que salgan con barra de título

-Con estilo tiny, sin desktop, desde top menu, submenus no aparecen al lado, aunque haya espacio para ubicarlos, aparecen posicionados arriba a la izquierda
serian estas lineas:
diff --git a/src/zxvision/zxvision.c b/src/zxvision/zxvision.c
index dd279a05..ba320131 100644
--- a/src/zxvision/zxvision.c
+++ b/src/zxvision/zxvision.c
@@ -22680,7 +22680,8 @@ void menu_dibuja_submenu_get_menu_pos(int *xnormal,int *ynormal)
     //    menu_dibuja_submenu_primer_submenu,force_next_menu_position.v);

     //menu a la derecha del anterior siempre que tengamos zx desktop habilitado y opcion de situar menus en zx desktop
-    if (menu_show_submenus_tree.v && screen_ext_desktop_enabled && screen_ext_desktop_place_menu) {
+    //if (menu_show_submenus_tree.v && screen_ext_desktop_enabled && screen_ext_desktop_place_menu) {
+    if (menu_show_submenus_tree.v) {


         //es el primero
@@ -23022,13 +23023,15 @@ int menu_dibuja_menu(int *opcion_inicial,menu_item *item_seleccionado,menu_item

     int posicionar_submenu=0;

-    if (menu_show_submenus_tree.v && m->no_es_realmente_un_menu==0 && screen_ext_desktop_enabled && screen_ext_desktop_place_menu) posicionar_submenu=1;
+    //if (menu_show_submenus_tree.v && m->no_es_realmente_un_menu==0 && screen_ext_desktop_enabled && screen_ext_desktop_place_menu) posicionar_submenu=1;
+
+    if (menu_show_submenus_tree.v && m->no_es_realmente_un_menu==0) posicionar_submenu=1;

Pero entonces posiciona submenus tambien cuando no tenemos topbar y no hay zx desktop....
Hay que revisar todas las condiciones de cuando hay que mostrar menus centrados, o pegados arriba, o pegados a la derecha


-fullscreen en cpc, sin border, en mac , no se ve bien


-en menu storage-microdrive, menus que aparecen para un tipo de microdrive (rmd o mdr), no se podria hacer que para los menus no soportados, hiciera conversión?
Ejemplo: tenemos un rmd y no aparecerá Chkdsk. Podemos hacer que aparezca chkdsk haciendo que primero convierta ese rmd a mdr? tiene sentido?
O quiza mejor que sea el usuario el que convierta a rmd o mdr y asi tener los menus que faltan. Pero en este ultimo caso, estaria en las mismas,
los otros menus no aparecerían. La gracia es que todos pudieran aparecer haciendo conversiones adecuadas
Quiza menus como estiramiento no hacer que aparezca si el tipo no es el correcto
Ver expandido ya lo hace: para los rmd, primero convierte a mdr y de ahi ya expande
Tiene sentido microdrive raw map cuando el microdrive es mdr? quiza por la gracia de ver como se mueve el puntero lector o tambien por ver los datos,
aunque no sea puramente raw porque viene de un mdr, pero puede estar bien

-en zeng online, poder pausar una habitación entera. un jugador que esté dentro verá el juego congelado


-Otro estilo de GUI con barra rainbow de título ventana que sean puntos de color. Para estilo AtariTOS?-> no acaba de quedar bien en AtariTOS
Parece como un bug de color sobre la franja actual

-Dibujado de barras arcoiris en titulo menu: o bien aparezcan a partir de ancho minimo fijo (lo que hay ahora) o que espere
el minimo para que no corte el titulo. Ver funcion menu_dibuja_ventana


-Nuevos condactos para Daad V3. Comentar con Carlos - Uto

DAAD V3 CAMBIOS
===============

1) La cabecera del DDB lleva 3 como versión

X 2) INDIR flagno (opcode 122)

   Condacto que toma el valor del flagno y lo guarda 3 bytes más adelante en la DDB (en el segundo parámetro del siguiente condacto).

   En principio el usuario no podrá usar el INDIR directamente, es el compilador el que lo pone.

X 3) SETAT value operation

Value points to a BIT as HASAT/HASNAT does. Operation may be:

0 -> Clear bit
1 -> Set bit
2 -> Toggle bit

X 4) Cambio en PAUSE:  si el parámetro es 0, en lugar de hacer una pausa larga hace un pausa indefinida hasta que se pulse una tecla, y se vuelva a soltar. La tecla pulsada se graba en el flag fKey1 (y si procede fKey2)
***************** NO FUNCIONA; SE BLOQUEA

5) Hay nuevos bits que significan algo en el FLAG 53:

X- Bit 5: Despues de obtener una SL, si el parser encontró una palabra que no pudo  reconocer después de encontrar el verbo, se pone a 1.
X- Bit 4: Despues de obtener una SL, si el parser encontró una preposición antes del primer nombre, se pone a 1.
X- Bit 2: si está a 1, no se aplicarán terminaciones pronominales a verbos>=240
X- Bit 1: Si su valor es 1, HASAT, HASNAT y SETAT funcionarán sobre un set alternativo de flags 60-91 en lugar de 28-59
X- Bit 0: Tras un DOALL, tendrá valor 1 si no se itera sobre ningún objeto.


--
1) Te afecta en que el primer byte de la cabecera del DDB es un 3 en vez de un 2 o un 1. Eso te permite detectar que versión es. No recuerdo como detectabas que es DAAD.

2) Esto tendrás casi que convertirlo en un solo condacto.

Por ejemplo INDIR 100 LET 100 200 visualmente casi es mejor que sea LET 100 @200

3) Este condacto lo tienes que soportar, dos parametros. Es el equivalente en acción de HASAT/HASNAT, en lugar de comprobar bits, los setea, clear o toggle.


4 )Realmente no te afecta. Quizá si encuentras  un PAUSE 0 puedes poner GETKEY en su lugar, pero tampoco pasa nada porque se quede en 0.

5) No te afecta

6) Además está el nuevo condacto XMES, que muestra un "mensaje extra" apuntado por param1 + 256 por param 2 sobre los 64K posibles para esto (en paginas del 128K). En 48K este condacto no hace nada (no debería ni estar, pero si aparece no hace  nada)

XMES: 120
INDIR: 121
SETAT: 124

Estos tap son una test units que uso para comprobar  en la medida de lo posible los condactos. Entre otros comprueban los de la V3.

Carpeta conversacionales/tipo parser/daad/daad v3

Ahora lo tienes nada más empezar casi (segundo condacto). Pero ojo, solo en el de 128K, en el 48 el compilador cambia los XMES a MES, así que sale el texto "Esto es un XMES" pero es mentira 😃


-iconos de dispositivos de lec romm ,ifrom, kartusho... que no salgan siempre, solo al activarlos, como zxmmc+ o samram. en principio, iconos de todos los que faltan

-poder incorporar las qltools (https://github.com/NormanDunbar/qltools/tree/master) para extraer archivos de imagenes microdrive o floppy

-quiza que ventana no activa tenga también recuadro alrededor de la ventana, como la activa  (y recuadro de color mas claro)

-teclas F de funcion que se puedan lanzar también cuando está top menu abierto pero sin desplegar menus

-ordenar iconos por nombre: que les cambie el identificador de cada icono en el escritorio segun orden alfabetico

-intérprete de lenguaje forth. Para...? por ejemplo para acciones de breakpoints

-que al seleccionar efecto FX lo aplique cuando se está moviendo el cursor al seleccionar efecto, sin tener que darle al enter

-al seleccionar archivo scl que lo expanda en trd automaticamente y seleccione. en vez de tener que pasar por expansion pulsando espacio

-con zoom 1, zx desktop si es suficientemente grande, iconos inferiores salen doble de tamaño pero superiores no salen doble

-en stdout no deja ir al menu anterior -> culpa de topbar, al estar activado no se comporta bien

-Acción de ESCMenu en joystick, cierra todos los menús? Quizá hay que crear una acción nueva que sea menú atrás... O sirve con mover a la izquierda?
