Ghosts'n Goblins

Cores de placas Arcade / Arcade board cores
Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Ghosts'n Goblins

Mensaje por jotego » 14 Abr 2018, 17:10

Saque por navidades un core de Ghosts'n Goblins para MiST. Esperaba poder acabarlo algún día pero tal y como pinta el trabajo en la oficina me parece que en lo que queda de año no voy a tener ganas de sentarme a escribir verilog en casa. Así que he publicado el código fuente en GitHub.

Es posible portar todo menos el sonido a ZX-UNO. Es una réplica exacta, siguiendo los esquemáticos y tratando de ser fiel al límite de la tecnología. Si alguien quiere pasarlo a ZX-UNO, ¡adelante!

Quizá sea posible añadir sonido usando dos ZX-UNO con comunicación serie. En un único ZX-UNO cabe la parte gráfica y de la CPU principal sobradamente, pero el chip de sonido no. De todas formas, el chip de sonido (YM2203) no lo tengo terminado y ahora sólo se oye un churro en MiST.

Alexey Melnikov está haciendo un port para MiSTer.

Avatar de Usuario
Radastan
Mensajes: 389
Registrado: 05 Oct 2015, 14:39

Re: Ghosts'n Goblins

Mensaje por Radastan » 02 May 2018, 11:40

Buah, aún sin sonido sería la repera tener el Ghost 'n' Goblins en ZX Uno.

Vanfanel
Mensajes: 276
Registrado: 16 Oct 2016, 15:50

Re: Ghosts'n Goblins

Mensaje por Vanfanel » 03 May 2018, 15:42

Yo compraría la extensión que hiciera falta para tener el Ghosts'n Goblins con sonido en el ZX-UNO.... Y con sumo gusto.

Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: Ghosts'n Goblins

Mensaje por desUBIKado » 03 May 2018, 15:55

Vanfanel escribió:Yo compraría la extensión que hiciera falta para tener el Ghosts'n Goblins con sonido en el ZX-UNO.... Y con sumo gusto.
Por lo que dice jotego, una forma sería con dos ZX-Uno conectados por el bus de expansión, cosa que ya se ha hecho anteriormente en algún experimento, pero ahora no encuentro la foto o o el enlace.

Vanfanel
Mensajes: 276
Registrado: 16 Oct 2016, 15:50

Re: Ghosts'n Goblins

Mensaje por Vanfanel » 03 May 2018, 17:36

Pues a mi me vale. Tengo varios ZX-UNO a mano :D

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: Ghosts'n Goblins

Mensaje por jotego » 04 May 2018, 12:07

Me alegra mucho ver interés en esto. Es mi arcade favorito y tenerlo en FPGA fidedigno es exactamente como tener la placa original. Me habéis hecho pensar en lo del sonido.

Las versiones de los chips de Yamaha que he hecho siguen la estrategia del original: segmentación (pipeline) a ~1MHz. Esto ahorra área de silicio (espacio en la FPGA) comparado con no tener segmentación y hacer cada canal por separado pero requiere muchos, muchos flip flops. Pero muchos. Y eso hace que los core de Yamaha JTxx sean grandes. Otra forma de hacerlos es respetar el cálculo de la síntesis de sonido pero montarlo para que use RAM en vez de flip flops y subir en MHz. Tendría que pensarlo bien pero quizá subiendo a 40MHz sería posible reducir el área de FPGA bastante.

¿Cabría en el ZX-UNO? Bueno, tiene que caber eso, más el Z80, más la parte de vídeo con la CPU principal. Así que no sé... Si alguien se anima a meter la parte de vídeo y nos dice lo que sobra nos iremos haciendo una idea. El ZX-UNO tiene la ventaja sobre MiST de esa maravillosa SRAM externa que no necesita controladores sofisticados. Lo más difícil del jt_gng es ese controlador de memoria. Si eso desaparece se aprovecha espacio, se evita cualquier posibilidad de parpádeo en los gráficos y la vida es más bonita :-D

A ver si Quest o alguien se anima.

PD: ¿Que por qué Yamaha no trató de ahorrar más área de silicio originalmente subiendo los MHz? Porque no podían. En la época hacer un chip por encima de 4MHz ya era bastante proeza como para subir a 40MHz. Además de otras sutilezas de hacer esto con las herramientas CAD de la época.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: Ghosts'n Goblins

Mensaje por spark2k06 » 04 May 2018, 13:46

Magnífico juego que sería toda una delicia poder disfrutarlo en un ZX-Uno. Aprovecho la ocasión para enviaros un vídeo del amigo Nestor, friki del arcade por antonomasia pasándoselo entero (las dos pasadas que hay que realizar para ello) con un solo crédito:

phpBB [media]

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Ghosts'n Goblins

Mensaje por jotego » 07 May 2018, 08:02

He estado pensando este fin de semana sobre cómo meter un sintetizador FM en la FPGA del ZX-UNO ocupando muy poco sitio. Es un tema muy técnico pero muy interesante también para entender por qué en los 80 y 90 era habitual que hubiera un chip de sonido aparte y todos compráramos tarjetas de sonido para el ordenador. Creo que escribiré un artículo en retrónica explicándolo. Pero mientras os dejo unos números:

El JT51 (YM2151) ocupa alrededor de 1200 slices de una Spartan 6. La Spartan 6 del ZX-UNO tiene 1430 slices así que viene tan justo que a mí el sintentizador me falla al intentar meterlo. El G&G usa dos YM2203, que combinados es algo similar a un YM2151 (menos canales FM pero tiene canales PSG). Así que en principio no cabe haciéndolo de forma puramente hardware con segmentación a 1MHz.

Pero hay un procesador minúsculo hecho por Xilinx: el PicoBlaze. Esta es una CPU minimalista de 8 bits que ocupa sólo 26 slices en una Spartan 6. Esto quiere decir que podemos meter muchos PicoBlazes en una FPGA, pero muchos. Además puedes llegar a correrlos a 125MHz según la documentación. ¿Da una CPU de 8 bits a 125MHz para hacer síntesis FM? Pues no, para hacer 3 canales no. Para hacer 1 tampoco lo tengo muy claro... Pero estoy viendo si es posible dividir el problema entre varias CPUs. Si con 2 CPUs pudiera hacer un canal, un YM2203 necesitaría unas 6 CPUs (o sea unas 156 slices más 3 bloques de RAM -hay 32 en total-). Y dos YM2203 -o sea el G&G- el doble (312 slices y al menos 6 bloques de RAM). ¿Cabría esto en el ZX-UNO y además el Z80 y además el 6809 y además el vídeo del G&G y además el mínimo de interfaz SD? Pues no lo sé aun. Pero al menos bajamos ya un factor 4 en cuanto a espacio del sintentizador.

Vanfanel
Mensajes: 276
Registrado: 16 Oct 2016, 15:50

Re: Ghosts'n Goblins

Mensaje por Vanfanel » 07 May 2018, 16:26

@jotego: por aportar algo (porque me flipa la idea de este core en el UNO, el Ghosts'n Goblins es un juego del que he visto partidacas épicas aquí en Salamanca, es un icono), se me ocurre que igual se pueden "embutir" las ROMs en el core como pasa con los cores arcade de Neuro y Antonio, y así la parte de interface a la SD te la ahorras e igual cabe.
O igual son ROMs demasiado grandes y no caben como en el resto de los arcades y estoy diciendo una chorrada, la ignorancia a veces es muy osada. :tepego:

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: Ghosts'n Goblins

Mensaje por jotego » 19 Ene 2019, 08:50

En las navidades de 2017 lancé el clon de Ghosts'n Goblins en FPGA para MiST. Pero no tenía sonido aun. No existía ningún core de YM2203 (el chip de sonido) disponible y mi versión de YM2612 (el JT12) no estaba listo para eso aun.

Durante 2018 hemos finiquitado muy bien el core de Megadrive para MiST y MiSTer (también hay una versión para UnAmiga) y el sonido de JT12 está ya perfectamente pulido. Así que me he dedicado durante varias semanas a extender bien el JT12 para que cubriese el YM2203 y luego lo añadí al GnG de MiST y pulí los flecos que quedaban.

Creo que ha quedado muy bien. Es lo más parecido a tener la placa original. Eso sí, me parece que el core de la CPU que uso tiene un fallo porque se puede provocar un comportamiento extraño en el personaje. Os dejo averiguar lo que es...

El core de MiST listo para poner en SD lo podéis coger de aquí. He pedido que se incluya en el lote de binarios de MiST así que pronto estará distribuido por el repositorio oficial. No basta con copiar las ROMs en zip a la SD, hay que hacerles un pequeño tratamiento que describo en el fichero pero por unos días voy a dejar una ROM preparada ya aquí.

Este juego usa una placa común a muchos de CAPCOM de la época, así que sí gusta haré mas, entre ellos: 1942, Black Tiger, Tiger Road, Trojan, 1943...

Todavía no tenemos versiones de este core para ZX-UNO, aunque sólo con sonido PSG sí cabría bien (el YM2203 tiene sonido PSG+FM). En UnAmiga o ZXDOS sí cabe. Se está preparando ya el puerto para MiSTer.

Si os gusta mi trabajo y queréis seguir viendo aportes a la escena podéis apoyarme por Patreon. La idea es que los mecenas hagan un micropago (1€ es el mínimo) cuando lance un nuevo core al mundo. Podéis ver en mi github que ya tengo una larga lista de aportaciones a la comunidad. En cualquier caso, este core y los demás seguirán siendo de código abierto.
Última edición por jotego el 20 Ene 2019, 10:09, editado 1 vez en total.

Responder