Cargar "Manic Miner" a través de la red
Moderador: Sir Cilve Sinclair
- winston
- Sabreman
- Mensajes: 469
- Registrado: Mar Ago 19, 2008 4:17 pm
- Ubicación: Isla de Man
- Contactar:
Cargar "Manic Miner" a través de la red
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
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
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Cargar "Manic Miner" a través de la red
Argg! Qué ganas tengo de tener algo de tiempo para meterle mano al Spectranet Gracias!
Web: ZX Projects | Twitter: @zxprojects
- 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
¡¡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?
¿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?
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Cargar "Manic Miner" a través de la red
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.
Web: ZX Projects | Twitter: @zxprojects
- 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
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.
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.
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Cargar "Manic Miner" a través de la red
[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.
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
- 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
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 )
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
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Cargar "Manic Miner" a través de la red
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
- winston
- Sabreman
- Mensajes: 469
- Registrado: Mar Ago 19, 2008 4:17 pm
- Ubicación: Isla de Man
- Contactar:
Re: Cargar "Manic Miner" a través de la red
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 )
- 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
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
- winston
- Sabreman
- Mensajes: 469
- Registrado: Mar Ago 19, 2008 4:17 pm
- Ubicación: Isla de Man
- Contactar:
Re: Cargar "Manic Miner" a través de la red
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.
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.
-
- Manic Miner
- Mensajes: 219
- Registrado: Jue May 10, 2007 2:28 pm
Re: Cargar "Manic Miner" a través de la red
Winston, cada vez me gusta más la pinta del Spectranet... Ahora sólo tengo que resistir la tentación de querer uno
¿Quién está conectado?
Usuarios navegando por este Foro: Ahrefs [Bot] y 14 invitados