Prince of Persia 1 EXE differences

Discuss PoP1 for DOS here.
Post Reply
David
The Prince of Persia
The Prince of Persia
Posts: 2850
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Prince of Persia 1 EXE differences

Post by David »

I compared the disassemblies of v1.0, v1.3 and v1.4.
Here is what I found.
I list only those things that have observable effects.
So, for example, I skipped things like procedures/variables in different order.

These are about the original, non-cracked versions.
So I didn't list the various differences and bugs in the cracks.


Load a saved game. Now the potions level starts. Press Ctrl-R, and complete level 1.
v1.0: You won't see the potions level now. It will appear only if you reach the level that was in the saved game.
v1.1, v1.3, v1.4: The potions level will appear.
Already mentioned here.

Cheats on the potions level: (including Shift-L)
v1.0: enabled
v1.1, v1.3, v1.4: disabled
Already mentioned here.
The behavior of v1.0 is mentioned here.

Drink a potion on the potions level. Note that the letter disappears.
Press Ctrl-R and start the potions level again.
v1.0: The letter at that place will not appear.
v1.1, v1.3, v1.4: All letters will appear correctly.
Already mentioned here.

Status text on potions level:
v1.0: "WORD %d LINE %d PAGE %d"
v1.1, v1.3, v1.4: "PAGE %d LINE %d WORD %d"
Mentioned here.

Number of points in "Loading...":
v1.0: 4
v1.1, v1.3, v1.4: 3

Guard skills:
v1.0: octal mistake
v1.1, v1.3, v1.4: as Apple II
See here for explanation.
(Okay, this is not as observable as the others...)

Index overflow / checkpoint bug.
If you break a loose floor from the rightmost tile of the ceiling, it will enable the checkpoint at the next time you restart the level.
v1.0: happens
v1.1, v1.3, v1.4: fixed
The bug itself was mentioned here.

"demo" command line parameter:
v1.0, v1.1: no
v1.3, v1.4: yes
Already mentioned here.

Quotes (in demo mode) are from:
v1.0, v1.1: Computer Entertainer, Computer Gaming World / Nibble
v1.3, v1.4: Computer Entertainer, Computer Gaming World / Game Players PC Strategy Guide, inCider/A+
Screenshots from v1.0

Cheat activation parameter:
v1.0, v1.1: megahit
v1.3, v1.4: improved
Already mentioned here.

Alternate level colors (green level 3):
v1.0, v1.1: no
v1.3, v1.4: yes
I think you already knew this.

Beep after "UNABLE TO SAVE":
To test: Make PRINCE.SAV read-only and press Ctrl+G.
v1.0, v1.1: yes
v1.3, v1.4: no

Wave format:
v1.0, v1.1: old
v1.3, v1.4: new
Already mentioned here.

Skeleton's sword (when falling):
A you may know, some images of the sword contain part of the hand.
Now, this looks silly with the skeleton, so the newer versions force the sword to be drawn all white.
But only if the skeleton is looking at the opposite direction as the prince.
v1.0, v1.1: no change
v1.3, v1.4: all white
skel.png
skel.png (2.21 KiB) Viewed 4788 times
Press Esc while a cutscene is playing.
v1.0, v1.1: GAME PAUSED
v1.3, v1.4: Cutscene is interrupted.

Run into spikes.
v1.0, v1.1: The "spikes come out" sound will play.
v1.3, v1.4: That sound will be interrupted with the "something spiked" sound.

"digi" command line parameter:
The digi option tells that if there is not enough memory to start with digital sounds, then don't even try to start without them.
v1.0, v1.1: no
v1.3, v1.4: yes
Already mentioned here.

After the demo quotes, the game tells how to purchase.
v1.0, v1.1: no
v1.3: yes
v1.4: no, but they left the texts in the EXE.

CONFIG.DAT/SETUP.DAT needed to start?
v1.0, v1.1: no
v1.3: CONFIG.DAT
v1.4: SETUP.DAT

MT32SND*.DAT (MIDI sound effects on AdLib and MT32)
v1.0, v1.1: no
v1.3: yes
v1.4: no
Here, KJV writes:
"the one that actually plays back FX samples, not the other with the broken config which does everything through OPL".
The latter might refer to this.
(OPL is the sound synthesis chip used in AdLib and Sound Blaster. It is usually used for playing MIDI sounds.)

Supported graphics modes:
v1.0, v1.1, v1.3: Hercules, CGA, EGA, Tandy, VGA
v1.4: VGA only
Mentioned for example here and here.

Joystick debug text:
v1.0, v1.1, v1.3: no
v1.4: yes (annoying)
Already mentioned here and here.

Sound drivers (*.DRV), PRESETS.DEF, and related error messages.
v1.0, v1.1, v1.3: no
v1.4: yes
In pcspeaker mode, there is a related bug here.

Order of demo quotes.
There are two screens of text, and the game chooses among them in the following way:
v1.0, v1.1, v1.3: alternating (1,2,1,2,...)
v1.4: randomly chosen

Potion codes.
v1.0: http://www.popuw.com/files/pop1manual.pdf
v1.1: http://www.popuw.com/files/pop1manualA_A_CPC_PCC.pdf
v1.3, v1.4: http://www.popuw.com/files/pop1manualbw.pdf
Mentioned for example here.

Supported sound cards:
I did not really look into this. The related command line parameters are listed here.
It seems to me that "midi" refers to the MT32.

There are some more differences that I don't fully understand yet.
User avatar
doppelganger
Vizier
Vizier
Posts: 119
Joined: April 24th, 2015, 9:04 am
Location: India

Re: Prince of Persia 1 EXE differences

Post by doppelganger »

I think v1.4 supports less sound cards than v1.3
Doppelgänger
Hmm.. These mortals know about me.. :evil:

Download 'Hell of A Palace' now from Popot!
User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 5746
Joined: April 9th, 2009, 10:58 pm

Re: Prince of Persia 1 EXE differences

Post by Norbert »

David wrote:Quotes (in demo mode) are from:
v1.0, v1.1: Computer Entertainer, Computer Gaming World / Nibble
v1.3, v1.4: Computer Entertainer, Computer Gaming World / Game Players PC Strategy Guide, inCider/A+
Screenshots from v1.0

[...]

After the demo quotes, the game tells how to purchase.
v1.0, v1.1: no
v1.3: yes
v1.4: no, but they left the texts in the EXE.

[...]

Order of demo quotes.
There are two screens of text, and the game chooses among them in the following way:
v1.0, v1.1, v1.3: alternating (1,2,1,2,...)
v1.4: randomly chosen
Looks like they also slightly changed the starting position of the "Computer Gaming World" text.

Image
(image mirror)

The other demo text you mentioned:

Image
(image mirror)
Andrew
Wise Scribe
Wise Scribe
Posts: 313
Joined: July 16th, 2009, 4:39 pm

Re: Prince of Persia 1 EXE differences

Post by Andrew »

Excellent summary David, that we can add to as we discover stuff, and this topic will also act as sort of an index to the other linked ones. Perhaps this should be stickied?
David wrote:MT32SND*.DAT (MIDI sound effects on AdLib and MT32)
v1.0, v1.1: no
v1.3: yes
v1.4: no
Here, KJV writes:
"the one that actually plays back FX samples, not the other with the broken config which does everything through OPL".
The latter might refer to this.
(OPL is the sound synthesis chip used in AdLib and Sound Blaster. It is usually used for playing MIDI sounds.)
Ah, so that's what KJV meant. When he wrote, "There's a couple reasons why you'd want to stick to good ole' v1.3 (the one that actually plays back FX samples, not the other with the broken config which does everything through OPL)", it seemed as if he was referring to two versions of 1.3 - one broken and the other ok. Sure confused the heck out of me! Couldn't he have been clear and written, "There's a couple reasons why you'd want to stick to good ole' v1.3 (the one that actually plays back FX samples, not 1.4 with the broken config which does everything through OPL)" instead? :roll:

Also note RusFan's comment here:
RusFan wrote:As to PoP1 you can play music through MT-32 device too but only in v.1.3, in v.1.4 support of MT-32 was removed and as I said before in this version you can use General MIDI device instead, with drivers from PoP2 (you need only MMPU401.DRV file, PRESET40.DEF is not required).
I think your post here is the definitive one: viewtopic.php?f=67&t=3608
David wrote:Supported sound cards:
I did not really look into this. The related command line parameters are listed here.
It seems to me that "midi" refers to the MT32.
Yes, in my local copy of the params table I've mentioned midi as referring to the Roland MT-32/CM-32L/LAPC-1. Speaking of sound cards, did you read my query about the gblast param in 1.3 here?
David wrote:There are some more differences that I don't fully understand yet.
For example?
David
The Prince of Persia
The Prince of Persia
Posts: 2850
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Prince of Persia 1 EXE differences

Post by David »

Andrew wrote: Ah, so that's what KJV meant. When he wrote, "There's a couple reasons why you'd want to stick to good ole' v1.3 (the one that actually plays back FX samples, not the other with the broken config which does everything through OPL)", it seemed as if he was referring to two versions of 1.3 - one broken and the other ok. Sure confused the heck out of me! Couldn't he have been clear and written, "There's a couple reasons why you'd want to stick to good ole' v1.3 (the one that actually plays back FX samples, not 1.4 with the broken config which does everything through OPL)" instead? :roll:
I don't think so.
I think that "does everything through OPL" means the Adlib or MT32 configuration of 1.3.
Andrew wrote:
David wrote:There are some more differences that I don't fully understand yet.
For example?
Maybe it's better to say that I didn't verify their effect yet.
* In animate_leveldoor() they removed an use_digi check. (1.3)
* In pv_scene() they added a "test sound_flags,sfDigi + jz" before the gate closing sound. (1.3)
* show_hof() does something with ticks/minutes. (1.4)

Code: Select all

seg001:0E38 83 BC 77 58 00                       cmp     hof_min[si], 0
seg001:0E3D 75 0C                                jnz     loc_32CB
seg001:0E3F C7 84 77 58 01 00                    mov     hof_min[si], 1
seg001:0E45 C7 84 79 58 00 00                    mov     hof_tick[si], 0
seg001:0E4B                      loc_32CB:
I am planning to upload the new disassemblies.
Andrew wrote: Speaking of sound cards, did you read my query about the gblast param in 1.3 here?
I did.
There is a check_param call with "gblast" as parameter.
And I see some procedure that is used in gblast mode only. (I called it process_midi_message_gblast.)
Andrew
Wise Scribe
Wise Scribe
Posts: 313
Joined: July 16th, 2009, 4:39 pm

Re: Prince of Persia 1 EXE differences

Post by Andrew »

David wrote:There is a check_param call with "gblast" as parameter.
And I see some procedure that is used in gblast mode only. (I called it process_midi_message_gblast.)
I've replied on the original thread.
David
The Prince of Persia
The Prince of Persia
Posts: 2850
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Prince of Persia 1 EXE differences

Post by David »

I found some more things:

* In v1.4, in demo mode, PC speaker sounds are not loaded.

* In v1.0 French, cheat mode (megahit) is disabled.
To enable: Find the word "Nibble". Go forward until the next 02 byte. Change it to 01.

* By the way, v1.0 French is more similar to v1.1 EN than v1.0 EN.
For example, everything related to the potions level is as in v1.1 EN (except the codes).

* v1.1 German seems to match v1.1 EN. (Except for the texts and the potion codes.)
David
The Prince of Persia
The Prince of Persia
Posts: 2850
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Prince of Persia 1 EXE differences

Post by David »

David wrote: * show_hof() does something with ticks/minutes. (1.4)
Complete the game with no time left. ("TIME HAS EXPIRED!")
In the Hall of Fame, v1.4 will correctly show 0:00.
All other versions will show -1:59.
David
The Prince of Persia
The Prince of Persia
Posts: 2850
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Prince of Persia 1 EXE differences

Post by David »

* In 1.3 and later the priority of sword cling was moved below hit_user/hit_guard.
Already mentioned here: viewtopic.php?p=17969#p17969

* Start the game in DOSBox and click into the window.
1.0, 1.1: The mouse is captured.
1.3, 1.4: The mouse is not captured.
Andrew
Wise Scribe
Wise Scribe
Posts: 313
Joined: July 16th, 2009, 4:39 pm

Re: Prince of Persia 1 EXE differences

Post by Andrew »

David wrote:* Start the game in DOSBox and click into the window.
1.0, 1.1: The mouse is captured.
1.3, 1.4: The mouse is not captured.
I'm having a hard time understanding how this could be the 'fault' of the later versions (or the earlier ones depending on which behavior one prefers). How are the games interfering with DOSBox's ability to capture the cursor?
David
The Prince of Persia
The Prince of Persia
Posts: 2850
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Prince of Persia 1 EXE differences

Post by David »

1.0 contains some code that calls the mouse driver (int 33h).
1.3 and 1.4 don't have that.
It seems that DOSBox takes this as an indication that the game uses the mouse, and thus enables capture-on-click.
Andrew
Wise Scribe
Wise Scribe
Posts: 313
Joined: July 16th, 2009, 4:39 pm

Re: Prince of Persia 1 EXE differences

Post by Andrew »

David wrote:1.0 contains some code that calls the mouse driver (int 33h).
So what do 1.0 and 1.1 do with the mouse-related code? Is it just some sort of stub indicating mouse support that was perhaps planned and then dropped?
David
The Prince of Persia
The Prince of Persia
Posts: 2850
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Prince of Persia 1 EXE differences

Post by David »

Andrew wrote:Is it just some sort of stub indicating mouse support that was perhaps planned and then dropped?
It seems so.
Or maybe it was not even planned, and it's just part of the graphics library that they used.

Alternatively...
Dev 1: Hey, do we need mouse for this game?
Dev 2: Of course, it appears on level 8!
Dev 1: Okay...

Or maybe not. ;)
Andrew
Wise Scribe
Wise Scribe
Posts: 313
Joined: July 16th, 2009, 4:39 pm

Re: Prince of Persia 1 EXE differences

Post by Andrew »

David wrote:Alternatively...
Dev 1: Hey, do we need mouse for this game?
Dev 2: Of course, it appears on level 8!
Dev 1: Okay...

Or maybe not. ;)
That one really deserves a warning sign before it! :lol:

Image
Post Reply