Can I change skel position in level 3?

Prince of Persia related subjects that do not have their own boards.
Post Reply
User avatar
robert
Sultan
Sultan
Posts: 194
Joined: August 27th, 2011, 7:16 pm
Location: Argentina

Can I change skel position in level 3?

Post by robert »

Like if I want the skeleton to get up in another room and another position, or just if I want it to get up in the third row of the room and not in the second, e.g. instead of Room 1 tile 16, Room "x" (x means any room), tile 26.

EDIT: I'm taking about the PC version
Last edited by robert on May 16th, 2013, 2:30 am, edited 1 time in total.
Image
This will be my face if you can't win any of my mods
User avatar
spartacus735
Wise Scribe
Wise Scribe
Posts: 217
Joined: November 20th, 2011, 12:41 pm
Location: France

Re: Can I change skel position in level 3?

Post by spartacus735 »

viewtopic.php?f=63&t=3099
-Skeletons don't rise until Prince is on tiles 2 or 3, room 13 skeleton is inactive before exit is open.
xCDB8 = Level where all this occurs (refer to
  • )
    xCDBF = Room number where the inactive skeleton awakes after exit is open (Refer to
    • )
      xCDCB and xCDCF = Tiles that Prince must be on for skeletons to rise. (Refer to
      • )
You need Download Translhextion: http://www.zophar.net/download_file/2779

After that open the rom with the tool like this : Image



For change value , go see the link of Kaslghnoon ( it's hard for write his name :p ) and show the different list

Exemple : i want to change the room of the skeleton : CTRL + G "xCDB8" ( is 02 = level 3 ) I want the level 5 ( i search in the list 1 )
xCDB8 = Level where all this occurs (refer to [LIST 1])
  • Level id's:

    Level 1 = $00
    Level 2 = $01
    Level 3 = $02
    Level 4 = $03
    Level 5 = $04
    Level 6 = $05
    Level 7 = $06
    Level 8 = $07
    Level 9 = $08
    Level 10 = $09
    Level 11 = $0A
    Level 12 = $0B
    Level 13 = $0C
    Level 14 = $0D
    Level 15 = $0E
    Level 16 = $0F
    Level 17 = $10
    Level 18 = $11
    Level 19 = $12
    Level 20 = $13
    Jaffar = $14
    Demo = $15
    Training 1 = $16
    Training 2 = $17
    Training 3 = $18
    Training 4 = $19
    Training 5 = $1A
I change the value into "05"

Save... ( close pr1snesleved before save in the translextion )

Done :D

PS : It should not be that you're wrong with the different lists. In fact, each value (such as: xCDB8) has appropriate list ( i wrote this with google translator ... )
>>>>>>>>>>>>>>>>>>>> http://www.youtube.com/user/spartacus735 <<<<<<<<<<<<<<<<<<<< the channel of prince of persia snes mod
User avatar
robert
Sultan
Sultan
Posts: 194
Joined: August 27th, 2011, 7:16 pm
Location: Argentina

Re: Can I change skel position in level 3?

Post by robert »

Ok! But I was taking about the PC version :lol: Sorry, I didn´t specified. But this would be important to keep in mind whenever I want to change skel's position in the Snes version...

Anyway, thanks for the info!
Image
This will be my face if you can't win any of my mods
User avatar
spartacus735
Wise Scribe
Wise Scribe
Posts: 217
Joined: November 20th, 2011, 12:41 pm
Location: France

Re: Can I change skel position in level 3?

Post by spartacus735 »

Np ! this little tutorial is would be helpful in the futur :p
>>>>>>>>>>>>>>>>>>>> http://www.youtube.com/user/spartacus735 <<<<<<<<<<<<<<<<<<<< the channel of prince of persia snes mod
User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 5749
Joined: April 9th, 2009, 10:58 pm

Re: Can I change skel position in level 3?

Post by Norbert »

robert wrote:Like if I want the skeleton to get up in another room and another position, or just if I want it to get up in the third row of the room and not in the second, e.g. instead of Room 1 tile 16, Room "x" (x means any room), tile 26.

EDIT: I'm taking about the PC version
With CusPop, which will be unusable until poirot fixes it.
You can contact him about it via: ecalot_AT_princed_DOT_org
User avatar
robert
Sultan
Sultan
Posts: 194
Joined: August 27th, 2011, 7:16 pm
Location: Argentina

Re: Can I change skel position in level 3?

Post by robert »

Ok! Is poirot Enrique Calot?
Image
This will be my face if you can't win any of my mods
User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 5749
Joined: April 9th, 2009, 10:58 pm

Re: Can I change skel position in level 3?

Post by Norbert »

robert wrote:Ok! Is poirot Enrique Calot?
Yes, poirot is Enrique.
He is the owner of the princed.org domain and (co-)author of several PoP1 tools.
David
The Prince of Persia
The Prince of Persia
Posts: 2852
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Can I change skel position in level 3?

Post by David »

robert wrote:Ok! But I was taking about the PC version :lol: Sorry, I didn´t specified.
Maybe your avatar confused him? :)
Norbert wrote:With CusPop, which will be unusable until poirot fixes it.
There is a copy of CusPop (or at least its interface) on PoPot: http://www.popot.org/other_useful_tools.php?tool=CusPop
However, it doesn't work.
Also, I don't see the skeleton there. (It should be under "Section level specific events". - The appearances of the shadow are also missing, by the way.)

So I searched for it in the disassembly, and found this:

Code: Select all

seg002:0E1F ; int __cdecl far check_skel()
seg002:0E1F check_skel	    proc far		    ; CODE XREF: check_exit+A↑P
seg002:0E1F		    push    si
seg002:0E20		    cmp	    current_level, 3
seg002:0E25		    jz	    loc_44AA
seg002:0E27		    jmp	    loc_45BD
seg002:0E2A ; ───────────────────────────────────────────────────────────────────────────
seg002:0E2A 
seg002:0E2A loc_44AA:				    ; CODE XREF: check_skel+6↑j
seg002:0E2A		    cmp	    guard_direction, 56h ; 'V'
seg002:0E2F		    jz	    loc_44B4
seg002:0E31		    jmp	    loc_45BD
seg002:0E34 ; ───────────────────────────────────────────────────────────────────────────
seg002:0E34 
seg002:0E34 loc_44B4:				    ; CODE XREF: check_skel+10↑j
seg002:0E34		    cmp	    drawn_room,	1
seg002:0E39		    jz	    loc_44BE
seg002:0E3B		    jmp	    loc_45BD
seg002:0E3E ; ───────────────────────────────────────────────────────────────────────────
seg002:0E3E 
seg002:0E3E loc_44BE:				    ; CODE XREF: check_skel+1A↑j
seg002:0E3E		    cmp	    leveldoor_open?, 0
seg002:0E43		    jnz	    loc_44C8
seg002:0E45		    jmp	    loc_45BD
seg002:0E48 ; ───────────────────────────────────────────────────────────────────────────
seg002:0E48 
seg002:0E48 loc_44C8:				    ; CODE XREF: check_skel+24↑j
seg002:0E48		    cmp	    kid_curr_col, 2
seg002:0E4D		    jz	    loc_44D9
seg002:0E4F		    cmp	    kid_curr_col, 3
seg002:0E54		    jz	    loc_44D9
seg002:0E56		    jmp	    loc_45BD
seg002:0E59 ; ───────────────────────────────────────────────────────────────────────────
seg002:0E59 
seg002:0E59 loc_44D9:				    ; CODE XREF: check_skel+2E↑j
seg002:0E59					    ; check_skel+35↑j
seg002:0E59		    push    drawn_room	    ; room
seg002:0E5D		    mov	    ax,	5
seg002:0E60		    push    ax		    ; tile_col
seg002:0E61		    mov	    ax,	1
seg002:0E64		    push    ax		    ; tile_row
seg002:0E65		    call    get_tile
seg002:0E6A		    cmp	    curr_tile2,	15h ; skeleton
seg002:0E6F		    jz	    loc_44F4
seg002:0E71		    jmp	    loc_45BD
seg002:0E74 ; ───────────────────────────────────────────────────────────────────────────
seg002:0E74 
seg002:0E74 loc_44F4:				    ; CODE XREF: check_skel+50↑j
...
seg002:0ECD		    mov	    al,	1
seg002:0ECF		    mov	    char_curr_row, al
...
seg002:0EDE		    mov	    al,	5
seg002:0EE0		    mov	    char_curr_col, al
With the hex codes it looks like this:

Code: Select all

00005D4F:i56                             push      si
00005D50:i833E9E0F03                     cmp (w)   [+0F9E],+03 ; <- level
00005D55:i7403                           je        file:00005D5A
00005D57:iE91301                         jmpn      file:00005E6D
00005D5A:i803EDF4256                     cmp       [+42DF],56
00005D5F:i7403                           je        file:00005D64
00005D61:iE90901                         jmpn      file:00005E6D
00005D64:i833E9E4001                     cmp (w)   [+409E],+01 ; <- room
00005D69:i7403                           je        file:00005D6E
00005D6B:iE9FF00                         jmpn      file:00005E6D
00005D6E:i833E9C4000                     cmp (w)   [+409C],+00
00005D73:i7503                           jne       file:00005D78 ; <- level door check
00005D75:iE9F500                         jmpn      file:00005E6D
00005D78:i803E5C4302                     cmp       [+435C],02 ; <- kid column
00005D7D:i740A                           je        file:00005D89
00005D7F:i803E5C4303                     cmp       [+435C],03 ; <- kid column
00005D84:i7403                           je        file:00005D89
00005D86:iE9E400                         jmpn      file:00005E6D
00005D89:iFF369E40                       push (w)  [+409E]
00005D8D:iB80500                         mov       ax,0005 ; <- column
00005D90:i50                             push      ax
00005D91:iB80100                         mov       ax,0001 ; <- row
00005D94:i50                             push      ax
00005D95:i9A0600CB06                     callf     file:00006CB6
00005D9A:i803EF94215                     cmp       [+42F9],15
00005D9F:i7403                           je        file:00005DA4
00005DA1:iE9C900                         jmpn      file:00005E6D
...
00005DFD:iB001                           mov       al,01 ; <- row
00005DFF:iA2273D                         mov       [+3D27],al
...
00005E0E:iB005                           mov       al,05 ; <- column
00005E10:iA2263D                         mov       [+3D26],al
search:
83 3E 9E 0F 03 74 03 , replace the first 03 with the level number
Note that if you change the level, the skeleton will look like a guard, unless you changed the guard type of the level.
83 3E 9E 40 01 , replace 01 with the room
80 3E 5C 43 02 , replace 02 with the column where the kid should be *
80 3E 5C 43 03 , replace 03 with the column where the kid should be *
B8 05 00 50 B8 01 00 50 , replace 05 with the column and 01 with the row
B0 01 A2 27 3D , replace 01 with the row
B0 05 A2 26 3D , replace 05 with the column
* The skeleton comes to life if the kid is in one of these columns.

If you want the skeleton to come to life even if the level door is not open:
search:
83 3E 9C 40 00 75 03 , replace 75 with EB
User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 5749
Joined: April 9th, 2009, 10:58 pm

Re: Can I change skel position in level 3?

Post by Norbert »

David wrote:There is a copy of CusPop (or at least its interface) on PoPot: http://www.popot.org/other_useful_tools.php?tool=CusPop
However, it doesn't work.
Yes, right now that's just the interface. That CusPop, version 2.0, is a WordPress plugin (it uses add_action, among other things). In November 2012, we moved away from WordPress, because after some updates of WordPress and its plug-ins, first CusPop stopped working and then the Princed website started giving errors. At the time, poirot was busy rewriting CusPop to be fully standalone. He wrote "Btw, CusPop 3.0 is on the way", he opened a new thread about hex editing, posted in other threads about the file format, and he even had a prototype up and running (I've seen it). Every time I ask him about CusPop, he says he'll finish it, so it's in the pipeline; he's just very busy.
User avatar
robert
Sultan
Sultan
Posts: 194
Joined: August 27th, 2011, 7:16 pm
Location: Argentina

Re: Can I change skel position in level 3?

Post by robert »

David wrote:
robert wrote:Ok! But I was taking about the PC version :lol: Sorry, I didn´t specified.
Maybe your avatar confused him? :)
Norbert wrote:With CusPop, which will be unusable until poirot fixes it.
There is a copy of CusPop (or at least its interface) on PoPot: http://www.popot.org/other_useful_tools.php?tool=CusPop
However, it doesn't work.
Also, I don't see the skeleton there. (It should be under "Section level specific events". - The appearances of the shadow are also missing, by the way.)

So I searched for it in the disassembly, and found this:

Code: Select all

seg002:0E1F ; int __cdecl far check_skel()
seg002:0E1F check_skel	    proc far		    ; CODE XREF: check_exit+A↑P
seg002:0E1F		    push    si
seg002:0E20		    cmp	    current_level, 3
seg002:0E25		    jz	    loc_44AA
seg002:0E27		    jmp	    loc_45BD
seg002:0E2A ; ───────────────────────────────────────────────────────────────────────────
seg002:0E2A 
seg002:0E2A loc_44AA:				    ; CODE XREF: check_skel+6↑j
seg002:0E2A		    cmp	    guard_direction, 56h ; 'V'
seg002:0E2F		    jz	    loc_44B4
seg002:0E31		    jmp	    loc_45BD
seg002:0E34 ; ───────────────────────────────────────────────────────────────────────────
seg002:0E34 
seg002:0E34 loc_44B4:				    ; CODE XREF: check_skel+10↑j
seg002:0E34		    cmp	    drawn_room,	1
seg002:0E39		    jz	    loc_44BE
seg002:0E3B		    jmp	    loc_45BD
seg002:0E3E ; ───────────────────────────────────────────────────────────────────────────
seg002:0E3E 
seg002:0E3E loc_44BE:				    ; CODE XREF: check_skel+1A↑j
seg002:0E3E		    cmp	    leveldoor_open?, 0
seg002:0E43		    jnz	    loc_44C8
seg002:0E45		    jmp	    loc_45BD
seg002:0E48 ; ───────────────────────────────────────────────────────────────────────────
seg002:0E48 
seg002:0E48 loc_44C8:				    ; CODE XREF: check_skel+24↑j
seg002:0E48		    cmp	    kid_curr_col, 2
seg002:0E4D		    jz	    loc_44D9
seg002:0E4F		    cmp	    kid_curr_col, 3
seg002:0E54		    jz	    loc_44D9
seg002:0E56		    jmp	    loc_45BD
seg002:0E59 ; ───────────────────────────────────────────────────────────────────────────
seg002:0E59 
seg002:0E59 loc_44D9:				    ; CODE XREF: check_skel+2E↑j
seg002:0E59					    ; check_skel+35↑j
seg002:0E59		    push    drawn_room	    ; room
seg002:0E5D		    mov	    ax,	5
seg002:0E60		    push    ax		    ; tile_col
seg002:0E61		    mov	    ax,	1
seg002:0E64		    push    ax		    ; tile_row
seg002:0E65		    call    get_tile
seg002:0E6A		    cmp	    curr_tile2,	15h ; skeleton
seg002:0E6F		    jz	    loc_44F4
seg002:0E71		    jmp	    loc_45BD
seg002:0E74 ; ───────────────────────────────────────────────────────────────────────────
seg002:0E74 
seg002:0E74 loc_44F4:				    ; CODE XREF: check_skel+50↑j
...
seg002:0ECD		    mov	    al,	1
seg002:0ECF		    mov	    char_curr_row, al
...
seg002:0EDE		    mov	    al,	5
seg002:0EE0		    mov	    char_curr_col, al
With the hex codes it looks like this:

Code: Select all

00005D4F:i56                             push      si
00005D50:i833E9E0F03                     cmp (w)   [+0F9E],+03 ; <- level
00005D55:i7403                           je        file:00005D5A
00005D57:iE91301                         jmpn      file:00005E6D
00005D5A:i803EDF4256                     cmp       [+42DF],56
00005D5F:i7403                           je        file:00005D64
00005D61:iE90901                         jmpn      file:00005E6D
00005D64:i833E9E4001                     cmp (w)   [+409E],+01 ; <- room
00005D69:i7403                           je        file:00005D6E
00005D6B:iE9FF00                         jmpn      file:00005E6D
00005D6E:i833E9C4000                     cmp (w)   [+409C],+00
00005D73:i7503                           jne       file:00005D78 ; <- level door check
00005D75:iE9F500                         jmpn      file:00005E6D
00005D78:i803E5C4302                     cmp       [+435C],02 ; <- kid column
00005D7D:i740A                           je        file:00005D89
00005D7F:i803E5C4303                     cmp       [+435C],03 ; <- kid column
00005D84:i7403                           je        file:00005D89
00005D86:iE9E400                         jmpn      file:00005E6D
00005D89:iFF369E40                       push (w)  [+409E]
00005D8D:iB80500                         mov       ax,0005 ; <- column
00005D90:i50                             push      ax
00005D91:iB80100                         mov       ax,0001 ; <- row
00005D94:i50                             push      ax
00005D95:i9A0600CB06                     callf     file:00006CB6
00005D9A:i803EF94215                     cmp       [+42F9],15
00005D9F:i7403                           je        file:00005DA4
00005DA1:iE9C900                         jmpn      file:00005E6D
...
00005DFD:iB001                           mov       al,01 ; <- row
00005DFF:iA2273D                         mov       [+3D27],al
...
00005E0E:iB005                           mov       al,05 ; <- column
00005E10:iA2263D                         mov       [+3D26],al
search:
83 3E 9E 0F 03 74 03 , replace the first 03 with the level number
Note that if you change the level, the skeleton will look like a guard, unless you changed the guard type of the level.
83 3E 9E 40 01 , replace 01 with the room
80 3E 5C 43 02 , replace 02 with the column where the kid should be *
80 3E 5C 43 03 , replace 03 with the column where the kid should be *
B8 05 00 50 B8 01 00 50 , replace 05 with the column and 01 with the row
B0 01 A2 27 3D , replace 01 with the row
B0 05 A2 26 3D , replace 05 with the column
* The skeleton comes to life if the kid is in one of these columns.

If you want the skeleton to come to life even if the level door is not open:
search:
83 3E 9C 40 00 75 03 , replace 75 with EB
Thanks a lot! :D
Last edited by robert on May 19th, 2013, 6:51 pm, edited 2 times in total.
Image
This will be my face if you can't win any of my mods
User avatar
robert
Sultan
Sultan
Posts: 194
Joined: August 27th, 2011, 7:16 pm
Location: Argentina

Re: Can I change skel position in level 3?

Post by robert »

Norbert wrote:
David wrote:There is a copy of CusPop (or at least its interface) on PoPot: http://www.popot.org/other_useful_tools.php?tool=CusPop
However, it doesn't work.
Yes, right now that's just the interface. That CusPop, version 2.0, is a WordPress plugin (it uses add_action, among other things). In November 2012, we moved away from WordPress, because after some updates of WordPress and its plug-ins, first CusPop stopped working and then the Princed website started giving errors. At the time, poirot was busy rewriting CusPop to be fully standalone. He wrote "Btw, CusPop 3.0 is on the way", he opened a new thread about hex editing, posted in other threads about the file format, and he even had a prototype up and running (I've seen it). Every time I ask him about CusPop, he says he'll finish it, so it's in the pipeline; he's just very busy.
I met him via gmail, he helped me with the registering. Yes, he was always at work when I talked to him, so yeah he may be a very busy person I believe.
Image
This will be my face if you can't win any of my mods
Post Reply