--- ZX Desktop

--Posibles efectos para fondo ZX Desktop:
---Imagen formato BMP o PNG
---Miniatura de pantalla spectrum
---Anaglifo usando segunda pantalla o extensión Desktop. Requeriria update continuo de zxdesktop... o no? que solo redibuje al abrir menu?


--Fbdev debe permitir ZX Desktop?
--sdl2: si se pone width de ZX desktop que no cabe en pantalla, se queda reabriendo continuamente la ventana



-visual datadrive/visualcassettetape
*indicar C60 o lo que sea. letras vectoriales?
*otros detalles de una cinta real: nombre archivo?

-iconos de dispositivos mmc/ide en escritorio

-nuevos iconos suele quedar arriba a la izquierda debajo de una ventana, pues las ventanas tambien se posicionan por defecto ahi
o bien nuevo icono se pone donde pulsado boton, o mirar si hay ventanas ahi. De todas maneras, otras acciones como quicksave, tambien
ponen iconos empezando arriba a la izquierda y tambien puede ser un problema

-Más links iconos: rom, … pok?


-minimizar a icono? entonces tendría que haber en la tabla todos los posibles iconos para todas las ventanas (aunque solo para aquellas que permiten background?). o no es necesario que esté para todas, si tiene icono asociado, se minimiza a icono. y si no, no.
el icono deberia verse de alguna manera diferente para decir que la ventana se ha minimizado (aunque realmente se ha cerrado y ya no esta ahi)
-Minimizar. Si hay icono en escritorio de esa ventana, cerrar ventana ? no, al minimizar no debe cerrar ventana o se perderian quiza algunos
settings de dicha ventana?
*problema: minimizar no sale de la aplicación, solo cambia tamaño de ventana. habria que hacer que se cerrase cuando: la ventana indica
que tiene una funcion de entrada asociada. como indicar esto? en un parámetro de la zxvision_window ?

-al pulsar un icono, si se hace desde una ventana, el icono se mantiene pulsado como es de esperar
Pero si se pulsa un icono desde menu cerrado, se pulsa y despulsa rapidamente y apenas se aprecia el efecto de pulsado


-Permitir tirar papelera a papelera? Esto provocará que se pueda ocultar, aún teniendo el grabado de iconos por config (y suponiendo setting que guarde elementos que estén en papelera)


-Acciones boton derecho sobre escritorio y sobre iconos, genera unas pseudotareas, aunque no son tareas del gestor de tareas propiamente
Esto puede comportar problemas por variables que no se resetean correctamente (que si se hace desde el gestor de tareas),
se podria llegar a integrar dentro del gestor de tareas si da muchos problemas, como "pseudo" tareas
-Quizá botón derecho y izquierdo sobre iconos y escritorio no entra en función multitarea. Y se debería crear una tarea ficticia para ello


-Icono al grabar scr con quickscr. Que se guarde en misma ruta que autosnap

-indicador de app abierta: al abrir una app que no estaba abierta, no aparece el indicador a no ser que se mueva la ventana u otro evento
de repintado de ZX desktop. quiza al abrir una app habría que hacer que se redibujase siempre el zx desktop con menu_draw_ext_desktop(). como? Alternativas:
a) al final de zxvision_new_window_gn_cim. no me convence.. estamos haciendo dibujado en una funcion no pensada para ello
b) en la app, antes de llamar a zxvision_draw_window(ventana); un poco chapuza porque hay que meter la llamada siempre ahi antes
quiza simplificarlo con una llamada nueva que llame a las dos
Igualmente esta solución puede que muestre parpadeos (sobre todo mas en xwindow) porque dibujara el desktop, borrando todo,  y luego encima la ventana
Y cuando pase unos segundos redibujara todo
c) dejarlo asi tal cual. no es un bug sino una feature: no se vera la marca hasta hacer algun evento de redibujado de zxdesktop ;)
Total solo se verá al abrir una app que no estaba abierta. Si ya estaba, la marca se ve siempre


-Se deben mostrar como inversos los iconos con actividad, aunque no esten habilitados?
En QL tiene sentido por ejemplo, se intenta acceder a mdv1_ pero no esta activado
funcion menu_ext_desktop_draw_lower_icon de zxvision.c
En DSK de +3 ya se enviaba a footer
-footer icono de cinta si se usa la cinta aunque no esté insertada? en standard tape y los traps a rom
-mmc no se puede llegar a hacer porque no salta a lectura mmc si no esta activado zxmmc o mmc


-subir limite de iconos en ZX Desktop de 100 a... ?
El problema es que las operaciones de dibujado, movimento etc recorren siempre los 100 iconos, existan o no.
Por tanto si se aumenta ese limite, esas operaciones iran algo mas lentas
Se deberian recorrer teniendo un indice que diga cual es el ultimo icono existente, y recorrer hasta ese indice. De
esa manera si que se podría aumentar el límite sin perjudicar dichas operaciones

-mas acciones boton derecho en dispositivos: cartuchos msx, master sytem....

-Concepto de zx desktop que muestra archivos de una carpeta.
Archivos especiales .zxicons identifican iconos del tipo de ahora.
Otros archivos como .tap etc se pueden pulsar (como ahora con los accesos directos) y cargarlos


-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
--- FIN ZX Desktop



--- ZX Vision

-menus de topbar en diferentes idiomas: alguna manera de poder reducir el texto sin tener que reducir del todo...
Para evitar tener un ZX Desktop muy grande al poner en Español o Catalán


-expandir .z80 para sacar pantalla. tiene sentido? pero entonces se deberia hacer con los sna, sp, zsf, etc


-carpetas con acentos en file selector sale a la derecha el texto de <dir> movido
Esto es por calcular mal la longitud en caracteres de lineas con caracteres utf8, en que un caracter ocupa mas de 1 byte
->ok
*falta calcular posicion de ... en caso de archivos o <dir> cuando ancho pequeño


-revisar algunas opciones de menu que se podrian gestionar con menu_add_item_menu_opcion_conmuta


-si se quitan tooltips no aparecen shortcuts de opciones... se debería poder tener de manera independiente
quiza no hace falta porque ya hay la opcion de hacerlos visibles siempre
Lo que no sale al desactivar tooltips es que aparezcan pasados unos segundos




-ahora menus no tabulados ya no tienen boton minimizar. Hay alguna ventana, que no sea realmente un menu,
y que tenga sentido boton de minimizar?
Por ejemplo, snapshots a ram, el historial es una ventana de tipo menu y ya no se puede minimizar.
Yo entenderia que los botones de minimizar son solo para aplicaciones que pueden ir a background como tal,
y por tanto, incluso los cuadros de dialogo (ayuda-changelog por ejemplo) - que no son menu_dibuja_menu -  ni deberian tenerlo
Por tanto , probablemente, cualquier ventana que use funcion de menu_dibuja_menu (excluyendo tabulados) no deberian poderse minimizar.

-tiene sentido items de "ESC back/close"?

-boton derecho sobre una ventana, que conmute a esa ventana (pero solo cuando el uso de boton derecho no sea ESC)
aunque cuando conmuta con boton izquierdo, espera a liberar el boton y por tanto no se lanza la accion del boton izquierdo
(y no se lanzaria tampoco la del botón derecho)

-ctrl/alt +qaop o wskl para mover ventana, en vez de shift, y hacer que todas las ventanas lo soporten (por ejemplo ahora solo va con ventanas que no tengan menu)


-zxvision_window: buffer para pixeles, con doble buffer para saber si no ha cambiado un pixel, no refrescarlo
Hacer uso de parametro dirty, usado igual en draw_window_contents, para saber _si hay que redibujar capa de pixel o no
ventanas escriben aqui con otra funcion, por ejemplo llamada zxvision_putpixel_buffer, o quiza, renombrar
todas zxvision_putpixel por zxvision_putpixel_direct, y la nueva llamarla tal cual zxvision_putpixel
*definición anterior:
-Nuevo concepto para ventanas:
Buffer de pixel gestionado desde ventanas y renderizado desde draw window contents
Ideal para help keyboard por ejemplo
En draw window contents solo renderiza si se ha modificado o bien la capa de texto o de la de píxeles. Y en ese caso renderiza las dos capas


-Renombrar setting de background windows por multitask windows? O algo así
Debe indicar que se puede dejar ventanas en background pero que también pueden haber múltiples ventanas a la vez

-Ayuda en process management. Cada ítem de ayuda muestra mismo mensaje. Además debe ser un string definido una sola vez que en cada ítem apunta a mismo puntero . Que significa esto????????
-process management: no muestra uso tiempo de ventana zxlife si la ventana actual es zxlife

-En visor de disco (dsk) con archivos, que indique User number (UU) de cada archivo? Ver https://www.seasip.info/Cpm/format22.html
-O incluso mejor un browser/viewer de formato CP/M, que indique:
*extent number
*date file
*etc

-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 funcion que espera_no_tecla sin considerar movimiento raton, deberia ser la habitual, y solo en casos concretos
usar la que si considera movimiento raton



-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


-Texto fondo tiene que sea carácter 255 para que no se redibuje con espacios. O usar un flag de ventana que dice que no tiene que redibujar el 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

-pid de ventana creo que deberia incrementarse siempre. ahora si cierras y abres una ventana continuamente, usa mismo pid, porque siempre busca el ultimo disponible. quiza al crearse una ventana deberia incrementarse en 1? o no?

-Juego "Simón" haciendo uso del logo X. Y con sonidos de eventos de menú

-app Calculadora que permita escribir expresiones

-Tetris en app procrastinate ?

-En imagen IA de descripción, botón para pedir otra imagen a la IA

-otro tipo de overlay pero que no se llame continuamente, solo se llame al mover/redimensionar ventanas.
y desde su aplicacion logicamente si que se llama a su overlay para dibujar
ejemplo: process switcher: no se necesita que continuamente se estén redibujando todos los iconos, solo cuando haya movimiento de ventanas
(pues en ese caso se repintan todas).
otro ejemplo: el logo de la ventana de about: solo hay que redibujarlo cuando hay cambios de ventanas
otro ejemplo: help keyboard
y muchos otros ejemplos en que son pixeles que no cambian, que no hay que redibujar continuamente
Con eso se reducirá mucho el uso de cpu en cada frame

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

-cuando se llama a funcion overlay de cada ventana, se deberia pasar como parametro la propia ventana (zxvision_window *),
asi la funcion de overlay no tiene que guardar un puntero estatico fuera siempre
complementario: quizá en todos los overlay que no necesiten redibujar siempre, detectar el flag que indica precisamente que se ha borrado, movido, etc, para solo redibujar cuando haya que hacerlo (dirty_user_must_draw_contents)
->Realmente hay pocas ventanas que tengan overlay de pixeles estaticos
Una de ellas es el "About" pero ya esta usando dirty_user_must_draw_contents



-opcion para minimizar ventanas a la parte baja de la ventana (o comportamiento como ahora, las minimiza donde estaban)


-quiza otras acciones sobre ventana que hagan cambiar el color del marco en determinados eventos al mover el raton? Ejemplo:
-mostrar titulo ventana entero al pasar raton sobre zona titulo
-cambiar los botones al pasar por encima de ellos

-Botón derecho sobre titulo ventana, activa acciones como: minimizar, maximizar, forzar siempre visible etc

-con la nueva manera de conmutar ventanas, ya no se recrean al entrar y por tanto se puede quedar con barras de scroll permanentemente
quiza boton o accion nueva sobre ventana para reajustar tamaño... o no, quizá interesa tener una ventana con contenido grande pero pequeña en pantalla
(y de ahi que al reducirla tenga scroll)
De hecho la manera de "recrearlas" es cerrarla y volverla a abrir
Esto también comporta cosas buenas, como que la posición de scroll se mantiene al salir y entrar de una ventana.
Esto no es un TO-DO como tal , solo un comentario del nuevo funcionamiento



-ideas para zx vision: https://telcontar.net/Misc/GUI/RISCOS/

-quiza un widget de sensors con la Z del logo?

-Audio chip sheet en modo texto. Que salgan en 3 líneas de texto por cada canal y las notas y hagan scroll igual

-select machine by name hace scroll horizontal la ventana de menu. por que? porque se activa scroll vertical y se pierde 1 caracter de ancho

-Maximizar cuando menú se abre en zx desktop y este es menor que 32, no ubica bien su posición x

-Concepto ventanas en segundo plano en documentación: multitarea cooperativa (Cooperative multitasking), y tambien en FAQ y ayuda background windows help

-Botón del medio de ratón para enviar al fondo una ventana

-desminimizar, minimizar de nuevo, se pierde tamaño antes minimizado/maximizado

-quiza distinguir en la decoracion de ventana lo que es un menu propiamente y lo que es una ventana (ay registers, waveform, etc)

-ayuda cuando habla de boton background, minimizar etc, decir que esos son botones por defecto para ZEsarUX y otros temas, pero que en otros los botones son distintos

-unificar eventos joystick con eventos F-

-funcion menu_generic_message que pueda ocupar mas de 32 caracteres de ancho
ok?->pendiente controlar que ancho linea texto no exceda en total ancho pantalla/char_width -2
Algun otro array de char que esté definido a 32 o 33, en vez de pillar la longitud de la constante MAX_….?


-Describir en development las dos maneras de dibujar el menú y capa de máquina emulada:
con driver completo y mezclando píxeles, o con driver texto y poniendo capa menú siempre encima (y esta no tiene caché de putchar, solo la parte de carácter no modificado)


->Quiza para version estable en zxvision_draw_window_contents que no haga caso de ese flag, por no generar algun error en version final
En void zxvision_draw_window_contents(zxvision_window *w)
Desactivar:
if (must_return) return;

-Activar zx desktop por defecto si cabe? Si no hay configuración anterior?

-Activar multitarea ventanas por defecto ? Si no hay configuración anterior?

-Considerar mejorar dibujar el fondo de zxdesktop: al mover ventanas se ralentiza mucho por tener que dibujar el zxdesktop
Considerar algun modo de dibujado mas rapido -> solventado con frameskip en zx desktop

-en ventanas con can_use_all_width=1, no se habilita la barra de scroll vertical cuando hace falta


-hay algun limite de array o memoria etc en ventanas zxvision alto y alto 32x24? Creo que no

-ordenar directorios arriba en filesel? Pero entonces al pulsar una letra y buscar... a donde ira?


-zxvision_get_char_at_position (usado al pulsar con raton en hotkeys) deberia tener en cuenta si hay offset de pantalla
util en el mapa de aventura de texto cuando la leyenda siempre se ve arriba aunque haya scroll, para poder habilitar hotkeys pulsando el raton



-que en menu de opciones si raton pulsa en ventana pero en zona que no hay opciones, no envie enter


-cuando una tecla F no esta como default, no la envia a maquina emulada: ejemplo MSX F2, QL F5

-First aid de f keys. Cuando se pulse una f por primera vez


-Cuando se hace resize de ventana y desaparecen barras desplazamientos, habría que mover offset a 0?
O esta considerando mal el mostrar barras desplazamiento: quizá deberían salir siempre que offset sea mayor que 0, Y que quepa en pantalla

-Ventana scanf con texto descriptivo dentro


-Visualmem mmc read/write en Windows no muestra bien posicion (siempre a 0). Probablemente porque es 32 bits y no gestiona bien
valores long int

-Tema gui configurable todos sus elementos: fuentes (charset ya se puede), colores etc

-Idea de animación para logo: ZEsarUX con letras de colores rojo amarillo verde azul. Se comprime el texto y la Z va pillando los colores de las letras

-Función que usando misma rutina de imprimir Unicode diga la longitud en bytes que ocupa el carácter.
Así sabremos la longitud de aquellos caracteres que si que imprimimos. Los que no, será 1 y interrogante

-Osd keyboard sin multitarea en ZX81 no va fino

-Sin multitarea, pulsaciones sobre la zona de scroll, hace efectivo el scroll cuando se mueve el raton o se pulsa boton o tecla

-menu: cuando habilita scroll vertical porque no caben opciones, aparece tambien scroll horizontal

-Rueda ratón sin multitarea no se mueve muy fino: parece que actualiza tarde la ventana

-botones/wheel left y right de X11??

-quiza que al crear ventana, si ancho visible no permite caber titulo, hacer mas ancho visible para que quepa

-Puntero en zxvision window a función que actualice ventana o quizá función de entrada a esa ventana?
Para poder hacer que funciones futuras puedan gestionar pulsaciones de ratón en ventana:
La ventana tendrá una función de callback donde se llamara cuando se pulse en zonas que no son barras de scroll
Además de llamar a ese callback, se debe salir de la función de espera tecla zxvision, para poder gestionar eventos que haya avisado dicho callback. Creo que ahora mismo no se sale de función de espera tecla en esos casos
->No se si es necesario pues en filesel lo hacemos de otra  manera
Este callback se le pasara el puntero a ventana y quizá eventos de ratón: que botón se ha pulsado, donde, etc

-Quizá zxvision generic message ya no debería tener el límite de array de líneas o ancho...
-quiza zxvision_print_string_defaults_fillspc deba ser la habitual zxvision_print_string_defaults


-menus zxvision:
--porque menus tabulados no rellenan con espacios? ah porque antes siempre se borraba texto con espacios al dibujar menu?


-zxvision_putpixel deja escribir pixeles mas alla de total_width o height. Esto no es un error en si
Lo hace realmente con visible_width y visible_height


-Mejora para first aid:
Un tercer botón que diga "take me there" para cuando sugiere menús, que te lleve al menú en cuestión
(por ejemplo cuando detecta joystick y dice que vayas al menú de real joystick para configurarlo)



-mejorar setting de ventana de always visible:
*decoracion ventana este por arriba -> esto lo hace siempre que no estemos manipulando la ventana actual
las de debajo, si que tiene consideracion de always_visible, pero en la de ayuda no
porque las de debajo se redibujan llamando a zxvision_draw_below_windows, pero la de arriba no

*al pulsar en esa ventana, detecte bien que es la de arriba. no lo hace bien del todo, pues en una de las llamadas a
zxvision_coords_in_below_windows,
(por debajo de 			//Si se pulsa fuera de ventana
			debug_printf (VERBOSE_DEBUG,"Clicked outside window. Events are sent to emulated machine. X=%d Y=%d",menu_mouse_x,menu_mouse_y);

)

solo llama ahi cuando se pulsa fuera de la ventana activa,
y si la ventana activa esta en la zona de una ventana siempre visible, no conmutara a una ventana siempre visible
*quiza tambien seria mejor que una ventana always_visible, vaya siempre arriba del todo cuando se crean ventanas o se mueven?
pero en ese caso si van arriba del todo quizá tendrian siempre el foco y NO es lo que se espera...


-Nuevos campos para zxvision_windows:
-hora / fecha inicio ventana. Y que se mantenga en sucesivos arranques?

-filesel: Quizá campos pulsables que se vean distintos?


-Acción joystick menú tab


--- FIN ZX Vision




--- menu - fallos ---
-Error: Abrir menú debug cpu con tecla F
Luego pulsar botón salir emulador
Y cierra menus pero no sale

-menu about: sin zx desktop, sale muy ancho pues ancho por defecto en zxvision_generic_message_tooltip es ahora 40
-quiza se deberia hacer mas uso de menu_center_x_from_width, en ventanas que ya no caben con ancho 32 con zxdesktop ancho 256 y abrir ventanas en zxdesktop



-Mientras hay splash de inicio, si se pulsa F5, aparece por un momento overlays de ventanas, cuando F5 esta asignada a "Nothing"


-al cargar smartload, por ejemplo ultimo cargado es thelosttapesofalbion. situa el cursor ahi bien,
pero al subir para arriba desplaza desde scroll sin mover
cursor hasta que esta arriba. O sea, deberia mover siempre cursor y no empezar a hacer scroll hasta que no esta arriba


-Con carga top speed salen dos footer ? El nuevo de rojo también...
Quizá el Rojo debería ser el Tspeed que ya sale en la carga...
Pues porque al ser un hotkey, se abre el menu y al cerrar el menu, se pierde el footer

-parece que si hay joystick conectado, el splash de Z logo no aparece toda la animacion, se cierra a la primera barra de color


-Parece que color de aviso no puede ser mayor que 0-15, pues al usar los $$ de caracter, no permite otros valores. Ver test style Warning text


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

--- menu - mejoras ---


-sprite disabling window tambien para tsconf y maquinas con chip vdp (msx, etc)

-al salir de filesel, debe cambiar unidad activa a la local, y no a mmc.
Esto podria provocar que otros sitios que usan ZVFS (por ejemplo esxdos handler) accedieran a la mmc si lo ultimo que se ha accedido
desde filesel era la mmc
Quiza solo el menu (y no esxdos handler , zxpand u otros) debe usar ZVFS. El resto, rutinas de sistema? -> esxdos, zxpand etc ya NO usan ZVFS

-En debug cpu, quizá al mover rueda de ratón tiene que volver de menú espera tecla. Si no,
es lo que hace que al moverse con la rueda por vista debug cpu, haya que hacer movimiento de raton para que funcione
El problema es que mouse_wheel_vertical se lee y luego siempre se debe poner a 0
Si la ponemos a 0 en bucle de leer tecla, luego no se lee realmente del menu debug cpu


-agregar sensor temperatura cpu linux


-frecuencias chips audio como sensores? no sé si vale la pena pues los valores de frecuencias son exponenciales y por ejemplo
las ultimas dos notas, una es el doble de la otra. Por tanto si usamos un widget de speedometer, estaria casi al 0 siempre excepto para
frecuencias muy altas.

-quiza linea cursor en debug cpu ubicar en el centro

- realtape browser que pille el setting de improved algorithm yes/no

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

- Tape Improved algorithm quizá renombrar a “alternate” algorithm

-ula settings visible en otras maquinas no-spectrum?


-Opción no marcar registros en rojo que se van  a modificar en debug cpu


-Ventana ayuda teclado:
* que se pudiera hacer sin multiplicar por zoom_gui? asi en next, cpc, ql etc no se verian el doble de grande

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


-Mostrar info en menu network de descargas, commits etc. Solo si hay ssl (porque github solo esta con https)

-Info video mode Pentagon 16c ventana. Que diga modo activo en ventana vídeo info. Problema: en maquina no tsconf o tbblue no hay ventana de video info

-AY partitura:
*para el beeper tambien -> no hasta que se mejore la rutina de deteccion de nota
*ideal para probar duraciones: golden axe


-temperatura cpu en mac
https://github.com/lavoiesl/osx-cpu-temp


-En info file de file utils, decir tipo de archivo. Usar alguna llamada común para tipo archivo y visor archivo

-hex editor: muestra pagina entera cuando una zona de memoria por ejemplo solo es de 2 bytes. Probar por ejemplo con debug memory zone


-Mouse: para que no haga framedrop al moverse sobre un menu, quiza se deberia considerar cada x frames de tiempo.


-Permitir teclas numericas como atajos. Para ello hay que reasignar gestion de teclas cursores que las convierte a '6' y '7'

-Al insertar mmc o ide debe ir primero a rutas shared, tal y como hace smartload por ejemplo. y tambien ir a ultima ruta al abrir selector archivos

-alguna vez al abrir ay piano, pulsar boton derecho fuera de la ventana, desaparece la ventana y no vuelve a menu anterior
y no vuelve a abrir el menu, y parece que tampoco envia teclado a maquina emulada

-filtro AY se sigue escuchando cosas aun desactivando los 3 canales->tienen que ver envolventes y speech


-para comprobar coordenada y footer, calcular desde abajo de alto ventana. Y usar funcion comun en screen.c
-quiza funcion footer a scr_putchar_footer_comun_zoom se tiene que hacer con coordenadas 0,1 o 2 simplemente

-------------


Otros TODO menos prioritarios, de aqui hasta el final del archivo:



*** Menu  ***

-poder usar kempston mouse desde menu si ventana de menu no tiene el foco (al igual que sucede con el teclado)

-Snapshots automáticos de nombre que depende del archivo cargado. Para tener siempre uno cuando se cambia de juego

-Opcional cargar snapshot y no cerrar menú. Mismo para Smartload pero solo con snapshots?

-Algunos items de menu, por ejemplo dentro del buscador de vidas, son lineas no seleccionables,
aunque se definen de tipo normal. Tendrian que ser de tipo separador. Pero en ese caso, habria que hacer que cuando se abra el menu,
si el cursor esta en un separador, que haga bajar el cursor -> esto parece que ya se intento, buscar comentario que dice:
//Nota: el separador no puede ser final de menu


-Waveform que vaya haciendo fade out (sin scroll) de píxeles anteriores. Para esto require tener varios niveles de color de un pixel


-Buscar bytes en memory zone -> problema: ahora las direcciones en memory zone pueden ser > 65535
En ql llega a buscar?

-Algo para poder generar mapas de todas pantallas
Tipo:
https://simonowen.com/spectrum/tilemap/

Pero para cualquier juego

Del estilo:
Hacer captura. Luego hacer captura de la derecha, etc



-Quizá algunas operaciones de archivos que se cancelen con esc que avise con ventana temporal de dicha cancelación

-Convertir automático de cinta a wav, mediante uso de mantransfe

-stdout file selector. Poder hacer ls, cd etc.

-Alternativa en los menús tabulares tipo como el de sprites o colores, que usan cursores y pgup y down
-usar otras acciones / hotkeys para eso
-agregar un handler especial para esas teclas. Pero entonces como se mueve uno por los ítems? Con tecla tab?
Que uso se le da a tab? En file utils, si se tabula, cambia de sección. En menú tabular, el tab sale?

-ventana debug cpu: si se estaba en vista 8, y luego cargamos un juego que no sea de paws/daad/quill,
la vista 1 sera ventana grande pero con alto total reducido. Parecido a lo que sucedia al cambiar de vista

-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


-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

-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


-menus tabulados:
TAB conmutar a zona de acciones? Quiza nueva funcion para seleccion acciones, que permita:

**mover con cursor abajo/arriba e izquierda/derecha. TAB o ESC permite salir
**en file utils, por su parte, tambien permito acciones directas como ahora con shift+tecla. o no?

-eventos joystick para simular pgup, pgdn

-Estadísticas de diferentes componentes del core, ya sea cpu u otra cosa, como memoria usada para el rainbow buffer,  y cosas así
Info de tamaño ventana. Y tamaño ventana sin zoom

-estadisticas memoria etc con getrusage: aunque esto solo vale para Linux


-mejorar deteccion frecuencia sonido en audio wave form


-poder hacer hotswap de una maquina a zx-uno


-joystick derecha para tab. solo en menu

-menu_ventana_scanf deberia retornar un codigo de retorno en caso de pulsado ESC

-visualmem podria tener en cuenta toda la ram de una maquina: 128kb en +2, Z88 etc.... aunque dificil para +2 y Z88.... y necesario?
-visualmem que siga memory zone

-lectura de nombre de archivo en fileselector para stdout no admite espacios


-sin multitask, no va repeticion de teclas. esto es porque no se ejecuta timer_check_interrupt
quiza estas funciones de contadores deberian venir con el thread del timer? aunque luego en version
no-thread no funcionara tampoco
->esto ya queda solventado con el setting de stop emulation on menu->multitarea sigue funcionando aunque la cpu esta pausada, y funciona repetición de teclas

-Mostrar consumo de cpu solo del proceso del emulador?


-descomprimir rar,gz, etc con espacio en nombres a veces falla. el comando system le envia las "" pero el propio comando
no gestiona bien nombres con espacios


-tecla ',' en zx80/81 no va en menu porque se interpreta como symbol+shift y es lo mismo que TAB para el menu


-formato hobeta: mostrar info en fileutils

Hobeta ( *.$B , *.$C , *.$D ,...) es un formato obsoleto para almacenar archivos TR-DOS , utilizado principalmente por emuladores ZX Spectrum más antiguos . Una característica del formato es que solo se almacena un archivo TR-DOS en un archivo Hobeta . El archivo Hobeta es esencialmente una copia byte por byte de un archivo TR-DOS con un encabezado de 17 bytes agregado.
La extensión del archivo se obtiene agregando un carácter "$" antes de la extensión del archivo TR-DOS original .
El formato apareció junto con la copiadora Hobeta del mismo nombre (hobeta.exe 19/11/1990: "HoBeta V2.0, Copyright (C) 1990, InterCompex, Soviet-Swiss JV" - ver El Hobbit ).
Descripción del formato

Título:
+0, 8 bytes - nombre de archivo TR-DOS
+8, 1 byte - tipo de archivo (extensión) TR-DOS
+9, 2 bytes - parámetro de INICIO del archivo
+11, 2 bytes - parámetro LENGTH del archivo (longitud en bytes)
+13, 2 bytes - tamaño de archivo en sectores
+15, 2 bytes: suma de comprobación de los 15 bytes anteriores (¡no el archivo en sí!)
Datos:
Copia byte a byte de todos los sectores del archivo
El byte alto del tamaño del archivo en sectores siempre debe ser 0.
Algoritmo de cálculo de suma de comprobación:
suma de control=0;
for (i=0; i<=14; CheckSum = CheckSum + (header[i] * 257) + i, i++);

Ahora se le ha dado una nueva vida al formato en la computadora ZX Evolution. Los archivos binarios (con la extensión .$C) en este formato se pueden iniciar directamente desde dispositivos FAT (como HDD o tarjeta SD) mediante el shell de Evo Reset Service integrado.

*************
