Idea de core para videojuegos actuales

Discursiones en general sobre el proyecto que no tienen cabida en otro foro / General discussion for uncateorized topics about the ZX-Uno project
Responder
Avatar de Usuario
Radastan
Mensajes: 389
Registrado: 05 Oct 2015, 14:39

Idea de core para videojuegos actuales

Mensaje por Radastan » 28 Mar 2019, 10:16

Buenas a todos,

Hace tiempo lleva rondando mi cabeza una idea loca: hacer un core desde cero pensado para videojuegos actuales. Os dejo algunas de las cosas en las que había pensado, reaprovechando el trabajo en otros cores:

- Resolución panorámica 16:9. Resolución de 320x180 pixels a 256 colores, con la paleta completa de ULAPlus. Lo suyo sería que la paleta fuese seleccionable en 768 bytes (3 bytes RGB para cada color), pero creo que McLeod ya me comentó que era trabajo de chinos. Frecuencia de 60Hz, exclusivamente pensado para VGA y HDMI.
- Una CPU nueva, que básicamente es un Z80 pero con un byte extra para que la memoria pase de ser direccionable 64K a 16MB (iría con menos, basta 1MB de RAM o lo que se pudiera). Esto permite trabajar con una CPU conocida, aprovechar los compiladores, pero ganar todo ese espacio de direcciones. La CPU iría a toda la velocidad que permitiera el ZXUno (es una máquina nueva).
- Sonido doble AY
- Interrupciones raster
- DMA para transferir bloques de datos dentro de la memoria
- Doble pantalla, superpuestas, la segunda sobre la primera. El color 0 sería transparente en la de arriba. De esta forma se facilita poder tener un fondo y trabajar con los sprites por otro lado. No requiere sprites por hardware, que es algo complicado de implementar.
- La ROM sería de 128KB y llevaría rutinas básicas de sprites, scroll, etc. Con eso se facilitaría el trabajo, todo se haría por software incluyendo la carga de juegos desde SD con selector al arranque.

Es una idea sencilla, reaprovechando todo el trabajo ya realizado en otros cores. Lo más peliagudo es modificar el Z80 para que direccione más memoria, pero no creo que sea imposible (ya lo hizo Zilog con el Z180). ¿Cómo lo veis?

Yo me ofrecería a realizar las rutinas en ensamblador de la ROM, pero necesito ayuda con la carga desde SD porque esa parte no tengo ni idea.

zxpope
Mensajes: 17
Registrado: 02 Ene 2018, 02:12

Re: Idea de core para videojuegos actuales

Mensaje por zxpope » 28 Mar 2019, 12:09

hola radastan,
es muy buena idea

*
respecto a la gestion de memoria mas allá de los 64kbytes, hay una idea interesante aqui:
http://foro.speccy.org/viewtopic.php?f=6&t=4195
y en la misma linea, el emulador Z80PACK implementa un mecanismo para CPM

*
unas reflexiónes a raiz del escaso entusiasmo que levanto mi hilo sobre el "ZXDOS"
http://www.retrowiki.es/viewtopic.php?t=200033655

1- el mundo retro aparentemente no esta muy interesado en las innovaciones, prefiere las limitaciones impuestas por hardware arcano
2- esto es cierto... quizás para nuestra generación (edad),
3- pero para la gente mas joven, sin una añoranza a unas vivencias pasadas un hardware modernizado puede ser interesante
4- hay muchos mas programadores de ensamblador/C que de verilog-vhdl

*
un punto de equilibrio (¿un punto dulce?) podria ser

A-un sistema de multiples procesadores con identico hardware (por ejemplo, 4 spectrums)
una implementacion de 4 spectrums en una fpga creo haberla visto en este foro (?origen ruso?)
B-distintas CPUs hacen cosas en paralelo al hilo principal, por ejemplo: DMA, por ejemplo, mover sprites, por ejemplo, emular musica AY y/o 1BIT.
C-la comunicacion entre CPUs podria ser via instrucciones out/in o zonas de memoria
D- el programador "ve" 4 spectrums pelados, y es su trabajo implementar por ejemplo, la lógica de un Z80DMA, en el la cpu3.
E-de esta forma conviertes un problema hardware (vhdl) en un problema de programacion (asm) y creacion de librerias.
F- por usabilidad, para el usuario seria interesante cargar el software de las N cpus con un único TAP



es en definitiva, un problema muy muy interesante el que propones
saludos
zxpope

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Idea de core para videojuegos actuales

Mensaje por Uto » 28 Mar 2019, 13:43

Al margen de la viabilidad del proyecto en sí, que lo veo un poco complicado porque primero tendría que haber interesados en desarrollar para eso, y luego haría falta alguien que lo hiciera y mantuviera, solo pensando en las posibilidades:

- El DAC del ZX-uno solo tiene 8 bits, que se reparte en 3-3-2 para cada color (si no recuerdo mal el azul es el que se queda con 2). Eso implica que esa paleta 256 que se carga en 768 bytes es poco viable con el hardware original. Vale que hay un addon con un DAC mejor, pero el "parque" de ZX-Uno con ese DAC es bastante más reducido, y en consecuencia sería aun menos atractivo para los programadores.
- El resto de cosas ya las ha metido más o menos el Next, quizá sea una plataforma más atractiva por tanto para desarrolladores, que otro nuevo cacharro. También muchas de las que dices ya las tiene el ZX-Uno, y no parece que haya cientos de programadores usándolas.

Al margen de eso, yo diría que si es un core para videojuegos, básicamente la ROM sobra, que arranque directamente lo que sea desde la SD en plan cartucho y ya está. Eso no quita hacer esas rutinas de sprites y otras cosas que dices, pero como librerías para que las añada quien quiera.

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

Re: Idea de core para videojuegos actuales

Mensaje por desUBIKado » 28 Mar 2019, 15:45

Con las especificaciones que pone Radastan lo más parecido que veo son ZX Spectrum Next ( https://www.specnext.com/about/ ) y el MSXVR VIRTUALIZER ( https://msxvr.blogspot.com/p/faq.html )

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Idea de core para videojuegos actuales

Mensaje por Kyp » 28 Mar 2019, 15:53

El DAC del ZX-Uno es de 9 bit, 3-3-3. Pero como la memoria tiene solo 8 bits la ULA+ es 3-3-2. El core luego hace una conversión de 332 a 333 sobre la marcha. Hacer un ordenador que use los 9 bits de color sería muy complicado, todo está pensado para 8 bits, memoria, registros, buses...

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

Re: Idea de core para videojuegos actuales

Mensaje por Radastan » 29 Mar 2019, 08:12

Vamos a ver, esto no tiene NADA que ver con un ZX Next.

Esto es un sistema en plan "arcade", para hacer juegos en formato panorámico. Es decir, destinado a hacer cosas como Maldita Castilla y similares. La idea es crear un sistema orientado a gráficos retro, pero para televisores de ahora (por eso el formato panorámico).


Es una opción más, una "consola" a medida y con características ideadas para hoy día. Pero vamos, que si el interés está así no pierdo el tiempo y doy por terminada la conversación.

zxpope
Mensajes: 17
Registrado: 02 Ene 2018, 02:12

Re: Idea de core para videojuegos actuales

Mensaje por zxpope » 04 Abr 2019, 10:48

hola radastan,

?se te ocurre alguna idea de como adaptar el mapa de memoria de video de un spectrum "clasico" (señal de 312.5 lineas )
a un mapa de memoria de video para una señal "HDMI" (800lineas?) ?

seria interesante mantener la compatibilidad entre modos, aunque no necesario.
mantener el attibute clash seria tambien interesante, para poder indentificar que es un spectrum. ;-)

salud
zxpope























LeningradScreenTimings.gif
LeningradScreenTimings.gif (21.44 KiB) Visto 9569 veces
Pentagon128ScreenTimings.gif
Pentagon128ScreenTimings.gif (21.39 KiB) Visto 9569 veces

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

Re: Idea de core para videojuegos actuales

Mensaje por Radastan » 08 Abr 2019, 11:19

zxpope escribió:hola radastan,

?se te ocurre alguna idea de como adaptar el mapa de memoria de video de un spectrum "clasico" (señal de 312.5 lineas )
a un mapa de memoria de video para una señal "HDMI" (800lineas?) ?

seria interesante mantener la compatibilidad entre modos, aunque no necesario.
mantener el attibute clash seria tambien interesante, para poder indentificar que es un spectrum. ;-)
La idea no era ampliar un Spectrum, sino crear un sistema desde cero. Sólo usar un Z80 dopado, ya que es el procesador que conocemos todos muy bien y tenemos compiladores/ensambladores por todos lados. La resolución cumplía con el estándar HDMI (es más, es 720p dividido por 4 en resolución vertical y horizontal).


De todas formas he descartado el proyecto, no hay interés.

Avatar de Usuario
aowen
Mensajes: 178
Registrado: 07 Oct 2015, 13:32

Re: Idea de core para videojuegos actuales

Mensaje por aowen » 16 Abr 2019, 17:40

Radastan escribió:Anyway, I've ruled out the project, there's no interest.
Actually your proposal has some overlap with the Chloe 280SE core that I have been writing up a specification for over the last few years. Given the direction ZX clones have taken of late, I decided to throw out compatibility and just make the best possible use of the underlying hardware (the ZX-Uno).

The 280SE has a 32K frame buffer. It can produce images like this using only the ULAplus palette and no CPU time:

Imagen

Features:
  • Maximum display resolution of 640 x 200.
  • Has a 60Hz interrupt and produces an NTSC/VGA picture.
  • The CPU is fully Z80 compatible, including the 16-bit address space. But there are other ways to access the 256K of RAM (you don't need more when you have virtually unlimited storage).
  • Includes dual AY in the Turbosound configuration (supported with a 6-channel PLAY command in SE Basic IV).
  • Has raster interrupts (although they are not required for things like swapping between medium and high res modes).
  • Has a DMA.
  • Doesn't do layers, hardware sprites or hardware scrolling, but provides an alternative approach that is more flexible.
  • ROM is 40K. Contains the OS and SE Basic IV (which is somewhat compatible with Microsoft BASIC).
  • Has a fully integrated file system.
  • BASIC is user extendable (easy to add commands that run from RAM for sprites, scrolling and so on).
  • Has a native app format. You can launch programs with RUN "My program name".

Responder