lunes, 13 de marzo de 2017

Nuevo Parcheo: Milk Race

Este nuevo parcheo ha sido un poco más fácil.
También requerido por Araubi, que se ha dado cuenta del fallo, y me ha podido enviar un STA del juego antes de colgarse.

Lo que ocurría es que al llegar cierto momento del juego, se colgaba.
Revisando el código, me dí cuenta que el juego se quedaba parado en unos HALT por algún motivo. (Lo normal es que esto ocurra cuando están las interrupciones deshabilitadas, pero en esta ocasión ocurre con ellas habilitadas también).
Al perder el juego y mostrar el mensaje de GAME OVER también ocurría.
He parcheado para eliminar estos HALT conflictivos.
Las rutinas que controlan los slots no cumplen todos los requisitos de compatibilidad, pero por lo menos el juego se puede acabar en un MSX1.

Milk Race

Nuevo Parcheo: Mortadelo y Filemón

Bueno, otra "obra titánica" de la ingeniería, y una vez más gracias a los "genios de XORTRAPA" como dije con el Alien Syndrome.

También de nuevo, como con el Double Dragon y el Alien Syndrome, este CAS que ahora podéis "disfrutar" no habría sido posible sino fuera por las pruebas que Araubi ha realizado.

Bueno, empiezo con todos los problemas:
1.- Comienzo por lo que llevó a Araubi a ponerse en contacto conmigo y que nos dio algún que otro dolor de cabeza. El juego, una vez se llega a la Guardería, se corrompían los gráficos y después el juego iba mal completamente. El problema era que accedía a una posición de memoria "complicada" como es FFF0h hasta FFFFh, pero no contentos con ello, se olvidaron de poner aquí lo que debería ir, que eran las posiciones de los niños espectadores. Por lo tanto, el juego lee posiciones "falsas" y coloca a los niños fuera de la pantalla, produciendo los errores que después quedan en la VRAM. He cogido las posiciones "correctas" de la versión Spectrum y relocalizados los bytes que controlan las posiciones de los niños en otra parte de la memoria.
2.- Situación idéntica al Double Dragon y al Alien Syndrome con los puertos del ordenador. Dejaron OUT (FEh) usados para leer el teclado. Esto producía cuelgues varios, sobre todo en ordenadores MSX2 o superiores.
3.- Esta vez se han lucido todavía más, y a parte de los OUT(FEh), han dejado multitud de IN a,(FEh) que se usaban para detectar pulsaciones de teclas, etc... al dejarlos, en ciertas ocasiones, provocan bucles infinitos. Borrados todos (muchos).
4.- Algún acceso a la VRAM, no cumplía los requisitos de dejar ciclos de Z80 entre los accesos al VDP.
5.- Las listas de objetos (como todas las variables del juego) solapan parte del código. En concreto la parte del menú principal (por eso no se puede volver al menú principal al perder las vidas). Reubicado a una zona "no peligrosa", ya que provocaba errores como problemas con los disfraces.
6.- Modificados los valores para las listas de objetos. Aunque el espacio de las listas de objetos eran de 6 artículos, el juego sólo permitía 3. Cambiado a 6 artículos.
7.- El mapa de los alcantarillados estaba mal y causaba que en ciertas circunstancias se quedara en un bucle infinito. Cogido el mapa de la versión de Spectrum.
8.- Modificados algunos puntos en la presentación que se mostraban transparentes, cuando deberían ser negros.
9.- Cambiados varios textos erróneos, como JOISTICK.
10.- Cambiado el mensaje al perder las vidas de (Y/N) a (S/N) y cambiadas las teclas.
11.- Después de escoger N en este mensaje final, saltaba a una dirección errónea que provocaba un cuelgue o algo inesperado. La solución, ya que no se puede volver al menú principal sin reubicar todas las variables, se queda en un bucle infinito.
12.- Cambiado el texto "5nchufe" por "5 enchufe". Este es un error que también está en la versión Spectrum.
13.- Añadida versión de CAS para controlar con cursores.

Los controles, a parte de los cursores o QAOP y espacio son:
D:   Lista de disfraces
T:    Lista de herramientas
E:    Lista de "otros"

Revisando el código, también me he encontrado con varias teclas a las que no se hace mención en las instrucciones:
K    Activa o desactiva un truco. Con el espacio nos permite matar a las ratas en las alcantarillas.
I      Activa o desactiva los mensaje de Ibañez.

Mortadelo y Filemon (Cursores)

Mortadelo y Filemon (QAOP)