Karoshi MSX Community
05 de Julio de 2021, 12:59:52 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
  Imprimir  
Autor Tema: Detectar VDP V9938  (Leído 9555 veces)
0 Usuarios y 1 Visitante están viendo este tema.
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« : 01 de Junio de 2010, 04:48:03 pm »

Hola compañeros!

Tengo una duda sobre hardware:

Tengo un yamaha MSX1 cx5MII que como el Spectravideo SVI-738, dispone del VDP V9938 de los MSX2.
En el proyecto en el que estoy metido (el PSGed), quiero detectar si es uno de estos ordenadores o un MSX2 (o sup), para cambiar la paleta de colores.

Como puedo detectarlo el tipo de VDP?

Tengo si es un modelo superior a la primera generación y he probado en el yamaha el cambio de paleta y funciona correctamente.

Pongo la rutina por si identificáis algún error o mejora (en formato SDCC):
Código:
void setPalette()
{
__asm

  ld hl,#PALETTE
  xor a
  di
  out (#0x99),a
  ld a,#144
  out (#0x99),a
  ld bc,#0x209A
  otir
  ei
  ret
 
PALETTE:
; RB,G
.db 0x00,0
.db 0x00,0 ; black
.db 0x33,3 ; medium green
.db 0x00,7 ; light green
.db 0x05,0 ; dark blue
.db 0x27,3 ; light blue
.db 0x60,0 ; dark red
.db 0x07,7 ; cyan
.db 0x70,0 ; medium red
.db 0x72,2 ; light red
.db 0x60,6 ; dark yellow
.db 0x74,7 ; light yellow
.db 0x11,6 ; dark green
.db 0x34,0 ; magenta
.db 0x55,5 ; gray
.db 0x77,7 ; white

__endasm;
}


En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
mohai
Karoshi Fan
**
Mensajes: 80



« Respuesta #1 : 01 de Julio de 2010, 05:15:16 pm »

Si quieres detectar el chip de video que tiene un MSX, creo recordar que simplemente hay que leer un registro (creo que el 0), y uno de los bits te indica si es 9918/9928 o 9938.
En línea
SapphiRe_MSX
Visitante
« Respuesta #2 : 01 de Julio de 2010, 05:31:09 pm »

Si quieres detectar el chip de video que tiene un MSX, creo recordar que simplemente hay que leer un registro (creo que el 0), y uno de los bits te indica si es 9918/9928 o 9938.

Ojalá fuera tan sencillo, pero no.

La diferencia entre el VDP del MSX1 y el del MSX2 es que el del MSX2 tiene más registros, así que lo que se puede hacer es intentar localizar si la BIOS del MSX se dedica a escribir en ellos... Esto es lo que hace, por ejemplo, Ramones en el tutorial de manejo del ratón que publicó hace tiempo por aquí.

Como no tengo tiempo y estoy perro, no tengo ganas de buscarlo aquí, así que os paso el enlace a la web de Konamito donde está: http://www.konamito.com/wp-content/uploads/2009/11/tutorial_armando4.rar
En línea
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« Respuesta #3 : 01 de Julio de 2010, 05:43:30 pm »

Gracias Sapphire!

Aprovechando que Ramones estaba en la RU, hablamos del tema y me explico como lo resolvió para el Spectravideo SVI-738.
Es lo que dices tu, de buscar una cadena en la bios, donde se accede a estos registros.
En el caso del Yamaha CX5MII, que yo sepa, solo utiliza el V9938 para permitir las 80 columnas en screen 0.
En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
SapphiRe_MSX
Visitante
« Respuesta #4 : 01 de Julio de 2010, 06:36:02 pm »

Aprovechando que Ramones estaba en la RU, hablamos del tema y me explico como lo resolvió para el Spectravideo SVI-738.
Es lo que dices tu, de buscar una cadena en la bios, donde se accede a estos registros.

¿No te funciona?

Citar
En el caso del Yamaha CX5MII, que yo sepa, solo utiliza el V9938 para permitir las 80 columnas en screen 0.

Pues deberías buscar la cadena adecuada en tal caso Tongue
En línea
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« Respuesta #5 : 01 de Julio de 2010, 06:58:09 pm »

No me he puesto con este tema, ya que busqué una opción alternativa: un menú de configuración donde se puede indicar la vdp usada (en ambos casos lo que hace es solamente cambiar la paleta).

Lo que no se es como responderá si se toca esta opción en un MSX sin el V9938. En el emulador se ven los sprites ok, pero el resto todo negro  Tongue

En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #6 : 02 de Julio de 2010, 04:44:01 am »



PINTAZA Shocked
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #7 : 02 de Julio de 2010, 11:35:27 am »

La solución para detectar si el procesador es superior a un TMS99xx consiste en verificar si la BIOS inicializa registros correspondientes a un V99X8. Si detectamos que es así, entonces puedes llamar directamente a uno de los comandos del VDP y te indicará un número de versión, que será 0 para V9938, 1 para V9958 y así sucesivamente, aunque haya poca sucesión.
En línea
mohai
Karoshi Fan
**
Mensajes: 80



« Respuesta #8 : 07 de Julio de 2010, 08:01:00 pm »

Se me ocurre otra manera, un poquito compleja, pero creo que funcionaría:

Activa el Screen 1.
Activa el bit M4 (Si es TMS9918, no hará nada, si es V99x8, activará el Screen 4).
Alinea 5 sprites en horizontal.
Espera una INT.
Lee el registro de estado 0.
¿Se ha activado el bit de 5º sprite? Si no es así, es V99x8.
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #9 : 07 de Julio de 2010, 08:20:06 pm »

¿Se ha activado el bit de 5º sprite? Si no es así, es V99x8.

Pero es que ese bit al final no era 100% fiable...
En línea

--

Cindy Lauper She Bops!
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« Respuesta #10 : 07 de Julio de 2010, 09:41:34 pm »

@mohai, el sistema me parece muy lioso, pero es muy ingenioso!!  Smiley
a lo mejor hay una forma más sencilla utilizando tu idea...
Gracias por el esfuerzo!
En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
mohai
Karoshi Fan
**
Mensajes: 80



« Respuesta #11 : 09 de Julio de 2010, 01:08:59 pm »

¿Se ha activado el bit de 5º sprite? Si no es así, es V99x8.

Pero es que ese bit al final no era 100% fiable...
Ese bit no es exacto si intentas leerlo sin esperar al refresco de pantalla, por eso digo lo de esperar una INTerrupcion.
En línea
mohai
Karoshi Fan
**
Mensajes: 80



« Respuesta #12 : 09 de Julio de 2010, 01:15:05 pm »

¿Se ha activado el bit de 5º sprite? Si no es así, es V99x8.

Pero es que ese bit al final no era 100% fiable...
Ese bit no es exacto si intentas leerlo sin esperar al refresco de pantalla, por eso digo lo de esperar una INTerrupcion.

Gracias!
Se me ocurrió de repente.

Ahora mismo se me ocurre otra forma, usando el BIOS: Poner el modo 80 columnas (ignoro si el BIOS, aunque sea un MSX 1 lo soportaría...). Si devuelve un error, no hay V9938.

Seguro que hay otras maneras: Leer algún registro de estado del V9938 (se colgaría si es TMS9918?), intentar leer/escribir en una zona de VRAM mas allá de las 16 K, escribir/leer en los registros de de paleta ...

Desde luego la manera más fácil es leer el BIOS, pero en el caso de los Yamaha y Spectravídeos sin modificar, el BIOS dice que es MSX1. En estos casos sólo habría que contar con 16K de VRAM.
« Última modificación: 09 de Julio de 2010, 01:18:08 pm por mohai » En línea
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« Respuesta #13 : 09 de Julio de 2010, 01:31:50 pm »

Esto de las 80 columnas tiene muy buena pinta...
En el caso del Yamaha, desde basic si pone a 80 columnas funciona, pero como se hace en asm?
En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #14 : 09 de Julio de 2010, 02:17:44 pm »

¿Se ha activado el bit de 5º sprite? Si no es así, es V99x8.

Pero es que ese bit al final no era 100% fiable...
Ese bit no es exacto si intentas leerlo sin esperar al refresco de pantalla, por eso digo lo de esperar una INTerrupcion.

Es que aun asi creo recordar que Armando comento algo al respecto, que el se habia hecho una rutina de rotacion de sprites con ello y acabo descubriendo que no era siempre fiable... El topic deberia andar por aqui, a ver si lo encuentro...
En línea

--

Cindy Lauper She Bops!
Páginas: [1] 2
  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!