Blocks moveable multiple times

View previous topic View next topic Go down

20140318

Post 

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:

; 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

avatar
Conn
Zelda God - Administrator
Zelda God - Administrator

Since : 2013-06-30

Back to top Go down

Share this post on: Excite BookmarksDiggRedditDel.icio.usGoogleLiveSlashdotNetscapeTechnoratiStumbleUponNewsvineFurlYahooSmarking

 
Permissions in this forum:
You cannot reply to topics in this forum