Ramones, no estoy de acuerdo contigo con que hacer un cargador superinteligente sea MUCHO CURRO, porque yo diría que es sencillamente ¡Imposible!, y es que no es viable computacionalmente analizar y parchear una ROM en el 100% de los casos con el 100% de efectividad, y para los casos en que se pueda hacer, los recursos propios de un MSX se quedan más que cortos.
Estamos parcialmente de acuerdo. Analizarlo en tiempo real, es decir, hacer un
programa genérico es imposible. Pero como imposible no hay nada, ya daba la
solución para que sea "posible".
Pensad, que ni siquiera es nada trivial, ni siempre resoluble, hacer un algoritmo que dado un programa distinga sin dudas que es datos y que es código, cómo para ponerse además a parchear cada caso particular para cada uno de las posibles soluciones en canto a la distribución de la memoria... Como mucho, se podría hacer una ROM 'loader friendly', estableciendo unas reglas o rutinas estandarizadas para la búsqueda y selección de slots, o que metamos marcas en el código para que el loader sepa qué hacer...
A veces lo más simple es lo más efectivo.
Os liais mucho a veces cuando la
solución está delante de nuestros morros.
La solución que proponía, y que *ya es funcional en el OPF (cargador de Roms en
la MegaFlashRom de Pazos), que YA es funcional en el openMSX, y que será
funcional en un cargador de RAM es tan sencillo como tener una BASE DE DATOS.
Algo tan sencillo como leer, por ejemplo los 256 primeros bytes del programa a
cargar, hacer un CRC sencillito (lo tengo hecho) y averiguar si es un juego
"parcheable". Una vez que tienes el juego que es APLICAS el parche
correspondiente al cargarlo. Y eso implica MUCHO CURRO. Y a eso me refería. Que
primero has de saber por qué falla, luego saber arreglarlo (desensambla y
parchea cuando no vas a tener los fuentes), aplicar el cambio y cargar. Y esto
lo multiplicas por cada juego que quieras.
Ya te digo, el propio openMSX lo hace para detectar el mapper de la Rom que
cargas. Lo cual es lo mejor porque es 100% seguro, y no como los programas que
intentan "detectar" el mapper (cómodo para el usuario) que pueden fallar.
Pero como dice SapphiRe, sería mucho más sencillo tener cuidado a la hora de programar la ROM, o incluso seguiría siendo más sencllo preparar dos versiones del mismo juego, una pensada para ROM y otra para RAM que dejar la responsabilidad en un cargardor.
Saludos
Esto no se le puede obligar a nadie. Si alguien hace un juego y el formato es en
ROM, normativa del concurso, ha de pensar que funciona así. Los "dulces" se
pueden hacer... como comenta Fernando, algunos problemas se solucionan de una
manera sencillísima con un mínimo código extra. Otros problemas pueden ocasionar
al programador/es/a/as un quebradero de cabeza y complicar su programa con
extras que se salen de la base: el juego.
Aún así, y como esto va con cada persona, yo lo que he hecho en 8/16/32/48k
siempre ha funcionado en Ram, sencillamente para facilitar los testeos y no
tener que estar continuamente grabandolo en una flash.
En fin, que si alguien se anima a hacer un cargador en Ram de juegos de 8-48k
(como el ODO, ExecRom) y que analice los juegos parcheándolos bien, pues que lo
hagan que saldremos todos beneficiados.
A mi no me mireis.