Aleatoriedad en core ZX-Uno

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
javidoom
Mensajes: 51
Registrado: 19 Mar 2016, 12:11

Re: Aleatoriedad en core ZX-Uno

Mensaje por javidoom » 24 Jul 2017, 08:50

Zup escribió: Volviendo al caso... ¿habéis probado el juego en un Spectrum real y lo habéis comparado con el comportamiento del ZX Uno? ¿Los emuladores de PC hacen lo mismo? En cuanto a la "aleatoriedad" ¿seguro que son aleatorias siempre? Es decir ¿es posible que solo cambien de partida a partida (p.ej.: que la primera vez que juegas aparezcan siempre en el mismo sitio, pero en la segunda cambie respecto al primero)?
Menos las pruebas de emulador, son las que he hecho justamente.
ZX-uno con tap
ZX-Uno con juego real
Spectrum con juego real
Spectrum con TZK

Todas iguales, tanto en la primera como en su segunda partida.

Un saludo.
Vintagenarios powaaa!

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

Re: Aleatoriedad en core ZX-Uno

Mensaje por chernandezba » 24 Jul 2017, 09:43

En ZEsarUX, los registros de la cpu se inicializan con :

AF=BC=DE=HL=IX=IY=SP=FFFFH
AF'=BC'=DE'=HL'=FFFFH
IR=0000H


Esto en principio es el valor con el que arrancan en un Spectrum real, es un tema ya comentado en estos hilos (tema que descubrió Miguel Ángel)

http://foro.speccy.org/viewtopic.php?f=11&t=2319
https://www.worldofspectrum.org/forums/ ... ent_539714

Hay sin embargo muchos emuladores que no se comportan así.

Por cierto, como curiosidad, en ZEsarUX, para los valores random de:
-chip de sonido
-contenido de la ram aleatorio para la mayoría de máquinas (excepto Inves y alguna otra)

Utilizo una semilla inicial que depende del reloj del sistema, por lo que siempre tendrán un valor inicial diferente

Saludos
César
----

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

Avatar de Usuario
mcleod_ideafix
Mensajes: 828
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Aleatoriedad en core ZX-Uno

Mensaje por mcleod_ideafix » 24 Jul 2017, 11:36

chernandezba escribió: Por cierto, como curiosidad, en ZEsarUX, para los valores random de:
-chip de sonido
¿Te refieres al generador de ruido blanco del AY?
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

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

Re: Aleatoriedad en core ZX-Uno

Mensaje por chernandezba » 24 Jul 2017, 11:39

mcleod_ideafix escribió: ¿Te refieres al generador de ruido blanco del AY?
Si, eso, que no fui muy claro
----

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

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

Re: Aleatoriedad en core ZX-Uno

Mensaje por chernandezba » 24 Jul 2017, 11:41

Luego, para generar el siguiente valor pseudo random, utilizo la fórmula:

resultado=(75*(r+1)-1);

Teniendo en cuenta que r es el valor anterior, resultado es el valor siguiente, y ambos son de 16 bits

Te suena esa fórmula?
----

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

Avatar de Usuario
jcgamestoy
Mensajes: 12
Registrado: 20 Mar 2016, 20:21

Re: Aleatoriedad en core ZX-Uno

Mensaje por jcgamestoy » 24 Jul 2017, 16:41

chernandezba escribió:
mcleod_ideafix escribió: ¿Te refieres al generador de ruido blanco del AY?
Si, eso, que no fui muy claro
Mmmmm hasta donde tengo entendido el generador de ruido blanco de aleatorio nada. La fórmula es:

Código: Seleccionar todo

				/* The Random Number Generator of the 8910 is a 17-bit shift */
				/* register. The input to the shift register is bit0 XOR bit3 */
				/* (bit0 is the output). This was verified on AY-3-8910 and YM2149 chips. */

				m_rng ^= (((m_rng & 1) ^ ((m_rng >> 3) & 1)) << 17);
				m_rng >>= 1;
Esto viene del código de Mame:

https://github.com/mamedev/mame/blob/ma ... ay8910.cpp

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

Re: Aleatoriedad en core ZX-Uno

Mensaje por chernandezba » 24 Jul 2017, 16:44

Gracias! Bueno ya sabía que mi fórmula era diferente a la que usaba el AY real... pero me gusta usar mi fórmula, total es para generar ruido.... alguien la reconoce?
----

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

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

Re: Aleatoriedad en core ZX-Uno

Mensaje por Uto » 24 Jul 2017, 17:40

He hecho lo siguiente: he cargado el juego nada más arrancar el ZX-Uno y lo mismo de siempre, todo en el mismo sitio. Luego he dejado el ZX-Uno encendido unos 15 minutos, y he hecho un soft-reset (mas que nada porque me lo he dejado con un juego puesto), y he vuelto a cargar el juego para jugar. En esta segunda partida la primera llave estaba en el mismo sitio, pero ya ahí me ha extrañado algo: en la misma habitación estaba la cruz, que en otras partidas me aparecía un par de pantallas más a la izquierda. La segunda llave no estaba en el mismo sitio, estaba en otro.

Avatar de Usuario
mcleod_ideafix
Mensajes: 828
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Aleatoriedad en core ZX-Uno

Mensaje por mcleod_ideafix » 25 Jul 2017, 01:33

chernandezba escribió:Gracias! Bueno ya sabía que mi fórmula era diferente a la que usaba el AY real... pero me gusta usar mi fórmula, total es para generar ruido.... alguien la reconoce?
Sí, es la fórmula que usa el generador de números aleatorios del calculador de la ROM. Al menos, esa fórmula es la que aparece bajo el epígrafe "para matemáticos solamente" del manual de BASIC.
Y sí, la forma en la que se genera ruido blanco en el AY es diferente. Usa un LFSR con el polinomio que ha puesto jcgamestoy
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

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

Re: Aleatoriedad en core ZX-Uno

Mensaje por chernandezba » 25 Jul 2017, 09:49

mcleod_ideafix escribió: Sí, es la fórmula que usa el generador de números aleatorios del calculador de la ROM. Al menos, esa fórmula es la que aparece bajo el epígrafe "para matemáticos solamente" del manual de BASIC.
Efectivamente, la misma que la del basic del Spectrum

:llamarada:
----

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

Responder