The cracked French version crashes soon after the prince enters swordfight.
That's because someone overwrote some bytes at offsets 0x043D1..0x043D5 with 0x90.
That might have a more meaningful effect in some other version, but I couldn't find out which.
(I've mentioned this
here.)
Norbert wrote: ↑January 14th, 2020, 1:43 am
Is this a known thing, that the French version has no cheats?
I wanted to say that I don't remember this, but a quick search shows that I posted about it before:
viewtopic.php?p=17848#p17848
Basically, the French version has a new variable whose value must be 1, or else the cheats are not enabled by megahit.
This variable has the initial value 2 and nothing writes to it.
I guess the developers changed it to 1 in the source whenever they wanted to test something using cheats, and changed it back to 2 afterwards.
Code: Select all
seg000:0179 B8 7D 00 mov ax, offset aMegahit ; "megahit"
seg000:017C 50 push ax
seg000:017D 9A 5A 0E 84 1C call check_param
seg000:0182 0B C0 or ax, ax
seg000:0184 74 0C jz loc_10192
seg000:0186 83 3E 2A 08 01 cmp cheats_allowed?, 1
seg000:018B 75 05 jnz loc_10192
seg000:018D B8 01 00 mov ax, 1
seg000:0190 EB 02 jmp short loc_10194
seg000:0192 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
seg000:0192
seg000:0192 loc_10192:
seg000:0192
seg000:0192 2B C0 sub ax, ax
seg000:0194
seg000:0194 loc_10194:
seg000:0194 A3 9C 00 mov cheats_enabled, ax
Norbert wrote: ↑January 14th, 2020, 1:43 am
The cracked French version has hex "1D DD 1D DE 1D DF 1D E0 1D" at the end, for some reason. And it changed some other things unknown to me.
Here are all the changes I could find:
offsets 0x00002..0x00003: A size-related field in the MZ header. It was changed to reflect the new size of the EXE.
offsets 0x00012..0x00013: Checksum field in the MZ header. It's 0 in all official PRINCE.EXEs.
I wonder why did someone bother to change the these fields. Maybe they used a hex-editor which automatically recalculates MZ header fields?
offsets 0x04D31..0x043D5: See the beginning of my post.
offsets 0x1AE69..0x1AE6A: Level where the potions level should appear.
offsets 0x1B587..0x1B678: Copy protection codes (page-line-word). The codes in the cracked version don't match the only French manual I could find. (I've mentioned this
here.)
offsets 0x1DDB7..0x1DDBF (new bytes): No idea why were they added. They probably don't have any effect on the game.