Blocks moveable multiple times
Zeldix :: Zelda III Hacking :: Patches :: Items
Page 1 of 1
20140318
Blocks moveable multiple times
Information: the blocks can be moved unlimited (or until you hit an obstacle)
Rom: ALTTP (US), without header; pc w/o header ALTTP (US)
Screenshot:
Ips Patch: http://bszelda.zeldalegends.net/stuff/Con/moveblock.zip
Update There is a bug that you can shoot with the hookshot through the in-move block; which is a possible bugsource. Use this asm to prevent that:
Code Addresses: 0x77e00 - 0x77e1c (after pot with sword destroy and icerod freezing water above); restricted to power/titan gloves use 0x77df0 - 07/7e22
Uses free ram (7F/5000 0x1)
ASM for no restriction (always move unlimited times, have glove or not):
ASM for having ulimited move in case you have a glove (equal which glove)
ASM for restriction to a Special glove (e.g., power glove and titan mitt but not worn-out glove (you can also adjust this asm in case you want Titan mitt only))
Additional, optional code: Prevent moving Stones when bouncing back with Pegasus boots:
Rom: ALTTP (US), without header; pc w/o header ALTTP (US)
Screenshot:
Ips Patch: http://bszelda.zeldalegends.net/stuff/Con/moveblock.zip
Update There is a bug that you can shoot with the hookshot through the in-move block; which is a possible bugsource. Use this asm to prevent that:
- Code:
; it is possible to hookshot through the in-move blocks - which may result in unwanted effects
; this asm code will block this.
lorom
org $899CEB
JSL $A2F1A0 ; somewhere in expanded region 1MB< 0x1171A0<1.5MB
org $899D76
JSL $A2F1A0 ; change it if you want it somewhere else
org $A2F1A0 ; pc address 0x1171A0
TAY
CMP #$1F ; is hookshot in use?
BEQ $04
STA $0C4A,x ; if not let the hookshot routine proceed
RTL
LDA $05FD ; check first byte whether block is currently in-move
BEQ $01
RTL ; if yes return
LDA $05FC ; check other byte whether block is currently in-move
BEQ $01
RTL
TYA ; restore overwritten byte
STA $0C4A,x ;continue hookshot routine
RTL
Code Addresses: 0x77e00 - 0x77e1c (after pot with sword destroy and icerod freezing water above); restricted to power/titan gloves use 0x77df0 - 07/7e22
Uses free ram (7F/5000 0x1)
ASM for no restriction (always move unlimited times, have glove or not):
- Code:
; This ASM was written by Conn
; This is a ASM FrontEnd Code for Zelda ALTTP (US, no header) to move blocks multiple times.
lorom
org $01d87d
NOP
NOP
JSL $0EFE00 ; (below the icerod code to not overwrite it)
org $0efe00
CMP #$2727 ;check if block is already moved
BEQ $0F ; if yes branch to after first RTL
LDA $7F2000,x ; load block value (e.g., 70, 71, 72...)
STA $7ED010 ; store to intermediate (unused) 7E/D000 is icerod
LDA $00 ; set old block value to 00 to indicate that it is moved
STA $7F2000,x
RTL
LDA $7ED010 ; branch here if 27 - load intermediate value
STA $7F2000,x ; store intermediate instead of 27
RTL
ASM for having ulimited move in case you have a glove (equal which glove)
- Code:
lorom
org $01d87d
NOP
NOP
JSL $0EFdf0
org $0efdf0
CMP #$2727 ;check if block is already moved
BEQ $0F ; if yes branch to after first RTL
LDA $7F2000,x ; load block value (e.g., 70, 71, 72...)
STA $7F5000 ; store to intermediate (unused) 7E/D000 is icerod
LDA $00 ; set old block value to 00 to indicate that it is moved
STA $7F2000,x
RTL
LDA $7EF354 ; load gloves
AND #$00FF
BNE $05 ; branch to move unlimited if glove in inventory
LDA #$2727 ; if no gloves
BRA $04
LDA $7f5000 ; If power or titan mitt load intermediate value
STA $7F2000,x ; store intermediate instead of 27
RTL
ASM for restriction to a Special glove (e.g., power glove and titan mitt but not worn-out glove (you can also adjust this asm in case you want Titan mitt only))
- Code:
lorom
org $01d87d
NOP
NOP
JSL $0EFdf0 ; (below the icerod code to not overwrite it)
org $0efdf0
CMP #$2727 ;check if block is already moved
BEQ $0F ; if yes branch to after first RTL
LDA $7F2000,x ; load block value (e.g., 70, 71, 72...)
STA $7F5000 ; store to intermediate (unused) 7E/D000 is icerod
LDA $00 ; set old block value to 00 to indicate that it is moved
STA $7F2000,x
RTL
LDA $7EF354 ; load gloves
AND #$00FF
CMP #$0001 ;compare power gloves- if you only want titan mitt write CMP #$0002
BEQ $0A ; branch to move unlimited
CMP #$0002 ; compare titan
BEQ $05 ; branch to move unlimited
LDA #$2727 ; if no gloves or worn-out set the block solid
BRA $04
LDA $7f5000 ; If power or titan mitt load intermediate value
STA $7F2000,x ; store intermediate instead of 27
RTL
Additional, optional code: Prevent moving Stones when bouncing back with Pegasus boots:
- Code:
lorom
org $07c79f
jsl $07fc40
nop
org $07bd62
jsl $07fc40
nop
org $07fc40
STA $02C2
lda $5d
bne $02
dec $61
lda $61
rtl
Conn- Since : 2013-06-30
Similar topics
» Multiple videos in one file
» objects that affect multiple rooms
» Becareful with multiple sprites in a boss room
» Hardcoded Pushable Blocks
» Indoor pushable blocks
» objects that affect multiple rooms
» Becareful with multiple sprites in a boss room
» Hardcoded Pushable Blocks
» Indoor pushable blocks
Permissions in this forum:
You cannot reply to topics in this forum