[SNES]Como se diferencian los HIROM de los LOWROM?

Teniendo en cuenta que en función de que el Rom sea Hi o Low el header tiene una dirección diferente dentro del archivo ROM como se puede distinguir entre uno y otro sin tener que leer la cabecera? había pensado en cuando sobrepasan determinado tamaño son HiROM pero veo juegos como el Super Metroid que ocupa 3 megabytes y es del tipo LowROM , como los distinguen los programas como los emuladores o el Snestool por ejemplo?
kappa64 escribió:Teniendo en cuenta que en función de que el Rom sea Hi o Low el header tiene una dirección diferente dentro del archivo ROM como se puede distinguir entre uno y otro sin tener que leer la cabecera? había pensado en cuando sobrepasan determinado tamaño son HiROM pero veo juegos como el Super Metroid que ocupa 3 megabytes y es del tipo LowROM , como los distinguen los programas como los emuladores o el Snestool por ejemplo?


Por el tamaño no se puede saber: cualquier tamaño es posible en ambos casos.
Si no quieres leer la cabecera (que sería lo más fácil, ya que lleva un checksum para que sepas inequívocamente que estás leyendo dicha cabecera), sólo puedes saberlo de una forma: mirando el código ejecutable del juego y comprobando a qué banco se salta en un JSL o JML. Ten en cuenta que una SNES no sabe nunca si está ejecutando una LoROM o una HiROM: el micro se limita a ejecutar instrucciones que le dicen ir a un banco o a otro, y el único concimiento que tiene es si es FastROM (sólo para HiROMs) o SlowROM (tanto en LoROM como en HiROM).

Los emuladores lo saben de dos formas: por una lista de compatiblidades que además le dice si es LoROM o HiROM, y porque comprueban la cabecera para saber lo que son.

Por cierto, estaría bien distinguir entre la cabecera propiamente dicha de un archivo (el que meten los copiones para saber el mapa de memoria para ese cartucho) y la "cabecera" de la que hablamos aquí, que no es una cabecera realmente, sino una sección de datos dentro del resto del código del juego. Es que "cabecera" implica que está al principio o en cabeza de algo, y esta sección de datos está en el final del primer banco de código.
magno escribió:
kappa64 escribió:Teniendo en cuenta que en función de que el Rom sea Hi o Low el header tiene una dirección diferente dentro del archivo ROM como se puede distinguir entre uno y otro sin tener que leer la cabecera? había pensado en cuando sobrepasan determinado tamaño son HiROM pero veo juegos como el Super Metroid que ocupa 3 megabytes y es del tipo LowROM , como los distinguen los programas como los emuladores o el Snestool por ejemplo?


Por el tamaño no se puede haber: cualquier tamaño es posible en ambos casos.
Si no quieres leer la cabecera (que sería lo más fácil, ya que lleva un checksum para que sepas inequívocamente que estás leyendo dicha cabecera), sólo puedes saberlo de una forma: mirando el código ejecutable del juego y comprobando a qué banco se salta en un JSL o JML. Ten en cuenta que una SNES no sabe nunca si está ejecutando una LoROM o una HiROM: el micro se limita a ejecutar instrucciones que le dicen ir a un banco o a otro, y el único concimiento que tiene es si es FastROM (sólo para HiROMs) o SlowROM (tanto en LoROM como en HiROM).

Los emuladores lo saben de dos formas: por una lista de compatiblidades que además le dice si es LoROM o HiROM, y porque comprueban la cabecera para saber lo que son.

Por cierto, estaría bien distinguir entre la cabecera propiamente dicha de un archivo (el que meten los copiones para saber el mapa de memoria para ese cartucho) y la "cabecera" de la que hablamos aquí, que no es una cabecera realmente, sino una sección de datos dentro del resto del código del juego. Es que "cabecera" implica que está al principio o en cabeza de algo, y esta sección de datos está en el final del primer banco de código.


OK , gracias
2 respuestas