ZEsarUX Uto Edition

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Responder
Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

ZEsarUX Uto Edition

Mensaje por Uto » 03 Ene 2017, 11:32

Hola,

[for english version, see below]

Ayer anduve trasteando con los fuentes de ZEsarUX para cambiar algunas cosas del interfaz, pensando básicamente en el desarrollo de ZX-Uno. Como me suena que alguien había preguntado por algo parecido comparto aquí los ejecutables para linux y Windows en un fichero zip, y los fuentes modificados.

Disclaimer: esta versión no es oficial, y ni siquiera parte de un release oficial ni de una beta,parte de los fuentes que había ayer en Sourceforge, que al parecer tenían la emulación de QL a medias por lo que no funcionará. También he roto intencionadamente una funcionalidad que tenían las teclas F6 y F7 en el emulador de Z88 bajo cierta librería, es algo que no me importa porque como digo esta versión la hago para desarrollar más cómodamente en ZX-Uno. No voy a realizar más versiones parcheadas, es decir, no esperéis que a cada versión de ZEsarUX yo saque una versión parcheada. Tampoco voy a dar soporte de esta versión, al que le sirva bien, al que no, ahí tiene la oficial.

Cambios realizados:

1) Aun siendo una beta (incluso una alfa podría decirse), no muestra el mensaje de que es una beta al entrar.
2) Tampoco hace un fundido al negro al salir, sale directamente.
3) Se han añadido los siguientes shortcuts de teclado: F7--> NMI, F11->Reset, F12->Hard reset, F2->reload MMC.

Si quieres que las teclas hagan la función directamente añade --forceconfirmyes al .zesaruxrc o a la llamada a zesarux en cuestión.

Los enlaces al final.

English version

I've working a bit on ZEsarUX source code and I have made my own modified version made specially to work with ZX-Uno. I'm sharing it with you so in case you like the features implemented you can use it. See below for binaries and source downloads.

Disclaimer: this is not an official release, and it does not even come from an official release, I just got the current code at Sourceforge and patched it what means QL emulation has bugs and may be other unexpected bugs. Also, I broke F6/F7 keys functionality for Z88 emulator on purpose. I don't really mind cause this version is for ZX-Uno, everything else doesn't matter. I will not be patching future versions of ZEsarUX, neither I'm providing support for this version.

Changelog:

1) Despite being a beta (ven alpha) version, it does not display the message about it (well, actually does but then doesn't make a 3 seconds delay)
2) Also, there is no colour fadeout when exiting
3) I have added the following shortcuts: F7->NMI, F11->Reset, F12->Hard Reset, F2->Reload MMC.

In case you want those keys to work directly without asking you if you want to proceed, just add --forceconfirmyes to your .zesaruxrc file of calling order.

Links


Patched source code
Binaries

- El binario de linux es de 64 bits, es el fichero sin extensión, el .exe es el de Windows. Simplemente reemplaza el ejecutable oficial con este.
- Linux binary file is a 64bit executable, is the one without extension. The Windows executable is the one with .exe extension.Just replace the official executable with this one.

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: ZEsarUX Uto Edition

Mensaje por chernandezba » 03 Ene 2017, 11:46

Ole, ole y ole! :chocala!:
Primera versión personalizada de ZEsarUX, la verdad es que no me imaginaba que a nadie se le ocurriría hacer una versión custom, jeje. Gracias!

Permíteme que me ponga puñetero, respecto este punto:
2) Tampoco hace un fundido al negro al salir, sale directamente.
Esto ya te lo hace la opción --quickexit ;)

Saludos
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: ZEsarUX Uto Edition

Mensaje por Uto » 03 Ene 2017, 11:49

chernandezba escribió: Esto ya te lo hace la opción --quickexit ;)
Sí, acabo de poner en el otro hilo que me acabo de dar cuenta, pero para esta ya se queda así O:-)

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: ZEsarUX Uto Edition

Mensaje por chernandezba » 03 Ene 2017, 12:02

He visto tus cambios y me parecen muy bien implementados. Haber escrito las funciones en el menú de manera similar a como ya se gestiona el quickload es la manera mas rápida.
Fíjate cuando alguna vez he dicho que poder reconfigurar, mediante menús/configuración, todas las teclas F a funciones no es fácil, dado que tendría que tener una tabla de funciones que se pueden realizar (como tu reset, hard reset, reload mmc, etc) y también hay el problema de solapamiento de las teclas F (que en tu caso cargarse los F6 y F7 no afectan en casi nada, como decía)

Pero bueno, con el tiempo conseguiré agregarlo de la manera más elegante posible :mario:
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: ZEsarUX Uto Edition

Mensaje por Uto » 03 Ene 2017, 12:13

chernandezba escribió:He visto tus cambios y me parecen muy bien implementados. Haber escrito las funciones en el menú de manera similar a como ya se gestiona el quickload es la manera mas rápida.
Fíjate cuando alguna vez he dicho que poder reconfigurar, mediante menús/configuración, todas las teclas F a funciones no es fácil, dado que tendría que tener una tabla de funciones que se pueden realizar (como tu reset, hard reset, reload mmc, etc) y también hay el problema de solapamiento de las teclas F (que en tu caso cargarse los F6 y F7 no afectan en casi nada, como decía)

Pero bueno, con el tiempo conseguiré agregarlo de la manera más elegante posible :mario:
Gracias por los comentarios, la verdad es que cuando le "metes mano" a un código ajeno a veces no sabes muy bien por donde tirar, así que me fijé en el quickload y me puse a copiar. Primero hice el de NMI y cuando conseguí que funcionara, los demás fueron fáciles. Eso sí, entenderlo y cambiarlo me llevó unas horas seguidas, algo de lo que no suelo disponer (dispongo de ratos sueltos).

Efectivamente no tienes fácil lo de permitir configurar cada función, la única manera sería como dices tener una tabla de funciones, y para evitar el solapamiento, tener una tabla "general" y luego una tabla particular donde proceda (como el Z88). En fin, imagino que es una tarea ardua, pero te animo a intentarlo porque permitiría a cada usuario ponerse el invento a su gusto.

Lo del mensaje de la beta, obviamente si lo hago para mi lo quito, pero se me acaba de ocurrir algo que permitiría quitarlo a quien ya lo ha visto, poner un parámetro que sea --nobetamessageXXXX, donde XXX es el número de versión. Así, a cada nueva versión beta saldria el mensaje y todos lo veríamos, pero podríamos quitarlo entrando el "rc" y poniendo el parámetro, o actualizandolo si lo tenemos de una beta anterior. No digo simplemente "--nobetamessage" porque entonces una vez puesto ninguna beta avisa. Bueno, ahí lo dejo :-D

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: ZEsarUX Uto Edition

Mensaje por Uto » 03 Ene 2017, 12:52

Este es el diff, por si alguien quiere hacer el mismo parche en futuras versiones:

Código: Seleccionar todo

diff -uN zesarux-code-cherna/menu.c zesarux-code-uto/menu.c
--- zesarux-code-cherna/menu.c	2017-01-03 12:39:57.395816983 +0100
+++ zesarux-code-uto/menu.c	2017-01-03 12:39:30.799917356 +0100
@@ -166,6 +166,14 @@
 //Gestionar pulsaciones directas de teclado o joystick
 //para quickload
 z80_bit menu_button_quickload={0};
+//para NMI
+z80_bit menu_button_nmi={0};
+// para Hardreset
+z80_bit menu_button_hardreset={0};
+// para Reset
+z80_bit menu_button_reset={0};
+//Para ReloadMMC
+z80_bit menu_button_reloadmmc={0};
 //para on screen keyboard
 z80_bit menu_button_osdkeyboard={0};
 z80_bit menu_button_osdkeyboard_return={0};
 
@@ -20402,6 +20383,10 @@
 {
         //desactivar botones de acceso directo
         menu_button_quickload.v=0;
+        menu_button_nmi.v=0;
+        menu_button_hardreset.v=0;
+        menu_button_reset.v=0;
+        menu_button_reloadmmc.v=0;
         menu_button_osdkeyboard.v=0;
         menu_button_exit_emulator.v=0;
         menu_breakpoint_exception.v=0;
@@ -20484,7 +20469,30 @@
 		menu_quickload(0);
 		cls_menu_overlay();
 	}
-
+	else if (menu_button_nmi.v)
+	{
+		menu_espera_no_tecla();
+		menu_debug_nmi(0);
+		cls_menu_overlay();
+	}
+	else if (menu_button_hardreset.v)
+	{
+		menu_espera_no_tecla();
+		menu_debug_hard_reset(0);
+		cls_menu_overlay();
+	}
+	else if (menu_button_reset.v)
+	{
+		menu_espera_no_tecla();
+		menu_debug_reset(0);
+		cls_menu_overlay();
+	}
+	else if (menu_button_reloadmmc.v)
+	{
+		menu_espera_no_tecla();
+		menu_storage_mmc_reload(0);
+		cls_menu_overlay();
+	}
 	else if (menu_button_osdkeyboard.v) {
 		menu_espera_no_tecla();
 		menu_onscreen_keyboard(0);
diff -uN zesarux-code-cherna/menu.h zesarux-code-uto/menu.h
--- zesarux-code-cherna/menu.h	2017-01-03 12:39:54.231828923 +0100
+++ zesarux-code-uto/menu.h	2017-01-03 12:39:25.375937827 +0100
@@ -124,6 +124,10 @@
 extern char quickload_file[];
 
 extern z80_bit menu_button_quickload;
+extern z80_bit menu_button_nmi;
+extern z80_bit menu_button_reloadmmc;
+extern z80_bit menu_button_reset;
+extern z80_bit menu_button_hardreset;
 extern z80_bit menu_button_osdkeyboard;
 extern z80_bit menu_button_osdkeyboard_return;
 extern z80_bit menu_button_exit_emulator;
diff -uN zesarux-code-cherna/scrcaca.c zesarux-code-uto/scrcaca.c
--- zesarux-code-cherna/scrcaca.c	2017-01-03 12:39:57.395816983 +0100
+++ zesarux-code-uto/scrcaca.c	2017-01-03 12:39:30.807917326 +0100
@@ -321,17 +321,14 @@
                                 util_set_reset_key(UTIL_KEY_F5,pressrelease);
                         break;
 
-			//F6 es Ctrl / diamond
-			//F7 es Alt / square
-
                         //F6 pulsado
                         case CACA_KEY_F6:
-                                util_set_reset_key(UTIL_KEY_CONTROL_L,pressrelease);
+                                util_set_reset_key(UTIL_KEY_F6,pressrelease);
                         break;
 
                         //F7 pulsado
                         case CACA_KEY_F7:
-                                util_set_reset_key(UTIL_KEY_ALT_L,pressrelease);
+                                util_set_reset_key(UTIL_KEY_F7,pressrelease);
                         break;
 
                         //F8 pulsado. osdkeyboard
@@ -350,6 +347,15 @@
                                 util_set_reset_key(UTIL_KEY_F10,pressrelease);
                         break;
 
+                        //F11 pulsado
+                        case CACA_KEY_F11:
+                                util_set_reset_key(UTIL_KEY_F11,pressrelease);
+                        break;
+
+                        //F12 pulsado
+                        case CACA_KEY_F12:
+                                util_set_reset_key(UTIL_KEY_F12,pressrelease);
+                        break;
 
 
 			case CACA_KEY_ESCAPE:
diff -uN zesarux-code-cherna/scrcurses.c zesarux-code-uto/scrcurses.c
--- zesarux-code-cherna/scrcurses.c	2017-01-03 12:39:57.395816983 +0100
+++ zesarux-code-uto/scrcurses.c	2017-01-03 12:39:30.807917326 +0100
@@ -1436,11 +1436,11 @@
 		//F6 es Ctrl /diamond
 		//F7 es Alt / square
                 else if (c==KEY_F(6)) {
-                        util_set_reset_key(UTIL_KEY_CONTROL_L,1);
+                        util_set_reset_key(UTIL_KEY_F6,1);
                 }
 
                 else if (c==KEY_F(7)) {
-                        util_set_reset_key(UTIL_KEY_ALT_L,1);
+                        util_set_reset_key(UTIL_KEY_F7_L,1);
                 }
 
 
diff -uN zesarux-code-cherna/scrfbdev.c zesarux-code-uto/scrfbdev.c
--- zesarux-code-cherna/scrfbdev.c	2017-01-03 12:39:57.395816983 +0100
+++ zesarux-code-uto/scrfbdev.c	2017-01-03 12:39:30.811917311 +0100
@@ -953,7 +953,16 @@
 			case RAWKEY_F5:
 				util_set_reset_key(UTIL_KEY_F5,pressrelease);
 				break;
+
+				//F6 pulsado
+			case RAWKEY_F6:
+				util_set_reset_key(UTIL_KEY_F6,pressrelease);
+				break;
 				
+				//F7 pulsado
+			case RAWKEY_F7:
+				util_set_reset_key(UTIL_KEY_F7,pressrelease);
+				break;
 				
 				//F8 pulsado
 			case RAWKEY_F8:
@@ -970,6 +979,15 @@
 				util_set_reset_key(UTIL_KEY_F10,pressrelease);
 				break;
 				
+				//F11 pulsado
+			case RAWKEY_F11:
+				util_set_reset_key(UTIL_KEY_F11,pressrelease);
+				break;
+
+				//F12 pulsado
+			case RAWKEY_F12:
+				util_set_reset_key(UTIL_KEY_F12,pressrelease);
+				break;
 				
 				
 				//ESC pulsado
diff -uN zesarux-code-cherna/scrsdl2.c zesarux-code-uto/scrsdl2.c
--- zesarux-code-cherna/scrsdl2.c	2017-01-03 12:39:57.395816983 +0100
+++ zesarux-code-uto/scrsdl2.c	2017-01-03 12:39:30.811917311 +0100
@@ -666,6 +666,15 @@
                         break;
 
 
+                        //F6 pulsado.
+                        case SDLK_F6:
+                                util_set_reset_key(UTIL_KEY_F6,pressrelease);
+                        break;
+
+                        //F7 pulsado.
+                        case SDLK_F7:
+                                util_set_reset_key(UTIL_KEY_F7,pressrelease);
+                        break;
 
 
                         //F8 pulsado. osdkeyboard
@@ -685,6 +694,17 @@
                         break;
 
 
+                        //F11 pulsado
+                        case SDLK_F11:
+                                util_set_reset_key(UTIL_KEY_F11,pressrelease);
+                        break;
+
+
+                        //F12 pulsado
+                        case SDLK_F12:
+                                util_set_reset_key(UTIL_KEY_F12,pressrelease);
+                        break;
+
                         //ESC pulsado
                         case SDLK_ESCAPE:
                                 util_set_reset_key(UTIL_KEY_ESC,pressrelease);
diff -uN zesarux-code-cherna/scrsdl.c zesarux-code-uto/scrsdl.c
--- zesarux-code-cherna/scrsdl.c	2017-01-03 12:39:57.395816983 +0100
+++ zesarux-code-uto/scrsdl.c	2017-01-03 12:39:30.815917296 +0100
@@ -690,6 +690,16 @@
                         break;
 
 
+                        //F6 pulsado.
+                        case SDLK_F6:
+                                util_set_reset_key(UTIL_KEY_F6,pressrelease);
+                        break;
+
+
+                        //F7 pulsado.
+                        case SDLK_F7:
+                                util_set_reset_key(UTIL_KEY_F7,pressrelease);
+                        break;
 
 
                         //F8 pulsado. osdkeyboard
@@ -708,6 +718,15 @@
                                 util_set_reset_key(UTIL_KEY_F10,pressrelease);
                         break;
 
+                        //F10 pulsado
+                        case SDLK_F11:
+                                util_set_reset_key(UTIL_KEY_F11,pressrelease);
+                        break;
+
+                        //F12 pulsado
+                        case SDLK_F12:
+                                util_set_reset_key(UTIL_KEY_F12,pressrelease);
+                        break;
 
                         //ESC pulsado
                         case SDLK_ESCAPE:
diff -uN zesarux-code-cherna/scrxwindows.c zesarux-code-uto/scrxwindows.c
--- zesarux-code-cherna/scrxwindows.c	2017-01-03 12:39:57.395816983 +0100
+++ zesarux-code-uto/scrxwindows.c	2017-01-03 12:39:30.815917296 +0100
@@ -1379,18 +1379,15 @@
                                 util_set_reset_key(UTIL_KEY_F5,pressrelease);
                         break;
 
-/*
-
-
-                        //simulador de joystick
-                        extern int simulador_joystick_forzado;
-                        extern int simulador_joystick;
-                        case XK_F7:
-                                if (simulador_joystick && pressrelease) simulador_joystick_forzado=1;
+			//F6 pulsado. 
+			case XK_F6:
+				util_set_reset_key(UTIL_KEY_F6,pressrelease);
                         break;
 
-*/
-
+            //F7: NMI
+			case XK_F7:
+				util_set_reset_key(UTIL_KEY_F7,pressrelease);
+                        break;
 
 			//F8 pulsado. osdkeyboard
 			case XK_F8:
@@ -1403,11 +1400,19 @@
                         break;
 
 
-                        //F10 pulsado
-                        case XK_F10:
+            //F10 pulsado
+            case XK_F10:
 				util_set_reset_key(UTIL_KEY_F10,pressrelease);
                         break;
 
+            //F11 pulsado
+            case XK_F11:
+				util_set_reset_key(UTIL_KEY_F11,pressrelease);
+                        break;
+            //F12 pulsado
+            case XK_F12:
+				util_set_reset_key(UTIL_KEY_F12,pressrelease);
+                        break;
 
 			//ESC pulsado
 			case XK_Escape:
diff -uN zesarux-code-cherna/utils.c zesarux-code-uto/utils.c
--- zesarux-code-cherna/utils.c	2017-01-03 12:39:57.399816968 +0100
+++ zesarux-code-uto/utils.c	2017-01-03 12:39:30.827917251 +0100
@@ -5001,7 +5001,7 @@
                                 }
                         break;
 
-                        //F2 pulsado
+/*                        //F2 pulsado OLD
                         case UTIL_KEY_F2:
 
                                 if (pressrelease) {
@@ -5015,6 +5015,7 @@
                         break;
 
 
+*/
                         //F3 pulsado
                         case UTIL_KEY_F3:
 
@@ -5028,6 +5029,15 @@
                                 }
                         break;
 
+            //F10 pulsado. Reset
+            case UTIL_KEY_F2:
+                    if (pressrelease) {
+                            menu_abierto=1;
+                            menu_button_reloadmmc.v=1;
+                    }
+
+            break;
+
 			//F4 pulsado. Volcar pantalla a speech
 			case UTIL_KEY_F4:
 				if (pressrelease) textspeech_enviar_speech_pantalla();
@@ -5046,16 +5056,29 @@
                         break;
 
 
-			//F8 pulsado. On Screen keyboard, De momento solo en spectrum
-                        case UTIL_KEY_F8:
-				if (pressrelease) {
-				menu_abierto=1;
-				menu_button_osdkeyboard.v=1;
-                     	}
+                        //F7 pulsado. NMI
+                        case UTIL_KEY_F7:
+
+                                if (pressrelease) {
+                                		menu_abierto=1;
+                                        menu_button_nmi.v=1;
+                                }
 
                         break;
 
 
+					//F8 pulsado. On Screen keyboard, De momento solo en spectrum
+        	        case UTIL_KEY_F8:
+					if (pressrelease) {
+						menu_abierto=1;
+						menu_button_osdkeyboard.v=1;
+                    }
+                    break;
+
+
+
+
+
                         //F9 pulsado. quickload
                         case UTIL_KEY_F9:
 
@@ -5066,7 +5089,10 @@
 
                         break;
 
-                        //F10 pulsado
+
+
+
+                        //F10 pulsado 
                         case UTIL_KEY_F10:
 
                                 if (pressrelease) {
@@ -5076,6 +5102,24 @@
                                         puerto_especial3 |=16;
                                 }
                         break;
+                        //F11 pulsado. Reset
+                        case UTIL_KEY_F11:
+                                if (pressrelease) {
+                                        menu_abierto=1;
+                                        menu_button_reset.v=1;
+                                }
+
+                        break;
+
+                        //F12 pulsado. Hard Reset
+                        case UTIL_KEY_F12:
+                                if (pressrelease) {
+                                        menu_abierto=1;
+                                        menu_button_hardreset.v=1;
+                                }
+
+                        break;
+
 
                         //ESC pulsado. Para Z88 y tecla menu
                         case UTIL_KEY_ESC:
@@ -147,9 +147,13 @@
 #define RAWKEY_F3 0x3d
 #define RAWKEY_F4 0x3e
 #define RAWKEY_F5 0x3f
+#define RAWKEY_F6 0x40
+#define RAWKEY_F7 0x41
 #define RAWKEY_F8 0x42
 #define RAWKEY_F9 0x43
 #define RAWKEY_F10 0x44
+#define RAWKEY_F11 0x45
+#define RAWKEY_F12 0x46
 
 
 
@@ -247,9 +251,13 @@
 	UTIL_KEY_F3,
 	UTIL_KEY_F4,
 	UTIL_KEY_F5,
+	UTIL_KEY_F6,
+	UTIL_KEY_F7,
 	UTIL_KEY_F8,
 	UTIL_KEY_F9,
 	UTIL_KEY_F10,
+	UTIL_KEY_F11,
+	UTIL_KEY_F12,
 	UTIL_KEY_ESC,
 	UTIL_KEY_PAGE_UP,
 	UTIL_KEY_PAGE_DOWN,


Avatar de Usuario
Haplo
Mensajes: 368
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: ZEsarUX Uto Edition

Mensaje por Haplo » 03 Ene 2017, 17:22

:plasplas:
Buenísima idea Carlos!
Voy a probarlo ahora mismo.

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: ZEsarUX Uto Edition

Mensaje por Uto » 04 Ene 2017, 12:58

Me he dado cuenta de un problema que se presenta al menos en la versión de linux: esta versión de ZesarUX no tiene sonido.

Lo he corregido (mi linux no tenía instaladas las librerías de desarrollo necesarias :roll:) y esta nueva versión sí tiene:

https://www.dropbox.com/s/djdjidfkf5qmx ... s.zip?dl=0

Si alguno lo está probando en Windows y no suena avisad, pero creo que como ahí usa SDL no debe haber problema.

Responder