Karoshi MSX Community
05 de Julio de 2021, 12:58:01 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]
  Imprimir  
Autor Tema: Detectar modelo MSX a partir de un ROM  (Leído 3036 veces)
0 Usuarios y 1 Visitante están viendo este tema.
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« : 16 de Junio de 2014, 11:18:09 am »

Hola máquinas!

A ver como lo expongo .. estoy intentando saber que modelo MSX es el más apropiado usar según la ROM que se le pase.
Entiendo que en la cabecera de una ROM esta información no se puede obtener, así que intuyo que se debe realizar algún tipo de análisis en los opcodes de la ROM para determinar esto.
Mi pregunta es .. ¿es posible averiguar esta información?
¿Qué opcodes o marcas recomendáis a buscar para determinar que modelo es el más apropiado para ejecutar una ROM?

Gracias por vuestra sapiencia Smiley

En línea

MSX4EVER2GETHER
www.nerlaska.com
SapphiRe_MSX
Visitante
« Respuesta #1 : 16 de Junio de 2014, 03:31:35 pm »

Mi pregunta es .. ¿es posible averiguar esta información?

No. Eso supondría que, por ejemplo, en un MSX2 existieran opcodes que no pudieran ser ejecutados en un MSX1. Sin embargo, dado que TODOS los MSX tienen un Z80 eso no es viable.

Si la ROM hace comprobación del tipo de MSX (mirando el byte correspondiente de la BIOS) sería posible hacer algo más sencillo, pero aún así lo que pretendes hacer implica EMULAR la ejecución de la ROM para comprobar qué se hace.
En línea
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #2 : 16 de Junio de 2014, 04:14:05 pm »

Si bueno .. yo iba más a por ejemplo .. que en los juegos MSX2 fuera costumbre .. mirar cierta dirección de memoria, o por ejemplo .. detectar si se usa un Screen >= 3 .. o detectar cosas que solo se puedan hacer en MSX2 .. imagino que no habrá algo estandard, lamentablemente.
En línea

MSX4EVER2GETHER
www.nerlaska.com
SapphiRe_MSX
Visitante
« Respuesta #3 : 16 de Junio de 2014, 04:27:49 pm »

Si bueno .. yo iba más a por ejemplo .. que en los juegos MSX2 fuera costumbre .. mirar cierta dirección de memoria, o por ejemplo .. detectar si se usa un Screen >= 3 .. o detectar cosas que solo se puedan hacer en MSX2 .. imagino que no habrá algo estandard, lamentablemente.

Se puede hacer de tantas y tantas formas que la única manera de hacer algo genérico es emular... y aún así...
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #4 : 16 de Junio de 2014, 04:43:15 pm »

Aunque no sea infalible, puedes comprobar si llama a ciertas rutinas de la BIOS específicas de MSX2, MSX2+ o Turbo-R, por ejemplo. Está claro que si hay alguna instrucción que utiliza este tipo de cosas, o registros de VDP más allá de los de MSX1, necesitarás más máquina.

Lo que dice Sap es verdad: para hacerlo bien habría que emular. Pero para hacerlo "mal", basta con ver si encuentras algunos patrones habituales (cambio de paleta, registros de scroll en VDP, llamadas a EXTBIOS, etc.). La solución ideal sería pasar una serie de "tests" para ver si encuentra este tipo de instrucciones, y si se cumplen algunos, exigir máquina.

Lo peor que podría pasar es un falso positivo, por ejemplo, encontrando instrucciones de cambio de paleta que, en realidad, pueden ser datos gráficos, texto o música de la ROM. Pero vamos, juega un poco y a ver qué pasa... Ningún sistema es infalible: por eso, incluso para detectar el tipo de mapper, que debería ser más sencillo, tanto openMSX como BlueMSX optan por usar una base de datos que compara el SHA-2 del fichero y devuelve el tipo de mapper.

Suerte en tus pesquisas.
En línea
Páginas: [1]
  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!