Final Fight en MSX2

Página 9/16
2 | 3 | 4 | 5 | 6 | 7 | 8 | | 10 | 11 | 12 | 13 | 14

Por Kai Magazine

Paragon (1389)

Imagen del Kai Magazine

17-01-2015, 20:28

Bueno, da igual que sea de disco o de ROM (cartucho), si te resulta mas facil hacer que lo lea directamente de la rom de un cartucho, el resultado es el mismo.
Lo ideal sería que fuera como un Bload (que a pantalla completa desde rom tarda 1 segundo)
Pero si ademas se puede hacer que cargue un fotograma pequeño a velocidad Bload, dado que el fotograma sería 20 veces mas pequeño que a tamaño completo, tardaría solo 0,05 segundos en cargar, haciendolo util en tiempo real.
La idea era esa (como lo que hacen los del street fighter de msx2) y que cargue de disco o de cartucho, es indiferente, la cuestion es que sea rapido y controlable desde un turbo-bloque.
En cuanto a tu pregunta: No se puede cargar un fichero desde ram a vram o desde disco a ram desde dentro de un turbo bloque. No se puede cargar nada de nada. No hay comandos de disc basic en turbo basic, ni nada parecido.
Por eso cualquier aporte en esa direccion sería muy útil.

Por Warchild

Paragon (1280)

Imagen del Warchild

17-01-2015, 21:06

Kai, ¿has probado a hacer los copys por medio de comandos del VDP en lugar de la instrucción COPY del Basic? Solo tienes que cargar unos cuantos registros y consigues lo mismo que con el copy. Creo que así te podrías saltar la limitación del Turbo Basic que solo permite copy gráfico y podrás copiar de RAM (aunque no lo he comprobado, en teoría en un Turbo Bloque puedes usar la instrucción VDP, ¿no?). Imagino que si lo que hay conectado al z80 es una página de la ROM actuará como si fuera RAM (esto lo digo desde la más absoluta ignorancia y mi gran imaginación). Sobre acceso a disco dentro del Turbo Bloque supongo que como mínimo habrá que tirar de Bios y un poquito de asm... nusé...

Una preguntilla... ¿qué tamaño tiene el sprite de Cody que estáis usando?

Por anonymous

incognito ergo sum (116)

Imagen del anonymous

17-01-2015, 21:22

Warchild wrote:

Kai, ¿has probado a hacer los copys por medio de comandos del VDP en lugar de la instrucción COPY del Basic? Solo tienes que cargar unos cuantos registros y consigues lo mismo que con el copy. Creo que así te podrías saltar la limitación del Turbo Basic que solo permite copy gráfico y podrás copiar de RAM (aunque no lo he comprobado, en teoría en un Turbo Bloque puedes usar la instrucción VDP, ¿no?). Imagino que si lo que hay conectado al z80 es una página de la ROM actuará como si fuera RAM

En efecto, la teoría dice eso. La Z80 y el VDP no saben si una posición de memoria es RAM o ROM y por tanto debe funcionar usando comandos LMMM y HMMM. Ahora bien, la transferencia desde ROM al VDP será probablemente más lenta que desde RAM. Eso hay que tenerlo en cuenta.

Por anonymous

incognito ergo sum (116)

Imagen del anonymous

17-01-2015, 21:32

warau wrote:
Warchild wrote:

Kai, ¿has probado a hacer los copys por medio de comandos del VDP en lugar de la instrucción COPY del Basic? Solo tienes que cargar unos cuantos registros y consigues lo mismo que con el copy. Creo que así te podrías saltar la limitación del Turbo Basic que solo permite copy gráfico y podrás copiar de RAM (aunque no lo he comprobado, en teoría en un Turbo Bloque puedes usar la instrucción VDP, ¿no?). Imagino que si lo que hay conectado al z80 es una página de la ROM actuará como si fuera RAM

En efecto, la teoría dice eso. La Z80 y el VDP no saben si una posición de memoria es RAM o ROM y por tanto debe funcionar usando comandos LMMM y HMMM. Ahora bien, la transferencia desde ROM al VDP será probablemente más lenta que desde RAM. Eso hay que tenerlo en cuenta.

Hmm... Me respondo a mí mismo. He mezclado comandos que son de VRAM a VRAM (HMMM y LMMM) cuando en realidad tendrían que ser de CPU a VRAM (HMMC y LMMC). Pero vamos, que sí, que debería funcionar desde ROM.

Por Kai Magazine

Paragon (1389)

Imagen del Kai Magazine

17-01-2015, 22:02

Warchild wrote:

Kai, ¿has probado a hacer los copys por medio de comandos del VDP en lugar de la instrucción COPY del Basic? Solo tienes que cargar unos cuantos registros y consigues lo mismo que con el copy. Creo que así te podrías saltar la limitación del Turbo Basic que solo permite copy gráfico y podrás copiar de RAM (aunque no lo he comprobado, en teoría en un Turbo Bloque puedes usar la instrucción VDP, ¿no?). Imagino que si lo que hay conectado al z80 es una página de la ROM actuará como si fuera RAM (esto lo digo desde la más absoluta ignorancia y mi gran imaginación). Sobre acceso a disco dentro del Turbo Bloque supongo que como mínimo habrá que tirar de Bios y un poquito de asm... nusé...

Una preguntilla... ¿qué tamaño tiene el sprite de Cody que estáis usando?

La unica informacion que tengo de la VDP es la que descubrí experimentando cambiando valores y viendo lo que pasaba.
Nunca he tenido acceso a un libro o pagina de internet que me explique los valores VDP y sus funciones en Basic...

He pedido informacion en varios hilos pero no he tenido suerte alguna...

En cuanto al tamaño de cody, la altura cuando está de pie es de 68 pixels, y la anchura cambia dependiendo del fotograma. Cuando está parado tiene 30 pixels de anchura. Cuando está caminando y tiene las piernas mas separadas ocupa casi el doble.

Creo que es el sprite por copys mas grande que jamás se ha visto en un msx2
De todos modos ya veis que si se hace bien, el msx puede mover suavemente 3 tios de ese tamaño con un avance de 2 pixels por fotograma.
Si sacrificamos suavidad, bajamos los fotogramas por segundo a la mitad, y el avance lo hacemos de 4 en 4 pixels, podemos meter a 6 personajes enormes.
Suficientes para hacer un final fight (o similar) bien rellenito de gente en pantalla.

Por anonymous

incognito ergo sum (116)

Imagen del anonymous

17-01-2015, 22:10

Kai Magazine wrote:

La unica informacion que tengo de la VDP es la que descubrí experimentando cambiando valores y viendo lo que pasaba.
Nunca he tenido acceso a un libro o pagina de internet que me explique los valores VDP y sus funciones en Basic..

Las funciones de los registros VDP están perfectamente descritos en el Technical Handbook, y obviamente es lo mismo desde BASIC que desde ASM (salvo por el detalle de que a partir del R#8, en BASIC se enumera incrementado en 1).

El problema es que no basta con escribir en los registros VDP para hacer cosas avanzadas con el VDP, ya que necesitas tener un control más preciso que sólo el ASM te puede dar (interrupciones, timing, etc.).

Todo lo más o menos "factible" a realizar con el VDP desde BASIC ya lo tiene bien resuelto el BASICKUN y dudo que se pueda rascar mucho más que usando las propias funciones dentro de los turbobloques.

El otro problema de usar VDP desde BASIC es que es más lento porque el sistema pierde tiempo en cosas como hacer una copia de los registros en la RAM de sistema (para poder usar la función VDP en modo lectura, que el hardware no lo permite). Quizás con una pequeña rutina llamada desde DEFUSR o como comando expandido pueda hacerse un wrapper de una función tipo WRTVDP pero saltándose toda la mierda que mete en medio la BIOS.

Por Kai Magazine

Paragon (1389)

Imagen del Kai Magazine

17-01-2015, 22:20

Eso sería estupendo, si pudieramos superar esas limitaciones que tiene el turbo basic, y dado lo facil y rapido que es programar en turbo basic, creo que mucha mas gente se apuntaria al desarrollo para msx2 o superiores.
A ver si entre todos podemos hacer un par de buenos motores graficos para msx2 que superen las barreras actuales pero que sean accesibles para cualquier usuario con cierto conocimiento de basic.
Creo que eso le daria un buen impulso a nuevos desarrollos.

A ver si lo hacemos posible!

Por Warchild

Paragon (1280)

Imagen del Warchild

17-01-2015, 22:23

No sé en otras circunstancias, pero usar la instrucción COPY y usar la instrucción VDP del Basic para ejecutar el mismo comando que el COPY tardan exactamente lo mismo, al menos en copy gráfico (hice una pequeña prueba ayer). Lo útil de usar la instrucción VDP del Basic en lugar de COPY es para que el origen de los datos pueda ser distinto a VRAM dentro del Turbo Bloque. El control sobre timing e interrupciones, exactamente el mismo que debes tener con el copy. De hecho simplemente, donde habría una instrucción copy habría unos cuantos VDP(x)=...

Por anonymous

incognito ergo sum (116)

Imagen del anonymous

17-01-2015, 22:24

Kai Magazine wrote:

Eso sería estupendo, si pudieramos superar esas limitaciones que tiene el turbo basic, y dado lo facil y rapido que es programar en turbo basic, creo que mucha mas gente se apuntaria al desarrollo para msx2 o superiores.

Lo malo de eso es que tendríamos... producciones hechas en Turbo Basic... que nunca será lo mismo que el ASM y pueden valer para dar el pego en según qué tipo de juegos. Pero nunca podrás hacer un Aleste 2 (por decir algo al azar) en Turbo Basic (sin entrar en temas de diseño).

¿De verdad os parece tan difícil el ASM? A mí lo que me resulta difícil es el BASIC, por lo limitado que es y el continuo encaje de bolillos que te obliga a hacer.

Por Warchild

Paragon (1280)

Imagen del Warchild

17-01-2015, 22:35

A mí no es que me parezca difícil el assembler... sí que hay que ser muuuuuy meticuloso y organizado (dos virtudes que no se llevan bien conmigo). Sé muy poquito de assembler, y tampoco tanto de Basic, pero pensaba que se buscaba una forma de hacer esas copias de ram/rom a vram dentro de un turbo bloque. Lo ideal para exprimir la máquina es el assembler, claro. Más allá de eso, assembler y prescindir de la bios Smile

Depende de cada cada uno el lenguaje que quiera usar (que no siempre es el que se quiera, si no al que se llega...) pero es obvio que es el ensamblador el que puede exprimir la máquina.

Página 9/16
2 | 3 | 4 | 5 | 6 | 7 | 8 | | 10 | 11 | 12 | 13 | 14