VOGONS


First post, by taiken7

User metadata
Rank Member
Rank
Member

It appears the game enters an infinite loop ..
To help it along, after firing up a copy;
Wait until the screen is dark..
Wait some more..

then press "-" ; debug mode, switch across to the debugger window
press ENTER ; a prompt "->" appears about mid-screen then enter:
SM ES:[0002] 18
press F5 and it continues to load!

Note that this doesnt quite "fix" the game .. it still doesnt seem playable.

Reply 1 of 4, by Fizzban

User metadata
Rank Newbie
Rank
Newbie

Reason why the game is stuck:

The Video BIOS ROM (located at c000:0000) is supposed to start with EE AA followed by one byte that stores the size of the ROM (in 512 bytes-blocks). This third byte is [es]:0002 in above case.

So what the game does: It tries to find out how big the ROM (and therefor the shadowed RAM area) is so it can use the RAM area right behind.

However, DOSBOX only writes EE AA but does not specifies the size. This breaks that part of the game.

The attached diff will change the Video BIOS such it specifies 32KB as size (the default). After applying that patch, the game will no longer be stuck.

Attachments

  • Filename
    int10_memory.cpp.diff.txt
    File size
    565 Bytes
    Downloads
    188 downloads
    File comment
    Diff to current CVS
    File license
    Fair use/fair dealing exception

Reply 2 of 4, by Fizzban

User metadata
Rank Newbie
Rank
Newbie

Here's a way to run the game properly: As soon as the level starts, enter debug mode, then enter the command

SM 9a:62c8 50

After you have done that, you can jump, attack etc. without crashes.

I am not sure why the game changes the code in the first place. It seems like Prehistorik 2 believes that we are running a debugger (it messes around with int3) and wants to punish us for that..

Reply 3 of 4, by taiken7

User metadata
Rank Member
Rank
Member

Excellent work Fizzban, you also raise a valid point -
most forms of sophisticated game protection will
mess with INT1/3; the fact that dosbox responds
as a debugger to these may trigger alternative
codepaths designed to thwart reverse engineering.

Reply 4 of 4, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

heavydebug routines shouldn't be detectable as dosbox doesn't need to insert int 3 then

Water flows down the stream
How to ask questions the smart way!