Longer delay before falling loose tiles?

Discussions about all other tools (CusPop, SAV/HOF editors) and hex editing.

Moderator: English Moderator Team

Post Reply
User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 3169
Joined: April 9th, 2009, 10:58 pm
Contact:

Longer delay before falling loose tiles?

Post by Norbert » December 31st, 2013, 2:14 pm

Is it possible to have a longer delay before loose tiles start falling?
After playing Electronic Super Joy for many hours, I have a new idea for a PoP1 mod... :)

David
The Prince of Persia
The Prince of Persia
Posts: 1506
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Longer delay before falling loose tiles?

Post by David » January 1st, 2014, 8:33 pm

To change the delay before a loose floor falls:

Code: Select all

seg007:0DE2                 cmp     curr_modifier, 0Bh ; <-- here
seg007:0DE7                 jb      loc_9396

Code: Select all

00009532:i803E28430B                     cmp       [+4328],0B ; <-- here
00009537:i725D                           jc        file:00009596
Search 80 3E 28 43 0B, change 0B to the number of frames between touching and falling.
The new value must be less than 0x80 (128), otherwise the floors will never fall.
(Because loose floors whose modifiers have the top bit set are just shaking, not falling.)

If you increase the delay, garbled tiles may appear unless you also change this:

Code: Select all

seg008:0FF6 ; --------------- S U B R O U T I N E ---------------------------------------
seg008:0FF6 
seg008:0FF6 ; Attributes: bp-based frame
seg008:0FF6 
seg008:0FF6 ; int __pascal far get_loose_frame(char modifier)
seg008:0FF6 get_loose_frame proc far                ; CODE XREF: draw_tile_spec+9Bp
seg008:0FF6                                         ; draw_loose+18p ...
seg008:0FF6 
seg008:0FF6 modifier        = byte ptr  6
seg008:0FF6 
seg008:0FF6                 push    bp
seg008:0FF7                 mov     bp, sp
seg008:0FF9                 test    [bp+modifier], 80h
seg008:0FFD                 jz      loc_AC2E
seg008:0FFF                 and     [bp+modifier], 7Fh
seg008:1003                 cmp     [bp+modifier], 0Ah
seg008:1007                 jbe     loc_AC2E
seg008:1009                 mov     ax, 1
seg008:100C                 jmp     short loc_AC33
seg008:100E ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
seg008:100E 
seg008:100E loc_AC2E:                               ; CODE XREF: get_loose_frame+7j
seg008:100E                                         ; get_loose_frame+11j
seg008:100E                 mov     al, [bp+modifier]
seg008:1011                 sub     ah, ah
seg008:1013 
seg008:1013 loc_AC33:                               ; CODE XREF: get_loose_frame+16j
seg008:1013                 pop     bp
seg008:1014                 retf    2
seg008:1014 get_loose_frame endp

Code: Select all

0000AE16:i55                             push      bp
0000AE17:i8BEC                           mov       bp,sp
0000AE19:iF6460680                       test (b)  [bp+06],80
0000AE1D:i740F                           je        file:0000AE2E ; <-- here
0000AE1F:i8066067F                       and       [bp+06],7F
0000AE23:i807E060A                       cmp       [bp+06],0A
0000AE27:i7605                           jna       file:0000AE2E
0000AE29:iB80100                         mov       ax,0001
0000AE2C:iEB05                           jmps      file:0000AE33
0000AE2E:i8A4606                         mov       al,[bp+06]
0000AE31:i2AE4                           sub       ah,ah
0000AE33:i5D                             pop       bp
0000AE34:iCA0200                         retf      0002
Search F6 46 06 80 74 0F, change 74 0F to 90 90.

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 3169
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: Longer delay before falling loose tiles?

Post by Norbert » January 2nd, 2014, 12:55 am

Thanks. :)
Looks like I'll be creating another mod, but this time it'll be a totally different kind of mod.

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 3169
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: Longer delay before falling loose tiles?

Post by Norbert » January 2nd, 2014, 3:58 am

Hey David, attached is a sample of what I have in mind.
If you start playing level 1, you'll see what I mean.
I noticed that the prince doesn't climb up the loose tile when it's in its last frame.
Is there any way to change that? If it's too difficult to figure out (no idea), feel free to say so. ;)
Attachments
prince.zip
sample
(336.98 KiB) Downloaded 38 times

David
The Prince of Persia
The Prince of Persia
Posts: 1506
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Longer delay before falling loose tiles?

Post by David » January 2nd, 2014, 4:40 pm

Norbert wrote:If you start playing level 1, you'll see what I mean.
Ah, a level that falls apart! And if you're not fast enough, the kid will also fall.
Norbert wrote:I noticed that the prince doesn't climb up the loose tile when it's in its last frame.
Is there any way to change that?
Allow climbing of any loose floor: (By default only those with modifier=0 can be climbed.)

Code: Select all

seg006:0F92                 cmp     curr_tile2, tiles_11_loose
seg006:0F97                 jnz     loc_7C4F
seg006:0F99                 cmp     [bp+modifier], 0
seg006:0F9D                 jnz     loc_7C22 ; <- this

Code: Select all

000094F2:i803EF9420B                     cmp       [+42F9],0B
000094F7:i7506                           jne       file:000094FF
000094F9:i807EFE00                       cmp       [bp-02],00
000094FD:i75D3                           jne       file:000094D2 ; <- this
Search: 80 7E FE 00 75 D3, change 75 D3 to 90 90.

Post Reply