Según tengo entendido esto lo hacen los programadores de demos
especialmente
,¿no?
Este truco estaba bien, pero daba bastantes quebraderos de cabeza. De hecho,
era más fácil hacer un monitor de estado aunque no tuvieses debugger y
sobreimponerlo en la ejecución. Yo tenía hecho uno con colorines para
indicar el estado de unas 40 posiciones de memoria, registros y alguna cosa
más. Visualmente es muy fácil usando este método ver problemas.
El sistema de dos monitores es muy bueno si programamos en las DirectX. De
hecho, te soluciona muy bien la papeleta. Pero en este caso programamos en
C++, con lo que la necesidad del debugger y el profiler se hace más acusada.
¿Mas que en ensamblador?
En el tema de la GFX9000 no puedo opinar porque no la tengo, pero en
principio no parece algo irresoluble. El problema es más de que lo
investiguen los que la tienen ;) . De todas formas, yo en asm no suelo usar
debuggers, sino que intercalo el código de control que necesito. Tampoco he
hecho rutinas muy complejas como para que necesiten depuración paso a paso.
Con un hardcopy basta ;) .
El principal problema que hay en el MSX para estas cosas es que los
registros del VDP son de solo escritura por lo que no puedes hacer lo
tipico de pulsar una tecla y activar el debuger y empezar la ejecucion
paso a paso, ya que entonces tienes que pisar todos los valores del VDP
(estoy suponiendo que hablamos de hacer juegos). Cuando estas haciendo un
juego (o por lo menos a mi me pasa) detectas el fallo viendo el juego, ese
paso que no deberia dar el personaje, ese patron corrupto etc... Irte al
debuger y no ejecutar un solo out (#99),a e imaginarte lo que esta
pasando, o ejecutar el programa e imaginar lo que esta haciendo el codigo
son soluciones muy malas, pero es lo que hay. Sin embargo si usamos el
GFX9000 tu programa puede tocar el VDP sin problemas porque el debuger
esta usando el otro VDP. Asi puedes ver que esta pasando en el juego y
cuando se produce el fallo empezar a depurar paso a paso mediante una
combinacion de teclas.
Lo que daríamos los de MSX por tener un Action Replay.... eso SI es una
maravilla!
Se podría hacer uno en MSX?
Hace tiempo Jose Angel y yo hablamos de la posibilidad de hacer uno, pero
nos encontramos con un enorme problema, en el bus no esta
disponible la señal NMI (aunque la BIOS tiene un gancho para esta
interrupcion, ¿eins?). Por lo que lo mas que se puede hacer en un MSX es
utilizar IM2 y asi evitamos que el programador coloque su vector de
interrupcion y no salte a nuestra rutina, peri si las interrupciones estan
desactivadas todo el invento se va a la mierda. Otra solucion es soldar
directamente un cable a la patilla NMI del z80 y problema resuelto.
Roberto.