Posted By
Csabo on 2003-01-16
| Oblido Bug Found
After all this time, the Oblido saga reached its final chapter... Well, anyway I finally found the bug in Oblido, and yes, it is a human error, a real bug. The game constantly checks whether the houses are full. To do that, it has to know the screen coordinates of each house, those are all correct. However, besides the coordinates, it also has to know the layout of the house. This is solved by using three separate routines. One routine ($2372) checks for a 3 by 3 house, the second ($2340) checks for a 4 by 3 house and the last one ($2363) checks a 3 by 4 house. (Like that blue house in question on the 4th level.)
That's where the bug is. The routine responsible for checking that blue house is at $26E5, and it is the 'last' house from the game's point of view. Well, it uses the JSR $2340 call... 4 by 3 layout, which is impossible on that screen (because of the wall). Yes, it should be JSR $2363. So to fix up the game (works in emus or on the real machine):
Reset, Monitor (return), then >26F6 63 (return), then G1068 to restart. That's it. One byte changed, and the game works fine, you can finish the 4th level and it does restart from level one.
One more thing: I have finally created a 'start from any level' cheat for this game. It was a bit difficult, because the game does some initializations only on level 1, but I figured out a way of doing it by changing only 5 consecutive bytes. Anyway:
Reset, Monitor, >131F 20 32 3D A9 00 (return), then >3F8 X where X is the starting level (0-3), then G1068 to restart. Happy crushing!
|