Hola a todos!
Recientemente, mientras desarrollaba una de las proxima entrada de Karoshi
Corp para MSXdev'05, tuve que enfrentarme a un error absurdo, indetectable.
El juego funcionaba perfectamente en ordenadores MSX2/MSX2+/Turbo-R y en
emuladores, pero al ejecutarlo en un MSX1, los graficos se corrompian.
Repase linea por linea todo el codigo, intente distintas soluciones y
aproximaciones, y nada funcionaba bien: el problema persistia.
Entonces descubri que dejaba reseteado (valor 0) el bit mas alto del
registro 1 del VDP, lo que se supone que no tiene ningun efecto en los
ordenadores MSX (segun toda la documentacion disponible sobre el MSX que he
conseguido consultar). El significado de este bit, segun la documentacion de
Texas Instruments, es el siguiente:
0- solo 4 KB de VRAM instalados
1- 8/16 KB de VRAM instalados
Como en el MSX siempre hay, como minimo, 16 KB de VRAM, no deberia haber
ningun problema. Sin embargo, este bit si que tiene efectos, al contrario de
lo que dice la documentacion sobre el MSX. En los ordenadores de siguientes
generaciones, que utilizan chips Yamaha V9938 y V9958, no hay problemas, y
el bit es ignorado. Sin embargo, en los MSX1, el bit es tenido en cuenta y
cambia de algun modo la conducta del procesador de video. Alguien tiene
alguna pista sobre el fenomeno en si? Esta informacion seria util para
perfeccionar los emuladores disponibles, que no recogen este efecto. Ideas?
Sugerencias?
Parece que cambie la forma de interpretar las direcciones que se pasan al
VDP, y que haya algun cambio cuando se atiende a la interrupcion V-blank.
Pero no tengo ni idea de lo que pasa! NO LO ENTIENDO. Por eso os pido ayuda.
Gracias por adelantado.
Un saludo,
Edu Robsy