Hola, mundo (por enésima vez)
Desde hace un par de años me he dedicado, como algunos sabeis, a convertir
todos los juegos de cinta/disco habidos y por haber a formato .ROM ¿Por
qué? Pues porque así todos son cargables
desde el menú del LOADROM, y la compatibilidad en todas, repito TODAS las
máquinas está garantizada.
Así mismo, estoy colaborando con Manuel Soler en su base de datos, y alguna
vez hemos comentado que sería interesante si
hubiese algún programa tipo "Cheat Machine", que, cogiendo las
descripciones de un fichero, pudiera parchear esos juegos para hacerles de
todo tipo de cambios o ayudas.
Hace un par de años que inventé un formato diseñado para ser
reconocible por un futuro cheater. El programa en cuestión lo comencé pero
lo dejé por falta de tiempo, aunque el formato
está creado, así como unos 200 juegos en ROM descritos según este formato.
¿Os atreveríais alguien a crear el programa basándose en el el formato este?
El formato es tal que así:
{FILENAME DSC:'Descripción del .ROM'
<datos>
}
Los <datos> pueden ser de dos tipos: comandos o preguntas.
Los tipos de comandos son los siquientes:
-Escribir en una posición de memoria (y en las siguientes):
#dddd nn [nn ..]
Donde, #dddd es la dirección de inicio, y nn el valor a escribir
en esa dirección. (siempre en HEX)
nn también puede ser un nombre de variable (v0-v9) y se pueden
añadir operaciones aritméticas simples como v0+01, v1-09, etc.
-Rellenar una zona con un valor:
F:#dddd,#nnnn,vv
que significa algo así como que, a partir de la dirección
#dddd, rellena #nnnn bytes con el valor vv.
-Sustitución de cadenas:
S:#<cadena1>,#<cadena2>
donde, cadena1 es la cadena a buscar y cadena2 la cadena a
escribir.
Ejemplo:
S:#3A02E03D3202E0,#3A02E0A73202E0
Si la cadena nueva es más corta que la original, se rellena
el resto con 0s.
Entrada de datos:
----------------
Hay dos tipos de preguntas: la numérica y la booleana.
La numérica comienza por un '?', mientras que la booleana
por dos '??'.
La numérica se limita a hacer un imput y almacenar el valor
en una variable (v0-v9, 10 disponibles).
Ejem.
? 'Numero de vidas',v0
? 'Stage inicial',v1
Las de tipo booleano, sólo dejan como respuesta Sí o No,
y si es afirmativo, siempre ejecutan todas las intrucciones
que vayan tras la pregunta, hasta encontrar un nuevo
símbolo de pregunta '?' o de final de ficha '}'
Ejemplo:
?? 'Quieres inmortalidad?'
#495B C9
Ejemplos reales:
{ANAZA DSC:'Anaza'
? 'Energy',v0
#0B0F v0
? 'Max. Energy',v1
#0057 v1
#0B39 v1
?? 'Unlimited energy'
#1F2D 00
}
{ARAMO DSC:'Aramo'
? 'Monsters level',v0
#13A9 v0
? 'Max Hit Point',v1
#1388 v1
? 'Hit Point',v2
#137E v2
? 'STR',v3
#1383 v3
? 'EXP',v4
#7000 3E v4 32 1C C0 C9
#1394 CD 00 B0 AF
?? 'Unlimited Hit Point'
#1166 00 00
#3382 00
}
{BOUKEN DSC:'Bohken Roman'
? 'Life',v0
? 'Energy',v1
#0004 3E v1 32 71 E4 3E v0 32 72 E4 AF C9
#00DA CD 04 40 00 00 00
}
{BOMBSPC DSC:'Bomberman Special'
? 'Speed',v0
#038F 3E v0 00
? 'Time',v1
#00E5 v1
? 'Power',v2
#005A CD 20 98
#5820 3E v2 32 15 D0 AF C9
? 'Number of bombs',v3
#0061 CD 00 98
#5800 3E v3 32 14 D0 3E 01 C9
? 'Round',v4
#003F CD 10 98
#5810 3E v4-01 32 1D D0 AF C9
?? 'Detonation at Z key'
#06F8 3E 01 00
#18D7 3E 01 00
?? 'Unlimited lives'
#05C9 A7
}
{DEEPFORE DSC:'Deep Forest'
?? 'Immortal'
F:#0300,#0100 C9
}
{RC-762 DSC:'Kontra'
? 'Lives',v0
#0260 v0
? 'Energy',v1
#0265 v1
?? 'Unlimited lives'
#023D 00
#0CE0 00
#6F34 00
?? 'Unlimited energy'
S:3AC9E2,003E10
}
Bueno ..... a ver quién se anima a echar una mano con el
proyecto :)
Un saludo,
Jose Angel Morente (msxjam(_en_)crosswinds(_punto_)net)
*MSX DREAMS* (msxdreams(_en_)hotmail(_punto_)com)
¡Suscríbete a HispaMSX!
http://es.onelist.com/community/hispamsx
hispamsx-subscribe(_en_)onelist(_punto_)com
msxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsxmsx