Page 4 of 6

Re: CusPop TODO list

Posted: August 13th, 2016, 11:11 am
by David
"level 1 crouching start" seems to work for me...
Note that it also changes the level of the "closing gate" special event.

"level 1 music", however, has two problems in its current form:
(See the end of the post for a hack that seems to work!)

1. The current hack changes only this part: [1]

Code: Select all

seg005:02EB 83 3E AA 4C 00                       cmp     need_level1_music, 0
seg005:02F0 74 30                                jz      loc_6102
seg005:02F2 83 3E 9E 0F 01                       cmp     current_level, 1 ; Special event: music when crouching
seg005:02F7 75 29                                jnz     loc_6102
SDLPoP: if (need_level1_music != 0 && current_level == 1) {

But the level number in this part should also be changed: [2]

Code: Select all

seg003:0041 83 7E 06 01                          cmp     [bp+level], 1 ; <-- here
seg003:0045 75 05                                jnz     loc_483C
seg003:0047 B8 01 00                             mov     ax, 1
seg003:004A EB 02                                jmp     short loc_483E
seg003:004C                      loc_483C:
seg003:004C 2B C0                                sub     ax, ax
seg003:004E                      loc_483E:
seg003:004E A3 AA 4C                             mov     need_level1_music, ax
SDLPoP: need_level1_music = (level == 1);

2. But even then, the music plays only if I start the game directly on the new level, using megahit.
That's because [2] is in init_game(), instead of play_level().
[Note: In the original game, the music plays only of you start directly on level 1, but not if you shift+L there from level 14.]

How to solve this?
The easiest way I found is to force the need_level1_music variable to be 1 always.
(We can do this without the danger of getting music on the wrong level, because the level number is re-checked in [1].)
That is: In [2], instead of changing the level number, just replace jnz with 2*NOP.

So what you need to do is: (in addition to what CusPoP currently does)
Search: 83 7E 06 01 75 05
Change: 75 05 to 90 90

Re: CusPop TODO list

Posted: August 13th, 2016, 1:06 pm
by Dark77
Thank you! Now it all works. You were right, the crouching start setting works properly.

Re: CusPop TODO list

Posted: November 26th, 2016, 9:34 pm
by David
Another TODO item: Guard skills: viewtopic.php?p=19945#p19945

Re: CusPop TODO list

Posted: December 3rd, 2016, 10:35 am
by David
doppelganger wrote:I could swear I saw a '1 minute remaining' message somewhere... maybe in a port of the game?
Maybe on the SEGA Genesis? viewtopic.php?p=19994#p19994

Re: CusPop TODO list

Posted: December 3rd, 2016, 10:49 pm
by salvadorc17
David wrote:Another TODO item: Guard skills: viewtopic.php?p=19945#p19945
Guard skill should be configurable, does it not use the vales based on guard colors, some will have more skills than other..

Re: CusPop TODO list

Posted: December 14th, 2016, 10:10 am
by doppelganger
David wrote:
doppelganger wrote:I could swear I saw a '1 minute remaining' message somewhere... maybe in a port of the game?
Maybe on the SEGA Genesis? viewtopic.php?p=19994#p19994
Yep. The Sega Genesis.

Re: CusPop TODO list

Posted: August 17th, 2017, 8:47 pm
by theruler
I would add the possibility to enlarge the strings of "Folder Game messages" due to the fact other languages may need more room.

We've (me and user Micartu from Oldgamesitalia.net) custom translated POP1 into italian end actually enlarged the strings.
If you have plans to do this in cuspop?, I could provide the pointers, if you do not already have them yet. But I bet you have.

In pop1.3 we have 777 Bytes "free" (it reads "unused content for full version") at 0x01C964 to move the new translated text into.
Or 188 Bytes at 0x01DC4F or (have to test this location) 444 Bytes at 0x01EE3B

Sorry if it has been already discussed before.
Cheers

Re: CusPop TODO list

Posted: August 17th, 2017, 9:30 pm
by Norbert
theruler wrote:I've custom translated POP1 into italian [...]
Just to respond to this bit; I hope it's not too painful to read, but a solid Italian translation (section "Translated versions of Prince of Persia 1") may already exist.
Welcome to the Princed forum, by the way.

Re: CusPop TODO list

Posted: August 17th, 2017, 9:46 pm
by theruler
Thanks for the reply, I am already aware of that version.
The aim was to translate the 1.3 version and enlarge the text strings. I personally don't like truncated text.

Any plan to let the user change the 40 Letters of the potion level at 0x01CDA2 (v1.3 unpacked)?
Useful for fan translated manuals.
I'll PM you the new tables for your copy protection codes pdf.

Re: CusPop TODO list

Posted: August 18th, 2017, 11:00 am
by David
Hello, theruler, and welcome to the forum!
theruler wrote: I would add the possibility to enlarge the strings of "Folder Game messages" due to the fact other languages may need more room.

We've (me and user Micartu from Oldgamesitalia.net) custom translated POP1 into italian end actually enlarged the strings.
If you have plans to do this in cuspop?, I could provide the pointers, if you do not already have them yet. But I bet you have.
Well, we have some disassemblies of PoP1 here: viewtopic.php?f=68&t=3423
With them, it's possible to find out where are the offsets of the texts used.
However, CusPoP currently does not have the ability to write texts at non-fixed offsets.
theruler wrote: In pop1.3 we have 777 Bytes "free" (it reads "unused content for full version") at 0x01C964 to move the new translated text into.
Or 188 Bytes at 0x01DC4F or (have to test this location) 444 Bytes at 0x01EE3B
Just for clarity, these offsets are for the unpacked v1.3.

The beginning of dseg (data segment) in the disassembly is 0x1C370 in the EXE.
The contents of the mentioned offsets are:
0x01C964..0x01CC6D: (dseg:05F4..08FD) Review quotes and how to purchase. Usable.
0x01DC4F..0x01DD0B: (dseg:18DF..199B) kid_is_unpack_tbl -- This area is overwritten on startup. Not usable.
0x01EE3B..0x01EFF7: (dseg:2ACB..2C87) global_xlat_tbl -- Only the preceding 0x40 bytes are used, and only in CGA mode. Usable.
theruler wrote: Any plan to let the user change the 40 Letters of the potion level at 0x01CDA2 (v1.3 unpacked)?
Useful for fan translated manuals.
Why don't just disable the potions level altogether?

Re: CusPop TODO list

Posted: August 18th, 2017, 6:41 pm
by theruler
David wrote:Hello, theruler, and welcome to the forum!
Hallo, Thank you!
David wrote: Well, we have some disassemblies of PoP1 here: viewtopic.php?f=68&t=3423
With them, it's possible to find out where are the offsets of the texts used.
However, CusPoP currently does not have the ability to write texts at non-fixed offsets.
ah, bummer.
I saw the disassembled too late. I've had just found the pointers via hex editor

David wrote: Just for clarity, these offsets are for the unpacked v1.3.

The beginning of dseg (data segment) in the disassembly is 0x1C370 in the EXE.
The contents of the mentioned offsets are:
0x01C964..0x01CC6D: (dseg:05F4..08FD) Review quotes and how to purchase. Usable.
0x01DC4F..0x01DD0B: (dseg:18DF..199B) kid_is_unpack_tbl -- This area is overwritten on startup. Not usable.
0x01EE3B..0x01EFF7: (dseg:2ACB..2C87) global_xlat_tbl -- Only the preceding 0x40 bytes are used, and only in CGA mode. Usable.
Thanks for the advice.
David wrote: Why don't just disable the potions level altogether?
Cause I like it so much! It would be a waste to get rid of it and for completeness sake we decided to leave it as it was intended, in conjunction with the translated manual.
It should be easy to implement, isn't it?
As soon as we revised the manual we will provide the exact letter sequence, if you mind to add them to Norbert's pdf.

Re: CusPop TODO list

Posted: December 10th, 2017, 3:27 pm
by Norbert
The prince instantly dies if he hits anyone, used for Ghost of Persia.
David explained to me how to do this.

Offset 0x2B2F, change
01 75 14 83 3E 9E 0F 0C 75 0D 83 3E 4A 4C 00 74 06 A1 4A 4C
to
00 74 14 90 90 90 90 90 90 90 83 3E 4A 4C 00 74 06 B8 9C FF

Also, I changed the color of palace wall marks to white.
Offset 0x1b48, change
30 00 50 B8 26 00 50 B8 14
to
3F 00 50 B8 3F 00 50 B8 3F

Re: CusPop TODO list

Posted: February 11th, 2018, 11:36 am
by Norbert
David wrote: November 26th, 2016, 9:34 pm Another TODO item: Guard skills: viewtopic.php?p=19945#p19945
Done.

For Falcury, how to update princed.org:
Spoiler: show
Unpack: https://www.popot.org/other_useful_tool ... op-2.2.zip

Copy the attached new princehack.xml (version 004) to CusPop-2.2/src/

On line 11 of parsecommands.php change
if (ereg("([a-z]*)\((.*)\)",$cmd,$reg)) {
to
if (preg_match("/([a-z]*)\((.*)\)/",$cmd,$reg)) {

Run: php cuspopgenerator.php > cuspop.php

At the top of cuspop.php modify the action from 'gethack.php' to 'cuspop/gethack.php'.

Copy cuspop.php to public_html/cuspop/

Copy the new princehack.xml to:
- a new directory public_html/downloads/CusPop/princehack_004/
- public_html/cuspop/cuspop/ [sic]

In public_html/downloads/index.php change princehack_003 to princehack_004.

Re: CusPop TODO list

Posted: February 11th, 2018, 2:00 pm
by Falcury
Norbert wrote: February 11th, 2018, 11:36 am For Falcury, how to update princed.org:
Done. Thanks for the instructions, Norbert.

Re: CusPop TODO list

Posted: February 28th, 2018, 2:43 pm
by Norbert
Changing the chomper speed:
viewtopic.php?f=76&t=4175