NagyD / SDLPoP

An open-source port of Prince of Persia, based on the disassembly of the DOS version.
GNU General Public License v3.0
1.1k stars 141 forks source link

Keep disappearing guard logic for super high jump consistent #298

Closed dstarosta closed 1 year ago

dstarosta commented 1 year ago

with the stand-alone option.

Fixed a super high jump issue where prince starts falling too soon after grabbing a tile with shift and hanging while facing to the right.

NagyD commented 1 year ago

Sorry, does "row 1" mean the top row or the middle row?

When I super-jump up from the top row with this fix, the guard disappears. Even FIX_DISAPPEARING_GUARD_B doesn't help. FIX_DISAPPEARING_GUARD_A fixes the disappearing, though.

Without your fix, however, both FIX_DISAPPEARING_GUARD_A and FIX_DISAPPEARING_GUARD_B works as expected.

dstarosta commented 1 year ago

Row 1 means the middle row. Here is what happens without the fix. The "exit_room" function gets called but the room does not actually switch. https://youtu.be/gSAfsjZqb1o

I do not understand the issue with the row 0. The room changes to the room above and then back to the room below so the guard appears again.

NagyD commented 1 year ago

I do not understand the issue with the row 0. The room changes to the room above and then back to the room below so the guard appears again.

Sorry, I was somehow assuming that this is for the case when the room is linked to itself at the top and the bottom.

Row 1 means the middle row. Here is what happens without the fix. https://youtu.be/gSAfsjZqb1o

I can't seem to reproduce the disappearing guard. For testing, I have edited room 14 of level 10 to have an open ceiling on the left, like in the video, then I press Shift+W and jump up from the middle row. The prince almost touches the top of the screen, but the guard does not disappear.

I am using the latest SDLPoP on master, commit 88c65dc172dc0b7498726e3f0ecd9ac37d7cc2b0, without any changes (other than enabling enhanced mode in the settings).

What are we doing differently?

dstarosta commented 1 year ago

The fix used to be here. https://github.com/NagyD/SDLPoP/blob/834ebf3453daafe8d5b674c6d13a9807a451f6c0/src/seg002.c#L275

I just made it more consistent with your FIX_DISAPPEARING_GUARD_A fix.

NagyD commented 1 year ago

Oh, now I understand.

Indeed, if I remove the fix from the old place then the bug appears.

Merging this.