TEST 3 disponible
- mcleod_ideafix
- Mensajes: 831
- Registrado: 27 Sep 2015, 00:14
- Ubicación: Jerez de la Frontera
- Contactar:
TEST 3 disponible
Pues después de trastear a base de bien, incluyendo hacer una plaquita para un Amstrad original con el diseño de gate array del core, ver que funciona idéntico al venerable 40010, y a su vez, probando un Z80 original en la placa del ZX-UNO, ha llegado el resultado. El TEST 3 del core de CPC 464 (sí, aún un 464 pero todo se andará)
Uno de los prototipos del módulo de reemplazo de gate array. Hice dos, con distintas tecnologías. Este de la foto aún no he podido echarlo a andar, pero el otro, afortunadamente, funciona como un reloj suizo
Módulo de reemplazo del gate array en un Amstrad CPC 6128, mientras se está ejecutando la demo Batman Forever. Se la tragó enterita
Abajo a la derecha, un ZX-UNO con un Z80 CMOS real pinchado como plaquita addon. El core de CPC está cargando el juego Blade Warrior.
Con esta versión deberían haberse corregido los errores de sonido en los juegos que usan WYZPlayer (los juegos de los Mojon Twins, los de CEZ y los de la CPCRetroDev). Todo viene de que hay muchos juegos (y entre ellos, la rutina de sonido de WYZPlayer) que asumen que la instrucción indocumentada OUT (C),0 funciona tal y como su nombre indica, pero si el Z80 es CMOS (o su implementación es como la del CMOS) entonces esa instrucción en realidad escribe $FF en lugar de 0. Una vez corregido esto, además de los juegos mencionados, hay demos técnicas que funcionan por fin pero aún con glitches, como la de Mario de Rhino (Batman Brothers).
Por otra parte, creo que ya sé por qué algunos juegos no parecía que funcionasen con el disparo: resulta que en el Amstrad, la nomenclatura de los dos pines de fuego en el joystick están intercambiados con respecto a la norma Atari, lo que significa que lo que yo llamo FIRE 1 en Atari/Spectrum, en el Amstrad es FIRE 2. Yo esto no lo sabía y cableé FIRE 1 y FIRE 2 en el joystick de acuerdo con la norma Atari. El resultado es que cuando en el jostick, desde BASIC, pulsaba el disparo, en lugar de salirme la X me salía la Z. En definitiva: que parece ser que en Amstrad, los juegos que tienen solo un disparo usan FIRE 2, así que intercambiando esos pines en el diseño se ha solucionado.
He aprovechado para implementar algunas... "exquisiteces", tales como una característica bastante oscura del Amstrad, y que permite forzar al gate array la generación de un VSYNC aunque el CRTC no lo haya mandado. Esto se puede hacer en algunos modelos de Amstrad porque la señal VSYNC del CRTC está conectada, además de al gate array, a un pin del 8255. Este pin del 8255 es, normalmente, de entrada y sirve para que el programador sepa cuándo hay en curso un retrazo vertical. Pero se puede hacer que el 8255 ponga ese pin como de escritura y enviar un valor ahí. Si el 8255 que se usa es más.... "fuerte" que el CRTC (traducido: si la etapa de salida del 8255 tiene menos impedancia que la del CRTC) entonces prevalece el 0 escrito por el 8255 y el gate array interpreta que ha llegado el momento de un intervalo de vblank.
Leyendo el datasheet del 8255 he podido ver que las etapas de entrada de los pines tienen "memoria", es decir, que si se envía un valor por un pin al ponerlo como salida, ese valor puede leerse como valor del pin de entrada, si no hay nada externo forzando un valor en dicho pin. Esto también se ha implementado.
Por favor, id repasando, de la lista que hay compartida en Google Docs (ver hilo del TEST 2), a ver qué juegos que antes no funcionaban ahora sí funcionan Estaré atento
En este mismo post teneis el core. Como siempre, cambiad la "n" por el número de slot donde vayais a poner el core y flashearlo en el mismo lugar donde tuviérais el TEST 2 (salvo que alguien quiera comparar ambos cores).
Saludos!
Uno de los prototipos del módulo de reemplazo de gate array. Hice dos, con distintas tecnologías. Este de la foto aún no he podido echarlo a andar, pero el otro, afortunadamente, funciona como un reloj suizo
Módulo de reemplazo del gate array en un Amstrad CPC 6128, mientras se está ejecutando la demo Batman Forever. Se la tragó enterita
Abajo a la derecha, un ZX-UNO con un Z80 CMOS real pinchado como plaquita addon. El core de CPC está cargando el juego Blade Warrior.
Con esta versión deberían haberse corregido los errores de sonido en los juegos que usan WYZPlayer (los juegos de los Mojon Twins, los de CEZ y los de la CPCRetroDev). Todo viene de que hay muchos juegos (y entre ellos, la rutina de sonido de WYZPlayer) que asumen que la instrucción indocumentada OUT (C),0 funciona tal y como su nombre indica, pero si el Z80 es CMOS (o su implementación es como la del CMOS) entonces esa instrucción en realidad escribe $FF en lugar de 0. Una vez corregido esto, además de los juegos mencionados, hay demos técnicas que funcionan por fin pero aún con glitches, como la de Mario de Rhino (Batman Brothers).
Por otra parte, creo que ya sé por qué algunos juegos no parecía que funcionasen con el disparo: resulta que en el Amstrad, la nomenclatura de los dos pines de fuego en el joystick están intercambiados con respecto a la norma Atari, lo que significa que lo que yo llamo FIRE 1 en Atari/Spectrum, en el Amstrad es FIRE 2. Yo esto no lo sabía y cableé FIRE 1 y FIRE 2 en el joystick de acuerdo con la norma Atari. El resultado es que cuando en el jostick, desde BASIC, pulsaba el disparo, en lugar de salirme la X me salía la Z. En definitiva: que parece ser que en Amstrad, los juegos que tienen solo un disparo usan FIRE 2, así que intercambiando esos pines en el diseño se ha solucionado.
He aprovechado para implementar algunas... "exquisiteces", tales como una característica bastante oscura del Amstrad, y que permite forzar al gate array la generación de un VSYNC aunque el CRTC no lo haya mandado. Esto se puede hacer en algunos modelos de Amstrad porque la señal VSYNC del CRTC está conectada, además de al gate array, a un pin del 8255. Este pin del 8255 es, normalmente, de entrada y sirve para que el programador sepa cuándo hay en curso un retrazo vertical. Pero se puede hacer que el 8255 ponga ese pin como de escritura y enviar un valor ahí. Si el 8255 que se usa es más.... "fuerte" que el CRTC (traducido: si la etapa de salida del 8255 tiene menos impedancia que la del CRTC) entonces prevalece el 0 escrito por el 8255 y el gate array interpreta que ha llegado el momento de un intervalo de vblank.
Leyendo el datasheet del 8255 he podido ver que las etapas de entrada de los pines tienen "memoria", es decir, que si se envía un valor por un pin al ponerlo como salida, ese valor puede leerse como valor del pin de entrada, si no hay nada externo forzando un valor en dicho pin. Esto también se ha implementado.
Por favor, id repasando, de la lista que hay compartida en Google Docs (ver hilo del TEST 2), a ver qué juegos que antes no funcionaban ahora sí funcionan Estaré atento
En este mismo post teneis el core. Como siempre, cambiad la "n" por el número de slot donde vayais a poner el core y flashearlo en el mismo lugar donde tuviérais el TEST 2 (salvo que alguien quiera comparar ambos cores).
Saludos!
- Adjuntos
-
- COREn.ZX1
- Fichero ZX1 con el TEST3 del core de CPC 464
- (336 KiB) Descargado 381 veces
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: TEST 3 disponible
Felicidades.
Excelente trabajo, como siempre
Excelente trabajo, como siempre
Re: TEST 3 disponible
¡Oleeeeeeeee!
Como consigas implementar la disquetera de 3" y tengamos 6128 y +3 hacemos movimiento para canonizarte.
Como consigas implementar la disquetera de 3" y tengamos 6128 y +3 hacemos movimiento para canonizarte.
Re: TEST 3 disponible
Para mí este core (junto con el de Spectrum, evidentemente) es uno de los más deseados e imprescindibles.
Ya sería perfecto si consigues implementar un 6128 con su disquetera.
¿O un 464 con M4? (aunque fuese sin WiFi, sólo con acceso a SD)
Ya sería perfecto si consigues implementar un 6128 con su disquetera.
¿O un 464 con M4? (aunque fuese sin WiFi, sólo con acceso a SD)
- brunosilva
- Mensajes: 312
- Registrado: 18 Jun 2016, 19:54
Re: TEST 3 disponible
wow.... thanks... great work!
- jaildesigner
- Mensajes: 158
- Registrado: 19 Sep 2016, 08:09
Re: TEST 3 disponible
JOJOJOJO!!! POR FIN!!!
MIL GRACIAS!
En cuanto pueda me pongo con la lista de nuevo!
EDIT: Aquí el enlace al documento de Google: https://docs.google.com/spreadsheets/d/ ... sp=sharing
Ya funciona bien el Jet Set Willy
MIL GRACIAS!
En cuanto pueda me pongo con la lista de nuevo!
EDIT: Aquí el enlace al documento de Google: https://docs.google.com/spreadsheets/d/ ... sp=sharing
Ya funciona bien el Jet Set Willy
Última edición por jaildesigner el 25 Ago 2017, 20:31, editado 1 vez en total.
Re: TEST 3 disponible
Muchas gracias por seguir convirtiendo al en una extraordinaria máquina.
Re: TEST 3 disponible
Muchas gracias, a ver si saco un rato para probar juegos. Como poseedor de un 464, es un gusto que por una vez tenga preferencia sobre el 6128 , porque desde siempre he tenido la impresión de que era el segundón.
Saludos
Saludos
Re: TEST 3 disponible
Fantásticas noticias, este core representa un logro técnico increíble!
El bug de las líneas "cambiadas" en modo VGA que aparece tras un RESET (CTRL+ALT+SUP) sigue presente, no? Eso, o no he actualizado bien el core.
El bug de las líneas "cambiadas" en modo VGA que aparece tras un RESET (CTRL+ALT+SUP) sigue presente, no? Eso, o no he actualizado bien el core.