Cargar "Manic Miner" a través de la red

Noticias relacionadas con el mundo del Spectrum en general y este foro en particular. Presentación de nuevos usuarios.

Moderador: Sir Cilve Sinclair

Cargar "Manic Miner" a través de la red

Notapor winston el Dom Jun 07, 2009 8:29 pm

Hace varias semanas, no he podido trabajar en el Spectranet - hasta esta fin de la semana. Tras muchas horas de trabajo sin parar :-) por fin, he alcanzado un hito importante - ahora el Spectranet puede cargar programas grandes a través de la red, tales como juegos. (La noticia anterior era sobre el prototipo, que se corrió en la RAM del Spectrum, y por eso, no se podía cargar programas grandes. También el prototipo no usó la API de VFS)

He hecho código para la ROM del Spectranet que:

* Se implementa la API para VFS (por sus siglas en inglés - quiere decir Virtual File System - un sistema de ficheros virtual).
* El modulo TNFS (Pequeño sistema de ficheros para la red), para VFS.
* Un modulo de extensiones para ZX BASIC, que llama VFS para guardar/cargar ficheros, montar sistemas de ficheros, mostrar carpetas etc.
* ...y he arreglado muchos bugs :-)

Lo más importante es que la VFS significa que hay muchas cosas que se pueden hacer. Cosas tales como sistemas de fichero para HTTP/FTP, o para la DivIDE estándar, o disco de RAM, o algo que es similar a "devfs" para Linux. ¡No tienen que ser un S.F. para la red!

Pero la primera prueba del TNFS + VFS fue cargar el juego "Manic Miner" a través de la red :-)

Espero que pueda hacer un video muy pronto que mostrará cosas así.
La noticia en inglés está aquí - http://spectrum.alioth.net/doc/index.php/Current_events
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg
Avatar de Usuario
winston
Sabreman
 
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man

Re: Cargar "Manic Miner" a través de la red

Notapor mcleod_ideafix el Mar Jun 09, 2009 7:14 am

Argg! Qué ganas tengo de tener algo de tiempo para meterle mano al Spectranet :) Gracias!
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

Re: Cargar "Manic Miner" a través de la red

Notapor Rinconete el Sab Jun 13, 2009 9:38 am

¡¡Impresionante!!
¿es rápida la carga? ¿sería posible usar Spectranet en un juego para compartir datos entre dos Spectrum o entre un Spectrum y otra máquina en tiempo real?
Avatar de Usuario
Rinconete
Jack The Nipper
 
Mensajes: 193
Registrado: Mar Oct 09, 2007 7:32 pm
Ubicación: Valladolid

Re: Cargar "Manic Miner" a través de la red

Notapor mcleod_ideafix el Sab Jun 13, 2009 2:38 pm

Rinconete escribió:¡¡Impresionante!!
¿es rápida la carga? ¿sería posible usar Spectranet en un juego para compartir datos entre dos Spectrum o entre un Spectrum y otra máquina en tiempo real?


No recuerdo si el Spectranet usa DMA (en este caso habría que hablar de "bus mastering") pero aunque no lo use, la velocidad es comparable a la que obtienes con, por ejemplo, un Divide. El cuello de botella aquí no es la red, sino el procesador, que no puede enviar datos a la máxima velocidad de la red. Piensa que incluso si el módulo Ethernet es a 10 Mbps (creo que Winston ha usado uno de 10/100 Mbps), eso supone alrededor de 1,25 MB/s.

En resumen:
  • Sí. La carga es rápida.
  • Sí. Se podría usar Spectranet para compartir información en un juego multijugador diseñado ex-profeso para este sistema.
  • Sí. Si la acción del juego lo permite, se podría usar Spectranet para que capturase a intervalos regulares la pantalla y la subiera a una web para que todo el mundo pudiera ver en directo una partida a un juego en Spectrum.
  • Sí. Se puede programar un pequeño browser que se baje de la red un SNA o un Z80 directamente a la memoria del Spectrum y a empezar a jugar.
  • Sí. Se pueden incluso organizar partidas "a contra reloj", en donde un servidor descarga a los participantes, cada uno con un Spectrum y Spectranet, un snapshot de un juego en un momento concreto. Spectranet carga ese juego en la memoria y pone en marcha un contador de tiempo, por ejemplo, 1 minuto, lanzando el juego en ese instante para que el jugador comience a hacer puntos. Cuando acaba el tiempo, salta una NMI y Spectranet congela el juego, subiendo la pantalla con el marcador que el jugador ha conseguido, de vuelta al servidor.
  • Sí. Se puede hacer algo parecido a lo anterior, que se podría llamar "competición de revelos" Cada equipo tiene varios jugadores, cada uno con su Spectrum y Spectranet. El equipo decide, usando un formulario en la web del servidor, el orden en que van a jugar sus integrantes. Spectranet baja del servidor el snapshot del juego (por ejemplo, el Daley Thomson's Decathlon) para el primer jugador del equipo, quien juega al juego durante un tiempo determinado, o hasta que el jugador presione NMI en Spectranet. En ese momento se congela el juego y se crea un snapshot que es transferido al siguiente jugador, quien sigue la partida por donde el anterior la dejó. Cuando el último jugador termina, Spectranet sube la pantalla con el marcador actual (o bien el snapshot del último jugador) al servidor para comprobar la puntuación.
Todo esto es posible ahora, o posible con leves modificaciones al hardware del Spectranet. El problema es, como siempre, escribir el software que dé soporte a todo esto. Y por supuesto, que Spectranet tenga suficiente éxito como para que sea viable comercializarlo y que mucha gente lo quiera tener, o en su caso, que alguien programe/modifique un emulador de Spectrum para dar soporte a Spectranet.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

Re: Cargar "Manic Miner" a través de la red

Notapor Rinconete el Sab Jun 13, 2009 4:15 pm

wow! cuántas posibilidades, se podría programar una versión del gran Spy-vs-spy para dos o más jugarores.

Buena idea eso de continuar la partida por turnos. Lo de enviar la pantalla a intervalos regulares podría simplificarse (para el Spectrum) con un PC que "monte" la pantalla recibiendo por ejemplo el número de pantalla y laposición de los sprites y genere la pantalla.
Avatar de Usuario
Rinconete
Jack The Nipper
 
Mensajes: 193
Registrado: Mar Oct 09, 2007 7:32 pm
Ubicación: Valladolid

Re: Cargar "Manic Miner" a través de la red

Notapor mcleod_ideafix el Sab Jun 13, 2009 6:13 pm

[quote="Rinconete"Buena idea eso de continuar la partida por turnos. Lo de enviar la pantalla a intervalos regulares podría simplificarse (para el Spectrum) con un PC que "monte" la pantalla recibiendo por ejemplo el número de pantalla y laposición de los sprites y genere la pantalla.[/quote]
Tendría que programarse el juego exprofeso para hacerlo de esa forma, así que no funcionaría para ninguno de los juegos que existen hasta ahora. Por otra parte. transferir 6912 bytes lleva unos 100ms más o menos, si no se usa DMA (y alrededor de 2ms si se usa DMA: vuelvo a repetir que aquí el cuello de botella no es la red, sino el procesador y la velocidad de la memoria).

Por hardware se puede detectar si el teclado o el joystick no están siendo usados, lo que significa que el jugador no está en plena acción, y aprovechar ese momento para capturar la pantalla y enviarla. Con algunos juegos, 100 ms de congelación cada 2-3 segundos puede que ni se note, pero para otros puede significar una pérdida de jugabilidad tremenda.

Creo que si alguien tiene el suficiente tiempo libre como para poder dedicarlo a implementar algo de esto, será más sencillo hacerlo con un emulador. Con un emulador el Z80 emulado no tendría trabajo extra para transferir la pantalla a un servidor, sino que sería parte del código nativo del propio emulador.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

Re: Cargar "Manic Miner" a través de la red

Notapor Rinconete el Sab Jun 13, 2009 7:32 pm

mcleod_ideafix escribió:
Rinconete escribió:Buena idea eso de continuar la partida por turnos. Lo de enviar la pantalla a intervalos regulares podría simplificarse (para el Spectrum) con un PC que "monte" la pantalla recibiendo por ejemplo el número de pantalla y laposición de los sprites y genere la pantalla.

Tendría que programarse el juego exprofeso para hacerlo de esa forma, así que no funcionaría para ninguno de los juegos que existen hasta ahora. Por otra parte. transferir 6912 bytes lleva unos 100ms más o menos, si no se usa DMA (y alrededor de 2ms si se usa DMA: vuelvo a repetir que aquí el cuello de botella no es la red, sino el procesador y la velocidad de la memoria).


sí, claro tendría que ser un juego nuevo programado para esto o modificar algún juego existente para hacerlo (cosa que alguna vez he pensado :D)

mcleod_ideafix escribió:Por otra parte. transferir 6912 bytes lleva unos 100ms más o menos, si no se usa DMA (y alrededor de 2ms si se usa DMA: vuelvo a repetir que aquí el cuello de botella no es la red, sino el procesador y la velocidad de la memoria).


Claro, por eso decía lo de que el Spectrum transmita sólo la información imprescindible, para no perder tiempo de proceso en eso. Podría transmitir sólo el número de pantalla donde está el jugador, las coordenadas de los sprites, etc. y que fuera un servidor el que genere la pantalla con esa información y que la peña se conecte a ese servidor para seguir la partida, por ejemplo.

mcleod_ideafix escribió:Creo que si alguien tiene el suficiente tiempo libre como para poder dedicarlo a implementar algo de esto, será más sencillo hacerlo con un emulador. Con un emulador el Z80 emulado no tendría trabajo extra para transferir la pantalla a un servidor, sino que sería parte del código nativo del propio emulador.


es verdad, sería más sencillo
Avatar de Usuario
Rinconete
Jack The Nipper
 
Mensajes: 193
Registrado: Mar Oct 09, 2007 7:32 pm
Ubicación: Valladolid

Re: Cargar "Manic Miner" a través de la red

Notapor mcleod_ideafix el Sab Jun 13, 2009 9:03 pm

Rinconete escribió:Claro, por eso decía lo de que el Spectrum transmita sólo la información imprescindible, para no perder tiempo de proceso en eso

Usando DMA o bus mastering no se pierde tiempo de procesador. Bueno, se pierde si la CPU intenta acceder a los 16K primeros, Si se hace la captura en un momento en el que se sabe que la CPU está ocupada en los 16K de ROM o en los 32K superiores, entonces puede seguir trabajando allí mientras el controlador de DMA se "pelea" con la ULA para leer la memoria... o no... ahora que lo pienso... es perfectamente posible (aunque no implementable como periférico en el slot trasero) diseñar un sistema que permita leer la memoria de pantalla sin perder ni un solo ciclo de reloj... basta con usar a la ULA como generador de direcciones de memoria, y en el momento en que lea un dato, el periférico aprovecha y también se queda con él. En ese caso se generarían... (32+32)*192=12288 bytes. Si se envian tal cual, se necesitaría un caudal de subida en la red de poco más de 300 kbps para que alguien emitiera una captura de pantalla 25 veces por segundo.
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3984
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

Re: Cargar "Manic Miner" a través de la red

Notapor winston el Sab Jun 13, 2009 9:38 pm

Rinconete escribió: ¿sería posible usar Spectranet en un juego para compartir datos entre dos Spectrum o entre un Spectrum y otra máquina en tiempo real?


Para ver la velocidad en que el Spectranet puede transferir los datos, he hecho este video que muestra "streaming video" en el Spectrum a través de la red. Creo que es casi de 30 frames por segundo.

http://www.youtube.com/watch?v=ooi9rpx6ECM

(Tengo que hacer una traducción español para que puedes oír mí acento terrible :-) )
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg
Avatar de Usuario
winston
Sabreman
 
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man

Re: Cargar "Manic Miner" a través de la red

Notapor Rinconete el Sab Jun 13, 2009 11:01 pm

winston escribió:
Rinconete escribió: ¿sería posible usar Spectranet en un juego para compartir datos entre dos Spectrum o entre un Spectrum y otra máquina en tiempo real?


Para ver la velocidad en que el Spectranet puede transferir los datos, he hecho este video que muestra "streaming video" en el Spectrum a través de la red. Creo que es casi de 30 frames por segundo.

http://www.youtube.com/watch?v=ooi9rpx6ECM



Vi el vídeo en otro mensaje anterior tuyo, y me parece *alucinante* que el Spectrum haga eso, aunque sean imágenes generadas y enviadas desde otro sitio.

winston escribió:(Tengo que hacer una traducción español para que puedes oír mí acento terrible :-) )


tienes que ir practicando antes de tu viaje por España; además así te enfrentarás a la crítica de la "escena" que es mucho más mortífera que la de tus gatos :D
Avatar de Usuario
Rinconete
Jack The Nipper
 
Mensajes: 193
Registrado: Mar Oct 09, 2007 7:32 pm
Ubicación: Valladolid

Re: Cargar "Manic Miner" a través de la red

Notapor winston el Mie Jun 17, 2009 11:11 pm

Y ahora, se puede cargar ficheros de TAP a través de la red... esta vez, usando "tape traps" (como ResiDOS o el DivIDE)

Hay un nuevo comando de BASIC "%tapein" que añade la trampa en la rutina de cinta en la ROM del Spectrum. Cuando se usa el comando LOAD "", en vez de cargar de la cinta, los datos están cargando a través de la red.

Esta noche he probado con el juego "Escuela de Ladrones", y funciona muy bien.

Espero que pueda encontrar suficiente tiempo para hacer un video que muestra estas cosas.
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg
Avatar de Usuario
winston
Sabreman
 
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man

Re: Cargar "Manic Miner" a través de la red

Notapor utopian el Jue Jun 18, 2009 9:00 am

Winston, cada vez me gusta más la pinta del Spectranet... Ahora sólo tengo que resistir la tentación de querer uno :lol:
utopian
Manic Miner
 
Mensajes: 219
Registrado: Jue May 10, 2007 2:28 pm


Volver a Noticias, eventos y presentaciones

¿Quién está conectado?

Usuarios navegando este Foro: No hay usuarios registrados visitando el Foro y 1 invitado