Karoshi MSX Community
05 de Julio de 2021, 08:01:29 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: 1 [2] 3 4 5
  Imprimir  
Autor Tema: Empezando de 0  (Leído 30583 veces)
0 Usuarios y 1 Visitante están viendo este tema.
doraemonppc
Karoshi Maniac
****
Mensajes: 358



WWW
« Respuesta #15 : 27 de Marzo de 2007, 01:52:14 am »

Me apunto a aprender del tuto  Roll Eyes
En línea

- El ensamblador con sangre entra-
doraemonppc
Karoshi Maniac
****
Mensajes: 358



WWW
« Respuesta #16 : 29 de Marzo de 2007, 12:22:33 am »

Bueno, yo sigo preguntando.
Quiero empezar a toquetear el modo grafico, a poder ser compatible con msx1.
Que modo de pantalla me recomendais?
Hay llamadas a la bios que me faciliten la vida?

Como se le mete un sprite al engendro? De que tamaño/caracteristicas pueden ser?
I cargar una imagen a pantalla completa como en las presentaciones de los juegos???

Tantas preguntas y tan pocas respuestas, que dura que es la vida del programador de videos vhs.... Roll Eyes

Venga, un cable porfavor...
En línea

- El ensamblador con sangre entra-
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #17 : 29 de Marzo de 2007, 06:03:07 am »

Hombre, no es tan complicado .. hay mucha documentación en Internet .. tan sólo has de leer un poquito :-)
Sobre el modo de pantalla, pues aquí muchos te recomendarán Screen 2 si se trata de un juego (salvo alguno que los hace en Screen 0 Smiley)
Y sobre el "toqueteo" ya te digo, es fácil, sino te quieres complicar la vida usa funciones BIOS (recomendadas al 100%)
Y sobre las funciones BIOS hay mucha información y son muy fáciles de usar. Animo!
En línea

MSX4EVER2GETHER
www.nerlaska.com
SapphiRe
Visitante
« Respuesta #18 : 29 de Marzo de 2007, 11:32:32 am »

Sobre el modo de pantalla, pues aquí muchos te recomendarán Screen 2 si se trata de un juego (salvo alguno que los hace en Screen 0 Smiley)

Ahora que lo pienso... he hecho tres juegos y cada uno en un modo de pantalla diferente. Me falta meterme con Screen 3 Cheesy Cheesy Cheesy

Citar
Y sobre el "toqueteo" ya te digo, es fácil, sino te quieres complicar la vida usa funciones BIOS (recomendadas al 100%)
Y sobre las funciones BIOS hay mucha información y son muy fáciles de usar. Animo!

En efecto, para comenzar "la BIOS es tu mejor amiga" (tal y como dice nuestro amigo Mr. Kun). En caso de que necesitases velocidad ya tendrías que meterte a programar directamente el VDP pasando de la BIOS, pero esto sólo en caso de extrema necesidad...

Saludos
--
Sph.
En línea
doraemonppc
Karoshi Maniac
****
Mensajes: 358



WWW
« Respuesta #19 : 02 de Abril de 2007, 09:20:36 pm »

Bueno, metiendome en faena y con la lista de llamadas a la bios llego a la siguiente conclusion (seguro erronea)

Con CHGMOD cambio a screen2 por ejemplo.
Ahora pondria la vram en modo de escritura con SETWRT
I copiaria algo de datos con sentido a la VRAM con LDIRVM.

Seria este pseudocodigo correcto para cargar una imagen Screen2 en pantalla?

La segunda pregunta.
Quiero cargar un pobre sprite... las unicas funciones de la bios que encuentro referentes a sprites son: CLRSPR CALPAT CALATR GSPSIZ , me dejo alguna?
En pseudocodigo como cargariais un sprite Huh? (n00b mode on please)


Es que estoy atrancado y me esta costando salir adelante  Undecided

Imploro vuestra ayuda oh grandes maestros del asm.... Tongue
En línea

- El ensamblador con sangre entra-
SapphiRe
Visitante
« Respuesta #20 : 02 de Abril de 2007, 10:03:06 pm »

Bueno, metiendome en faena y con la lista de llamadas a la bios llego a la siguiente conclusion (seguro erronea)

Con CHGMOD cambio a screen2 por ejemplo.
Ahora pondria la vram en modo de escritura con SETWRT
I copiaria algo de datos con sentido a la VRAM con LDIRVM.

Seria este pseudocodigo correcto para cargar una imagen Screen2 en pantalla?

Sí, pero LDIRVM ya hace el SETWRT, por lo que no hace falta que lo hagas Cheesy

Citar
La segunda pregunta.
Quiero cargar un pobre sprite... las unicas funciones de la bios que encuentro referentes a sprites son: CLRSPR CALPAT CALATR GSPSIZ , me dejo alguna?
En pseudocodigo como cargariais un sprite Huh? (n00b mode on please)

; Cargamos el patrón del sprite (16x16)
ld hl,datos del sprite en ram (32 bytes)
ld de,direccion de la tabla de patrones de sprites en vram
ld bc,32
call  LDIRVM
; Cargamos los atributos del sprite
ld hl,atributos del sprite en ram (4 bytes)
ld de,direccion de la tabla de atributos de sprites en vram
ld bc,4
call LDIRVM

Muy básico, pero entendible y funcional. Sólo tienes que tener los datos del sprite en ram y transferirlos de ahí a vram con ese pseudocódigo.

Un saludo y ya contarás!
--
Sph.
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #21 : 02 de Abril de 2007, 10:26:18 pm »

Y no se, como regla general yo no pensaría en ¿cual es el método para hacer tal cosa o tal otra?. Creo que lo mejor es tener siempre presente cual es la distribución de los datos en la VRAM, donde esta la memoria de pantalla, los colores, los sprites (tanto su forma como sus atributos); así, si tienes todo esto último clarísimo, para hacer algo sólo tendrás que pensar en como modificar esa VRAM en los sitios adecuados y eso sabiendo lo justito de ensamblador no es difícil Wink
¡Mapa de la VRAM ya! Smiley
En línea

Doom dee doom dee doom
doraemonppc
Karoshi Maniac
****
Mensajes: 358



WWW
« Respuesta #22 : 07 de Abril de 2007, 12:02:11 am »

Y no se, como regla general yo no pensaría en ¿cual es el método para hacer tal cosa o tal otra?. Creo que lo mejor es tener siempre presente cual es la distribución de los datos en la VRAM, donde esta la memoria de pantalla, los colores, los sprites (tanto su forma como sus atributos); así, si tienes todo esto último clarísimo, para hacer algo sólo tendrás que pensar en como modificar esa VRAM en los sitios adecuados y eso sabiendo lo justito de ensamblador no es difícil Wink
¡Mapa de la VRAM ya! Smiley

He estado empapandome el redbook, que es donde mas o menos esta esto explicado pero sigue sin quedarme demasiado claro.
Me sigo haciendo sopas con las "Sprite pattern Table", la "Sprite attribution Block", los "Mode Registers" y la madre que los trajo al mundo.

En concreto tengo un par de preguntas que no he encontrado respuesta.

- En que direccion empieza la VRAM?
- De la VRAM cual es el segmento destinado a que yo le copie datos de un screen2 a piñon para mostrar una imagen?
- Que tamaño tiene un screen2?
- Podriais ponerme un ejemplo de screen2 en "db"'s de esos? Que secciones ha de tener? O bien el tema de las tablas es solo para sprites?

Espero no aburriros con mis temas, pero vuelvo a estar bien encallado en el tema de bitmaps.


Sin mas me pongo a experimentar con sprites a ver si se me da mejor, que de hecho, creo que esta bastate mejor explicado por la documentacion que he encontrado.

Muchas gracias al que se lea este tocho y un monumento a quien me ayude.
En línea

- El ensamblador con sangre entra-
Dioniso
Visitante
« Respuesta #23 : 07 de Abril de 2007, 12:21:58 am »

- En que direccion empieza la VRAM?

Cero. Y tienes 16k de VRAM - no la confundas con la RAM ...  Roll Eyes

Citar
- De la VRAM cual es el segmento destinado a que yo le copie datos de un screen2 a piñon para mostrar una imagen?

Cero.

Citar
- Que tamaño tiene un screen2?

Definición de caracteres (3 tercios de pantallas de 255 cada uno x 8 bytes = 6144 bytes).

Más otros tres bancos de colores ... otros 6144 bytes.

Aunque realmente, screen 2 tiene 16k  Wink caracteres, colores, sprites, ... Para mostrar una imagen con un Bload,s necesitas las 16k, si no me equivoco ... pero en ensamblador menos.

Citar
- Podriais ponerme un ejemplo de screen2 en "db"'s de esos? Que secciones ha de tener? O bien el tema de las tablas es solo para sprites?

Espero no aburriros con mis temas, pero vuelvo a estar bien encallado en el tema de bitmaps.

Sí, ahora te toca cambiar de tercios; de bitmap a tileset.

Pues envías 6144 bytes de redefinición de datos a $0000 y 6144 bytes de redefinición de los colores de esta redefinición de datos a $2000.

Suerte.
« Última modificación: 08 de Abril de 2007, 11:01:37 am por Dioniso » En línea
doraemonppc
Karoshi Maniac
****
Mensajes: 358



WWW
« Respuesta #24 : 07 de Abril de 2007, 01:05:13 am »

Ok, veo que estaba totalmente equivocado, que en msx todo va por tiles o como narices se le llame.

Ale, a ensamblar se ha dicho!
En línea

- El ensamblador con sangre entra-
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #25 : 07 de Abril de 2007, 12:09:47 pm »

Realmente la VRAM se puede manipular con dos filosofías diferentes, es bueno tener ambas presentes cuando manipules el video. En la primera de ellas, lo haces como en el resto de los ordenadores (p.e: Spectrum) y te limitas a "vpokear" los datos que quieres ver, directamente en la tabla de patrones ($0000-$17FF) con su color correspondiente ($2000-$37FF) dejando sin tocar la tabla de nombres. Así es como puedes hacer conversiones casi directas de los juegos de Spectrum, en las que ni siquiera se planteaban usar la mayor resolución de color del MSX y ya no hablemos de los sprites.
Con la segunda filosofía, usamos de forma más "japonesa" el VDP, aquí ya no accedemos continuamente a las tablas de patrones y de color para repintar el contenido. Nos limitamos incialmente a definir los tres bancos de dichas tablas (puedes meter el mismo banco de carácteres en los tres o meter 1 en cada uno como hace el F1-Spirit). Una vez definidos los 256 carácteres únicamente queda "vpokearlos como queramos en la tabla de nombres, rápido y colorista; pero todo se mueve a saltos ya que la resolución es de tamaño carácter.
Los sprites no tienen ninguna pega, son muy sencillos de usar e independientes de como estés usando la pantalla.

Algunos ejemplos para que te ilustres visualmente Wink:

Filosofía 1
-------------

Al 100%  Tongue: Jack the Nipper (monocromo total)
Al 100%: Astro Marine Corps (usa color y movimiento de carácter; pero sin aprovechar la mayor resolución del MSX)
Al 100% pero con sprites para camuflar un poco: Survivor (cutre), Future Knight (mucho mejor)

Filosofía 2
-------------

Konami: Casi todos hacen uso de sprites a mansalva
Hudson Soft: Casi todos usan sprites de carácter. Muy interesantes de ver
El DoorDoor Smiley: Igual que los de Hudson Soft; pero con personajes bastante grandotes. Muy ilustrativo
Malaika y Exoide-Z: Perfectos ejemplos de como usar el modo carácter (o tile) de manera que se simule un movimiento pixel a pixel. Ambos son referentes en su género.

De tí depende el trabajar con un método u otro (o ambos a la vez).
En línea

Doom dee doom dee doom
doraemonppc
Karoshi Maniac
****
Mensajes: 358



WWW
« Respuesta #26 : 07 de Abril de 2007, 05:59:30 pm »

; VRAM addresses
        CHRTBL  equ     0000h   ; Pattern table
        NAMTBL  equ     1800h   ; Name table
        CLRTBL  equ     2000h   ; Colour table
        SPRTBL  equ     3800h   ; Sprite pattern table
        SPRATR  equ     1b00h   ; Sprite attributtes

Con estas direcciones voy bien?
Necesito saber alguna mas???

El ensamblador con sangre entra!
En línea

- El ensamblador con sangre entra-
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #27 : 07 de Abril de 2007, 09:05:13 pm »

Imprímete esta tablilla y tenla siempre a mano Wink


------------------------
TABLAS MODOS DE PANTALLA


SCREEN 0 (Text mode, 40 column):
Name table (char positions)     0000-03BF  (0-959)     (See note A)
Character patterns (font)       0800-0FFF  (2048-4095)    (See note B)


SCREEN 1 (coloured text mode, 32 column):
Character patterns (font)       0000-07FF  (0-2047)     (See note B)
Name table (char positions)     1800-1AFF  (6144-6911)  (See note A)
Sprite attribute table          1B00-1B7F  (6912-7039)     (See note C)
Characters colour table (8/byte)2000-201F  (8192-8223)    (See note F)
Sprite character patterns       3800-3FFF  (14336-16383)    (See note D)


SCREEN 2 (256*192 Graphics mode):
Character patterns              0000-17FF   (0-6143)   (See note B)
Name table (char positions)     1800-1AFF   (6144-6911)
Sprite attribute table          1B00-1B7F   (6912-7039)  (See note C)
PixelByte colour table          2000-37FF   (8192-14335)  (See note E)
Sprite character patterns       3800-3FFF   (14336-16383)  (See note D)


SCREEN 3 (4x4 pixel blocks/Multicolour mode):
Character colour patterns       0000-05FF   (0-1535)
Name table (char positions)     0800-0AFF   (2048-2815)
Sprite attribute table          1B00-1B7F   (6912-7039)     (See note C)
Sprite character patterns       3800-3FFF   (14336-16383)     (See note D)





--------------------
Name table (Note A):


Byte:   Expl.:
  0     Pattern number to be displayed in upper hand left corner of screen
  1     Pattern number to be displayed in upper hand left corner of screen+1
  2     Pattern number to be displayed in upper hand left corner of screen+2
  3     Pattern number to be displayed in upper hand left corner of screen+3
  ...



--------------
Font (Note B):   


Byte (+offset):         Expl.:
     0-7                Pattern number 0 (First character)

                        0:      00000000
                        1:      00001000
                        2:      00010100
                        3:      00100010                = "A"
                        4:      00111110
                        5:      00100010
                        6:      00100010
                        7:      00000000

    8-F                 Pattern number 1 (2nd character)
   10-17                Pattern number 2 (3rd character)
   1F-20                Pattern number 3 (4th character)
    ...



--------------------------
Sprite attribute (Note C):


Byte (+offset):         Expl.:
     0-3                Sprite 0 attribute
                       
                0:      Vertical position
                1:      Horizontal position
                2:      Pattern number
                3:      Bit:    Expl.:
                        0-3     Colour code
                        4-6     0
                        7       EC (Early Clock, 1=> Shift sprite 32 pixels
                                    to the left)

     4-7                Sprite 1 attribute
     8-B                Sprite 2 attribute
     ...


-----------------------------------
Sprite character patterns (Note D):


Used like the 8*8 pixel Font in screen 0 when using 8*8 pixel sprites.
When using 16*16 pixel sprites, four blocks of 8*8 pixels is organised like:

Byte (+offset):         Expl.:
     0-7                8 Bytes, Block A
     8-F                8 Bytes, Block B
    10-17               8 Bytes, Block C
    18-1F               8 Bytes, Block D

And the sprite will be assembled on screen like this:

                +---------+---------+
                |         |         |
                | Block A | Block C |
                |         |         |
                +---------+---------+
                |         |         |
                | Block B | Block D |
                |         |         |
                +---------+---------+



--------------------------
PixelByte colour (Note E):


Byte (+offset):         Expl.
        0               Colour code for 8 bits in scrn pos X=0-7, Y=0

                        Bit:    Expl.:
                        0-3     Colour for bit reset ("0") in pattern table
                        4-7     Colour for bit set ("1") in pattern table

        1               Colour code for 8 bits in scrn pos X=0-7, Y=1
        2               Colour code for 8 bits in scrn pos X=0-7, Y=2
        ...

        8               Colour code for 8 bits in scrn pos X=8-15, Y=0
        9               Colour code for 8 bits in scrn pos X=8-15, Y=1
        A               Colour code for 8 bits in scrn pos X=8-15, Y=2
        ...
       


---------------------------------
Characters colour table (Note F):


Byte (+offset):         Expl.
        0               Colour code for patterns 0-7 in pattern table

                        Bit:    Expl.:
                        0-3     Colour for bit reset ("0") in pattern table
                        4-7     Colour for bit set ("1") in pattern table

        1               Colour code for patterns 8-F in pattern table
        2               Colour code for patterns 10-17 in pattern table

En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #28 : 07 de Abril de 2007, 09:07:49 pm »

Un poco off-topic: JL, el AMC y otras conversiones que hacían scroll a caracteres, ¿realmente usaban caracteres redefinidos o los iban redefiniendo mientras hacían el scroll? Supongo que será lo segundo, puesto que después plantaban sprites soft encima.
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
doraemonppc
Karoshi Maniac
****
Mensajes: 358



WWW
« Respuesta #29 : 08 de Abril de 2007, 12:40:42 am »

Gracias Darth Fistro!
Esa tabla me ha ahorrado bastante tiempo de recopilar información.
La voy a tener a partir de ahora siempre en la mesilla de noche  Grin
En línea

- El ensamblador con sangre entra-
Páginas: 1 [2] 3 4 5
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!