Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: nerlaska en 16 de Junio de 2014, 11:18:09 am



Título: Detectar modelo MSX a partir de un ROM
Publicado por: nerlaska en 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 :)



Título: Re:Detectar modelo MSX a partir de un ROM
Publicado por: SapphiRe_MSX en 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.


Título: Re:Detectar modelo MSX a partir de un ROM
Publicado por: nerlaska en 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.


Título: Re:Detectar modelo MSX a partir de un ROM
Publicado por: SapphiRe_MSX en 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í...


Título: Re:Detectar modelo MSX a partir de un ROM
Publicado por: pitpan en 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.