Arcades en ZXUNO
Arcades en ZXUNO
Ya hemos visto que Quest se ha dedicado a meter todos los sistemas 8 bits que ha podido, dejando poco para la imaginación. (solo se ha dejado uno en el tintero , el CPC, que si nos ponemos a la par, seguro que lo sacamos )
Así que, ni corto ni perezoso, me he dedicado a meter todos los arcades que he podido encontrar. No son muchos (solo 7 u 8) pero algunos tienen su variante hardware compatible, con lo que el número de juegos crece hasta unos 15 en total (por ejemplo, el PACMAN admite a su vez el PENGO).
Aún está MUY verde, necesito muchos días o semanas para completar el trabajo, pero ahí ando, poco a poco. Ya he logrado meter el SPACE INVADERS , el PACMAN y el GALAXIAN. Ademas, en su día ya hice el LADY BUG, pero lo he retomado, para que admita otros como el SNAPJACK). Tengo en el tintero el hardware del FROGGER, y varios mas.
En realidad, lo de adaptar un arcade a otro, no es ningún misterio, en muchos casos, solo es probar las nuevas roms de la variante, y ver dónde falla, que en casos muy simples, puede ser que el mando funciona al revés, o que el "insert coin" está cambiado con el "test board" o cosas de esas, pero en lo básico, la mayoría de las veces está funcionando sin apenas cambios. El caso mas complicado es el del PENGO, que cambian varias cosas, pero hay guias suficientes (y cores ya diseñados para el Papilio, en los que me baso actualmente) que ayudan bastante.
Tengo problemas importantes con los pines, por que algunos juegos necesitan un botón de disparo (galaxian, space invaders) pero también uno para la moneda y otro para comenzar el juego. En estos casos estoy probando a que se inicie el juego nada mas meter moneda (en el PACMAN ya lo he logrado) ahorrando un botón, con lo cual, con el mando del ZXUNO, tenemos la cruceta, el botón de disparo y el de "meter moneda+start". Es que, sino consigo hacer esto, sería obligatorio meter un PIN externo con un botón extra, y eso lo hace incómodo y poco natural.
En otros casos, como el del GALAXIAN, la imágen me sale duplicada, y aún no he dado con el fallo (¿alguien sabe por qué es? )
También tengo que resolver el tema de los colores en varios juegos, por que la mayoría hace uso de 4bits de color, y nosotros solo tenemos 3, con lo cual, las imágenes salen "lechosas" (se ve en las fotos con exceso de iluminación).
Uno de los problemas de los arcades que he elegido (no ha sido por gusto, es lo que hay por la red) es que son el 95% de pantalla vertical, por lo que hay que girar el monitor. Como véis en las fotos, yo no tengo problema, tengo un minimonitor de 640x480 que permite ponerse en vertical.
En definitiva, cuando tenga varios ya hechos, publicaré los cores, y un fichero BAT para meter las ROM , ya que es ilegal publicarlas (a no ser que alguien diga lo contrario)
Nota: el space invaders sale girado 180º, es que no me apatecía dar la vuelta a la pantalla
Así que, ni corto ni perezoso, me he dedicado a meter todos los arcades que he podido encontrar. No son muchos (solo 7 u 8) pero algunos tienen su variante hardware compatible, con lo que el número de juegos crece hasta unos 15 en total (por ejemplo, el PACMAN admite a su vez el PENGO).
Aún está MUY verde, necesito muchos días o semanas para completar el trabajo, pero ahí ando, poco a poco. Ya he logrado meter el SPACE INVADERS , el PACMAN y el GALAXIAN. Ademas, en su día ya hice el LADY BUG, pero lo he retomado, para que admita otros como el SNAPJACK). Tengo en el tintero el hardware del FROGGER, y varios mas.
En realidad, lo de adaptar un arcade a otro, no es ningún misterio, en muchos casos, solo es probar las nuevas roms de la variante, y ver dónde falla, que en casos muy simples, puede ser que el mando funciona al revés, o que el "insert coin" está cambiado con el "test board" o cosas de esas, pero en lo básico, la mayoría de las veces está funcionando sin apenas cambios. El caso mas complicado es el del PENGO, que cambian varias cosas, pero hay guias suficientes (y cores ya diseñados para el Papilio, en los que me baso actualmente) que ayudan bastante.
Tengo problemas importantes con los pines, por que algunos juegos necesitan un botón de disparo (galaxian, space invaders) pero también uno para la moneda y otro para comenzar el juego. En estos casos estoy probando a que se inicie el juego nada mas meter moneda (en el PACMAN ya lo he logrado) ahorrando un botón, con lo cual, con el mando del ZXUNO, tenemos la cruceta, el botón de disparo y el de "meter moneda+start". Es que, sino consigo hacer esto, sería obligatorio meter un PIN externo con un botón extra, y eso lo hace incómodo y poco natural.
En otros casos, como el del GALAXIAN, la imágen me sale duplicada, y aún no he dado con el fallo (¿alguien sabe por qué es? )
También tengo que resolver el tema de los colores en varios juegos, por que la mayoría hace uso de 4bits de color, y nosotros solo tenemos 3, con lo cual, las imágenes salen "lechosas" (se ve en las fotos con exceso de iluminación).
Uno de los problemas de los arcades que he elegido (no ha sido por gusto, es lo que hay por la red) es que son el 95% de pantalla vertical, por lo que hay que girar el monitor. Como véis en las fotos, yo no tengo problema, tengo un minimonitor de 640x480 que permite ponerse en vertical.
En definitiva, cuando tenga varios ya hechos, publicaré los cores, y un fichero BAT para meter las ROM , ya que es ilegal publicarlas (a no ser que alguien diga lo contrario)
Nota: el space invaders sale girado 180º, es que no me apatecía dar la vuelta a la pantalla
Re: Arcades en ZXUNO
Gracias, jepalza
El de PACMAN lo porté en verano, pero no lo subí, porque pensé que no merecía la pena al ser un vertical y estar en VGA. Es casi imposible jugar sin girarlo, y lo normal es que se tenga conectado el zx-uno a una TV (posiblemente grande). Si consigues "darle la vuelta", lo que imagino que será un quebradero de cabeza por tener que cambiar todo el código de generación de pantalla (y probablemente escalar), y de paso que salga por RGB 15khz / csync, entonces sería genial.
Como yo no tenía ni idea de hacer eso , pues...
El de PACMAN lo porté en verano, pero no lo subí, porque pensé que no merecía la pena al ser un vertical y estar en VGA. Es casi imposible jugar sin girarlo, y lo normal es que se tenga conectado el zx-uno a una TV (posiblemente grande). Si consigues "darle la vuelta", lo que imagino que será un quebradero de cabeza por tener que cambiar todo el código de generación de pantalla (y probablemente escalar), y de paso que salga por RGB 15khz / csync, entonces sería genial.
Como yo no tenía ni idea de hacer eso , pues...
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
-
- Mensajes: 80
- Registrado: 25 Oct 2015, 07:49
Re: Arcades en ZXUNO
el bomb jack por favor!!!
http://papilio.cc/index.php?n=Playground.BombJack
Si te digo la verdad, a mi no me importa que la imagen salga en vertical. Es más fiel al arcade.
http://papilio.cc/index.php?n=Playground.BombJack
Si te digo la verdad, a mi no me importa que la imagen salga en vertical. Es más fiel al arcade.
Re: Arcades en ZXUNO
Lo tengo ya portado, pero los gráficos no salen. Solo se ven los bloques de color que los contienen, por eso no he puesto foto.enkonsierto escribió:el bomb jack por favor!!!
http://papilio.cc/index.php?n=Playground.BombJack
Si te digo la verdad, a mi no me importa que la imagen salga en vertical. Es más fiel al arcade.
La lista completa de los que ya he probado es esta:
(pero solo funcionan bien el PACMAN, el INVADERS, EL PENGO, el LADYBUG y el GALAXIAN (con doble imágen) , el resto fallan por algo gordo por ahora)
LADYBUG
--LADY BUG
--DORODON
--SNAPJACK
--COSMIC AVENGER
PACMAN
--PACMAN
--CRUSH 2
--GORKANS
--LIZWIZ
--PENGO (HARDWARE MODIFICADO)
SPACE INVADERS
--SPACE INVADERS
--ALIEN INVADERS
--SEARTH INVADERS
STERN SCRAMBLE
--STERN SCRAMBLE
--AMIDAR (Plays OK but no sound)
--FROGGER (SEGA)
--STERN THE END (The game plays but there is no sound and the player's missile is invisible)
--THE END (The game plays but there is no sound and the player's missile is invisible)
GALAXIAN
--MR. DO'S NIGHT (SE QUEDA EN EL ARRANQUE)
--MOONCRESTA
VARIOS INDEPENDIENTES:
--BOMBJACK
--PHOENIX
--GALAGA
EDITO: ya he logrado que funcione BIEN el GALAXIAN (¡¡¡¡¡ "MI" juego favorito desde crío!!! )
-
- Mensajes: 80
- Registrado: 25 Oct 2015, 07:49
Re: Arcades en ZXUNO
Fabulosas noticias. Y gran lista de arcades.
Imagino que poco a poco se podrán solucionar los problemas.
Imagino que poco a poco se podrán solucionar los problemas.
- mcleod_ideafix
- Mensajes: 831
- Registrado: 27 Sep 2015, 00:14
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Arcades en ZXUNO
Para el tema de los 4 bits de color: debería bastar con usar los 3 bits más significativos de esos 4, descartando el menos significativo.
Para el tema de la doble imagen: tiene toda la pinta de que la sección de video de ese core está generando una señal con timings VGA. De hecho, una imagen así es lo que verías si usas tu core de Spectrum con VGA, pero conectando la salida a un euroconector en lugar de a un monitor VGA.
Y ahora aparte de todo esto..... jooooooooer! Nada menos que 15 arcades! La leche! Mira: se me ocurre que podrías usar un core de teclado PS/2 y detectar sólo las teclas que te interesan.
Hay un core PS/2 sencillo en el core testpines, dentro de la carpeta spectrum_v2_spartan6. El fichero que necesitas es ps2_port.v
En sistema.v tienes un ejemplo de como podría usarse. En concreto, me refiero a esta porción de código:
Ahora, para convertir pulsaciones de tecla en señales de moneda, player 1, etc, de la recreativa, haz tal que así: voy a suponer que esas señales son activas a nivel bajo.
Es más: podrías prescindir del joystick y usar sólo el teclado para jugar, añadiendo los cursores y la tecla CTRL izquierda para jugar, como el MAME, simplemente añadiendo un IF por cada tecla. Por ejemplo, para la tecla cursor arriba, que es una tecla extendida (comienza por el código E0) harías esto:
Todo lo anterior, para que esté de acuerdo a la filosofía del diseño hardware modular, lo pondrías en un módulo que tuviera como entradas las señales del teclado, y como salidas las señales de control (arriba, abajo, player1, coin, disparo, etc) al resto del diseño. Algo así (para un control completo):
Para el tema de la doble imagen: tiene toda la pinta de que la sección de video de ese core está generando una señal con timings VGA. De hecho, una imagen así es lo que verías si usas tu core de Spectrum con VGA, pero conectando la salida a un euroconector en lugar de a un monitor VGA.
Y ahora aparte de todo esto..... jooooooooer! Nada menos que 15 arcades! La leche! Mira: se me ocurre que podrías usar un core de teclado PS/2 y detectar sólo las teclas que te interesan.
Hay un core PS/2 sencillo en el core testpines, dentro de la carpeta spectrum_v2_spartan6. El fichero que necesitas es ps2_port.v
En sistema.v tienes un ejemplo de como podría usarse. En concreto, me refiero a esta porción de código:
Código: Seleccionar todo
wire [7:0] tecla;
wire nueva_tecla, soltada, extendida;
ps2_port el_teclado (
.clk(clk),
.enable_rcv(1'b1),
.ps2clk_ext(clkps2),
.ps2data_ext(dataps2),
.kb_interrupt(nueva_tecla),
.scancode(tecla),
.released(soltada),
.extended(extendida)
);
Código: Seleccionar todo
// Registros que conectaremos a las señales de echar moneda, player 1 y player 2. Por defecto valen 1 (inactivos)
reg coin = 1'b1;
reg player1 = 1'b1;
reg player2 = 1'b1;
// Instancio el teclado
wire [7:0] tecla;
wire nueva_tecla, soltada, extendida;
ps2_port el_teclado (
.clk(clk),
.enable_rcv(1'b1),
.ps2clk_ext(clkps2),
.ps2data_ext(dataps2),
.kb_interrupt(nueva_tecla),
.scancode(tecla),
.released(soltada),
.extended(extendida)
);
// Cambio los valores de los registros en función de la tecla pulsada o soltada.
// Usaré: '1' para player1, '2' para player2, y el '5' para echar moneda (como en el MAME)
// Los scan codes de estas teclas son:
// Tecla 1: 0x16
// Tecla 2: 0x1E
// Tecla 5: 0x2E
// Consultar: http://www.computer-engineering.org/ps2keyboard/scancodes2.html
always @(posedge clk) begin
if (nueva_tecla == 1'b1) begin
// PLAYER 1
if (extendida == 1'b0 && tecla == 8'h16) begin
if (soltada == 1'b0)
player1 <= 1'b0; // si se pulso 1, activo player1
else
player1 <= 1'b1; // si se soltó 1 lo desactivo
end
// PLAYER 2
if (extendida == 1'b0 && tecla == 8'h1E) begin
if (soltada == 1'b0)
player2 <= 1'b0; // si se pulso 2, activo player2
else
player2 <= 1'b1; // si se soltó 2 lo desactivo
end
// COIN
if (extendida == 1'b0 && tecla == 8'h2E) begin
if (soltada == 1'b0)
coin <= 1'b0; // si se pulso 5, activo coin
else
coin <= 1'b1; // si se soltó 5 lo desactivo
end
end
end
Código: Seleccionar todo
// ARRIBA (código E0 75)
if (extendida == 1'b1 && tecla == 8'h75) begin
if (soltada == 1'b0)
up <= 1'b0; // si se pulso cursor arriba, activo señal ARRIBA
else
up <= 1'b1; // si se soltó cursor arriba, la desactivo
end
Código: Seleccionar todo
module control_por_teclado (
input wire clk,
input wire clkps2,
input wire dataps2,
output reg up,
output reg down,
output reg left,
output reg right,
output reg fire1,
output reg fire2,
output reg coina,
output reg coinb,
output reg player1,
output reg player2,
output reg testmode
);
// Como las salidas son "reg" ya cuentan como registros. No hay que volver a definirlas, pero sí darles un valor inicial a "desactivado"
initial begin
up = 1'b1;
down = 1'b1;
left = 1'b1;
down = 1'b1;
left = 1'b1;
right = 1'b1;
fire1 = 1'b1;
fire2 = 1'b1;
coina = 1'b1;
coinb = 1'b1;
player1 = 1'b1;
player2 = 1'b1;
testmode = 1'b1;
end
// Aqui instancias el teclado.....
// Y aquí pones tu always @(posedge...) con los IF's uno para cada tecla que quieras controlar
enmodule
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
Re: Arcades en ZXUNO
Gracias por las explicaciones, Mcleod_Ideafix, miraré el tema del PS2, y veré de dejar ambos sistemas, el teclado y el mando. Lo de la VGA del Galaxian lo he resuelto, pero si te soy sincero, no sé como. Me he puesto a toquetear todo lo que veía que hacía relación con el vídeo, y en una de esas pruebas, he conseguido que funcione.
Lo de los colores, he visto dos métodos, uno quita el bit mas significativo, y el otro el menos. Yo por ahora, estoy quitando el mas significativo, y no parece mal resultado. Mis ojos no están entrenados para distinguir faltas en los colores.
Tengo listo un arcade que voy a publicar en breve, con ROMs incluídas, ya que, según he leído, su autor dió permiso para ello. De ese modo, ya se puede jugar a un arcade directamente. El resto, a pesar de que tengo ya funcionando varios, necesito calma para hacer unos BAT para pegar las ROMS en el sitio adecuado, y lleva mucho tiempo ir una a una cada variante. Ya lo iré haciendo día a día, y cuando tenga varios, los pondré.
Lo de los colores, he visto dos métodos, uno quita el bit mas significativo, y el otro el menos. Yo por ahora, estoy quitando el mas significativo, y no parece mal resultado. Mis ojos no están entrenados para distinguir faltas en los colores.
Tengo listo un arcade que voy a publicar en breve, con ROMs incluídas, ya que, según he leído, su autor dió permiso para ello. De ese modo, ya se puede jugar a un arcade directamente. El resto, a pesar de que tengo ya funcionando varios, necesito calma para hacer unos BAT para pegar las ROMS en el sitio adecuado, y lleva mucho tiempo ir una a una cada variante. Ya lo iré haciendo día a día, y cuando tenga varios, los pondré.
Re: Arcades en ZXUNO
Os dejo aquí adjunto, el BIT y el MCS del único juego que por ahora se puede distribuir sin problemas legales, el "MR. Do's! Nighmare", que es una versión "homebrew" moderna de la saga "Mr. Do's!" pero usando el hardware del Galaxian.
En este enlace se permite su distribución:
http://www.gadgetfactory.net/2012/06/cr ... io-arcade/
EL juego lo he trampeado para que se inicie nada mas meter moneda. Se necesita un mando de dos botones.
En este enlace se permite su distribución:
http://www.gadgetfactory.net/2012/06/cr ... io-arcade/
EL juego lo he trampeado para que se inicie nada mas meter moneda. Se necesita un mando de dos botones.
- Adjuntos
-
- mrdo_nightmare.rar
- (171.47 KiB) Descargado 350 veces
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
Re: Arcades en ZXUNO
1942 por favoooor
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
Re: Arcades en ZXUNO
Ya puestos el Black Tiger, que está basado en Z80. Si prescindes del sonido sólo te hace falta un core de Z80, el sonido ya necesito de otro más.