backend-infra-engineer: Post v0.3.9-hotfix7 snapshot (build cleanup)
This commit is contained in:
Submodule assets/asm/alttp-hacker-workspace deleted from 2520fb70c3
Submodule assets/asm/usdasm updated: d53311a54a...835b15b91f
12
assets/patches/Hex Edits/File Fairy.asm
Normal file
12
assets/patches/Hex Edits/File Fairy.asm
Normal file
@@ -0,0 +1,12 @@
|
||||
;#ENABLED=False
|
||||
;#PATCH_NAME=File fairy skin color fix
|
||||
;#PATCH_AUTHOR=kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Fixes the file select fairy's skin color
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
pushpc
|
||||
org $1BF02A
|
||||
db $10
|
||||
pullpc
|
||||
69
assets/patches/Hex Edits/Misc Small Patches.asm
Normal file
69
assets/patches/Hex Edits/Misc Small Patches.asm
Normal file
@@ -0,0 +1,69 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=Misc Small Patches
|
||||
;#PATCH_AUTHOR=Zarby89
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Lots of small patches to do various things
|
||||
;No Zelda Telepathy is removing the timed message that tell you to rescue her every minute
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Titlescreen forever (no intro)
|
||||
;#type=bool
|
||||
!TitleScreenForever = $00
|
||||
|
||||
;#name=Skip Ending (before credits)
|
||||
;#type=bool
|
||||
!SkipEnding = $00
|
||||
|
||||
;#name=Prevent S+Q to Dark World
|
||||
;#type=bool
|
||||
!NoDwSpan = $00
|
||||
|
||||
;#name=Disable Dungeon Map
|
||||
;#type=bool
|
||||
!NoDungeonMap = $00
|
||||
|
||||
;#name=Disable Oveworld Map
|
||||
;#type=bool
|
||||
!NoOWnMap = $00
|
||||
|
||||
;#name=No Zelda Telepathy
|
||||
;#type=bool
|
||||
!NoZeldaFollower = $00
|
||||
|
||||
;#DEFINE_END
|
||||
|
||||
if !TitleScreenForever = 1
|
||||
org $0CC2E3
|
||||
db $80
|
||||
endif
|
||||
|
||||
if !SkipEnding = 1
|
||||
org $0E9889
|
||||
LDA #$20 : STA $11
|
||||
RTS
|
||||
endif
|
||||
|
||||
if !NoDwSpan = 1
|
||||
org $028192
|
||||
LDA #$00 : STA $7EF3CA ; Clear the DW address so game doesn't think we are in DW
|
||||
JML $0281BD ; To the lightworld !
|
||||
endif
|
||||
|
||||
if !NoDungeonMap = 1
|
||||
org $0288FD ; Replace a BEQ by a BRA (dungeon map removed)
|
||||
db $80
|
||||
endif
|
||||
|
||||
if !NoOWnMap = 1
|
||||
org $02A55E ; Replace a BEQ by a BRA (overworld map removed)
|
||||
db $80
|
||||
endif
|
||||
|
||||
if !NoZeldaFollower = 1
|
||||
org $05DEF8
|
||||
LDA.b #$00
|
||||
endif
|
||||
|
||||
|
||||
12
assets/patches/Hex Edits/No Beams.asm
Normal file
12
assets/patches/Hex Edits/No Beams.asm
Normal file
@@ -0,0 +1,12 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=No sword beams
|
||||
;#PATCH_AUTHOR=kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Disables sword beams
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
pushpc
|
||||
org $079C70
|
||||
JMP.w $079CA0
|
||||
pullpc
|
||||
11
assets/patches/Hex Edits/No Grass Cut.asm
Normal file
11
assets/patches/Hex Edits/No Grass Cut.asm
Normal file
@@ -0,0 +1,11 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=No grass cutting
|
||||
;#PATCH_AUTHOR=kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Grass no longer gets cut by the sword
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
pushpc
|
||||
org $1BBE26
|
||||
BRA + : NOP #3 : +
|
||||
pullpc
|
||||
80
assets/patches/Items/AST Boots.asm
Normal file
80
assets/patches/Items/AST Boots.asm
Normal file
@@ -0,0 +1,80 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=AST Boots
|
||||
;#PATCH_AUTHOR=Conn, Zarby89
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Copies the boots mechanics from Ancient Stone Tablets.
|
||||
;DPad changes boots directions, and transitions can be
|
||||
;optionally prevented from halting the dash
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Keep running after transition
|
||||
;#type=bool
|
||||
!KeepRunningTransition = $00
|
||||
;#DEFINE_END
|
||||
|
||||
|
||||
pushpc
|
||||
org $87911D
|
||||
JML AstBoots
|
||||
|
||||
if !KeepRunningTransition != 00
|
||||
org $828B13
|
||||
db $80
|
||||
endif
|
||||
pullpc
|
||||
|
||||
AstBoots:
|
||||
BIT.b $F2
|
||||
BPL .continue
|
||||
|
||||
LDA.b $F0
|
||||
AND.b #$0F
|
||||
BNE .pressing_direction
|
||||
|
||||
JML $879138
|
||||
|
||||
.pressing_direction
|
||||
CMP.b #$0A ; up left
|
||||
BEQ +
|
||||
|
||||
CMP.b #$05 ; down right
|
||||
BEQ +
|
||||
|
||||
CMP.b #$09 ; down left
|
||||
BEQ +
|
||||
|
||||
CMP.b #$06 ; up right
|
||||
BNE ++
|
||||
|
||||
+ AND.b #$0C
|
||||
|
||||
++ CMP.b $26
|
||||
BNE +
|
||||
|
||||
JML $879138
|
||||
|
||||
+ STA.b $26
|
||||
STA.b $67
|
||||
STA.w $0340
|
||||
|
||||
JSL $87E6A6
|
||||
|
||||
JML $879138
|
||||
|
||||
.continue
|
||||
LDA.b #$12
|
||||
STA.b $5D
|
||||
|
||||
LDA.b $3A
|
||||
AND.b #$7F
|
||||
STA.b $3A
|
||||
|
||||
STZ.b $3C
|
||||
STZ.b $3D
|
||||
|
||||
LDA.b #$11
|
||||
STA.w $0374
|
||||
|
||||
JML $87915E
|
||||
44
assets/patches/Misc/Big Bomb Requirements.asm
Normal file
44
assets/patches/Misc/Big Bomb Requirements.asm
Normal file
@@ -0,0 +1,44 @@
|
||||
;#ENABLED=True
|
||||
|
||||
;#PATCH_NAME=Big Bomb requirement
|
||||
;#PATCH_AUTHOR=Zarby89,kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Modify the crystal and dwarf requirements for the big bomb
|
||||
;If SmithRequirement is set to 20, you will need to save the Smith first
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Crystals Required
|
||||
;#type=bitfield
|
||||
;#bit0=Crystal 6
|
||||
;#bit1=Crystal 1
|
||||
;#bit2=Crystal 5
|
||||
;#bit3=Crystal 7
|
||||
;#bit4=Crystal 2
|
||||
;#bit5=Crystal 4
|
||||
;#bit6=Crystal 3
|
||||
!CrystalRequirement =$02
|
||||
|
||||
|
||||
;#name=Required smith saved?
|
||||
;#type=bool
|
||||
;#uncheckedvalue=$00
|
||||
;#checkedvalue=$20
|
||||
!SmithRequirement =$00
|
||||
|
||||
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
|
||||
org $1EE16A
|
||||
|
||||
LDA.l $7EF37A : AND.b #!CrystalRequirement : CMP.b #!CrystalRequirement
|
||||
|
||||
skip 2
|
||||
|
||||
LDA.l $7EF3C9 : AND.b #!SmithRequirement
|
||||
|
||||
pullpc
|
||||
41
assets/patches/Misc/HoleOverlayFix.asm
Normal file
41
assets/patches/Misc/HoleOverlayFix.asm
Normal file
@@ -0,0 +1,41 @@
|
||||
;#ENABLED=True
|
||||
|
||||
;#PATCH_NAME=Hole Overlay Fix
|
||||
;#PATCH_AUTHOR=kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Allow the floor collision of the hole overlay to work on every floor types
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
pushpc
|
||||
|
||||
org $01B83E : JSL FigureOutFloor1
|
||||
|
||||
; change comparisons to our dynamic values
|
||||
org $01FE6C : CMP.w $0318
|
||||
org $01FE71 : CMP.w $031A
|
||||
|
||||
pullpc
|
||||
|
||||
;===================================================================================================
|
||||
|
||||
; Find floor 1 index and save its tiles
|
||||
FigureOutFloor1:
|
||||
REP #$30
|
||||
|
||||
LDX.w $046A ; read floor 1 index
|
||||
|
||||
; this reuses some memory related to conveyors
|
||||
; the memory is very temporary so it should be safe
|
||||
|
||||
; databank is 0, so we can use abs,X
|
||||
LDA.w $009B52+0,X ; find top tile
|
||||
AND.w #$03FE ; isolate tile name
|
||||
STA.w $0318 ; save tile
|
||||
|
||||
LDA.w $009B52+8,X ; find bottom tile
|
||||
AND.w #$03FE ; isolate tile name
|
||||
STA.w $031A ; save tile
|
||||
|
||||
LDA.b $BA ; vanilla code and return
|
||||
RTL
|
||||
13
assets/patches/Misc/IntroSkip.asm
Normal file
13
assets/patches/Misc/IntroSkip.asm
Normal file
@@ -0,0 +1,13 @@
|
||||
;#ENABLED=true
|
||||
|
||||
;#PATCH_NAME=Intro skip
|
||||
;#PATCH_AUTHOR=kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Skip the intro sooner
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
pushpc
|
||||
org $0CC123
|
||||
db 4
|
||||
pullpc
|
||||
39
assets/patches/Misc/JP1.0 Glitches.asm
Normal file
39
assets/patches/Misc/JP1.0 Glitches.asm
Normal file
@@ -0,0 +1,39 @@
|
||||
;#ENABLED=True
|
||||
|
||||
;#PATCH_NAME=1.0 Glitches
|
||||
;#PATCH_AUTHOR=kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Restore the JP 1.0 glitches
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Mirror block erase
|
||||
;#type=bool
|
||||
!MirrorEraseBlock = $00
|
||||
|
||||
;#name=Spin speed and Item dash
|
||||
;#type=bool
|
||||
!SpinSpeedItemDash = $00
|
||||
|
||||
;#name=Fake flippers
|
||||
;#type=bool
|
||||
!FakeFlippers = $00
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
if !MirrorEraseBlock == 1
|
||||
org $07A969
|
||||
JMP.w $07A970
|
||||
endif
|
||||
|
||||
if !SpinSpeedItemDash == 1
|
||||
org $0781C0
|
||||
BRA + : NOP #4 : +
|
||||
endif
|
||||
|
||||
if !FakeFlippers == 1
|
||||
org $079665
|
||||
JMP.w $07966C
|
||||
endif
|
||||
pullpc
|
||||
39
assets/patches/Misc/Link Bed Start Position.asm
Normal file
39
assets/patches/Misc/Link Bed Start Position.asm
Normal file
@@ -0,0 +1,39 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=Link Bed Starting Position
|
||||
;#PATCH_AUTHOR=Zarby89, Jared_Brian_, kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Changes where Link spawns during the opening bed cutscene
|
||||
;Positions can be found by temporarily moving the Link's house entrance to
|
||||
;the desired location
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Link Y Position
|
||||
;#type=word
|
||||
!LinkYPosition = $2182
|
||||
|
||||
;#name=Link Y Position
|
||||
;#type=word
|
||||
!LinkXPosition = $095B
|
||||
;#DEFINE_END
|
||||
|
||||
; Link sleep position changes
|
||||
org $079A31
|
||||
LDA.w #!LinkYPosition : STA.b $20 ; Y link position in bed
|
||||
LDA.w #!LinkXPosition : STA.b $22 ; X link position in bed
|
||||
|
||||
org $05DE52 ; These values should be the same as the ones above
|
||||
LDA.b #!LinkXPosition : STA.w $0FC2 ; X link position in bed
|
||||
LDA.b #!LinkXPosition>>8 : STA.w $0FC3 ; X link position in bed
|
||||
|
||||
LDA.b #!LinkYPosition : STA.w $0FC4 ; Y link position in bed
|
||||
LDA.b #!LinkYPosition>>8 : STA.w $0FC5 ; Y link position in bed
|
||||
|
||||
org $0980B7
|
||||
LDA.w #(!LinkYPosition+8) : STA.b $00 ; Y link sheet in bed
|
||||
LDA.w #(!LinkXPosition-8) : STA.b $02 ; X link sheet in bed
|
||||
|
||||
org $05DE8C
|
||||
LDA.b #(!LinkYPosition-3) : STA.b $20 ; Y link position in bed when awoken
|
||||
LDA.b #(!LinkYPosition-3)>>8 : STA.b $21 ; Y link position in bed when awoken
|
||||
28
assets/patches/Misc/NoRocks.asm
Normal file
28
assets/patches/Misc/NoRocks.asm
Normal file
@@ -0,0 +1,28 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=No Hardcoded Rocks
|
||||
;#PATCH_AUTHOR=Jared_Brian_
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Removes the 2 hardcoded rocks that get placed in area 33 and 2F.
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Remove rock in area 33.
|
||||
;#type=bool
|
||||
!RemoveRock1 = $01
|
||||
;#name=Remove rock in area 2F.
|
||||
;#type=bool
|
||||
!RemoveRock2 = $01
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
if !RemoveRock1 == 1
|
||||
org $02EF33
|
||||
NOP #4
|
||||
endif
|
||||
|
||||
if !RemoveRock2 == 1
|
||||
org $02EF3C
|
||||
NOP #4
|
||||
endif
|
||||
pullpc
|
||||
51
assets/patches/Misc/Rainstate Skip.asm
Normal file
51
assets/patches/Misc/Rainstate Skip.asm
Normal file
@@ -0,0 +1,51 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=Rainstate Skip
|
||||
;#PATCH_AUTHOR=Zarby89
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Skips over gamestates 0 and 1 (rain) straight to 2 (Zelda rescued)
|
||||
;Setting BedIntro to 00 will keep the opening bed sequence
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
lorom
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Remove bed intro
|
||||
;#type=bool
|
||||
!BedIntro = $00
|
||||
;#DEFINE_END
|
||||
|
||||
if !BedIntro == 00
|
||||
|
||||
pushpc
|
||||
org $828356
|
||||
JSL NewIntroRain
|
||||
pullpc
|
||||
|
||||
NewIntroRain:
|
||||
LDA.l $7EF3C5 : BNE +
|
||||
LDA.b #$02 : STA.l $7EF3C5 ; Set Game mode on 2
|
||||
|
||||
PHX
|
||||
|
||||
JSL $80FC62 ; Sprite_LoadGfxProperties.justLightWorld
|
||||
|
||||
PLX
|
||||
|
||||
LDA.b #$00 ; will take care of the bed intro wether we are in game rainstate or not
|
||||
+ RTL
|
||||
|
||||
else
|
||||
pushpc
|
||||
org $0CD8F6
|
||||
JSL NewIntroRain
|
||||
|
||||
pullpc
|
||||
NewIntroRain:
|
||||
PHA
|
||||
LDA.w #$1002
|
||||
STA.l $7003C5, X
|
||||
PLA
|
||||
STA.l $7003D9, X
|
||||
RTL
|
||||
endif
|
||||
30
assets/patches/Misc/TorchTags.asm
Normal file
30
assets/patches/Misc/TorchTags.asm
Normal file
@@ -0,0 +1,30 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=Torch Tags
|
||||
;#PATCH_AUTHOR=Jared_Brian_
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Changes the number of torches required to open doors and chests when using the "Light_Torches_to_Open" and "Light_Torches_to_get_Chest" tags.
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=torches required to make a chest appear.
|
||||
;#type=word
|
||||
;#range=$01,$08
|
||||
!ChestTorches =$01
|
||||
|
||||
;#name=torches required to open a door.
|
||||
;#type=word
|
||||
;#range=$01,$08
|
||||
!DoorTorches =$08
|
||||
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
; Changes the amount of torches required to make a chest appear.
|
||||
org $01C8CA
|
||||
dw !ChestTorches
|
||||
|
||||
; Changes the amount of torches required to open a door.
|
||||
org $01C645
|
||||
dw !DoorTorches
|
||||
pullpc
|
||||
153
assets/patches/Misc/Weathervane.asm
Normal file
153
assets/patches/Misc/Weathervane.asm
Normal file
@@ -0,0 +1,153 @@
|
||||
;#ENABLED=True
|
||||
|
||||
;=========================
|
||||
;TODO FINISH ADDING DEFINES
|
||||
;INCOMPLETE PATCH
|
||||
;==========================
|
||||
;#PATCH_NAME=Weathervane Position
|
||||
;#PATCH_AUTHOR=Jared_Brian_
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Modify the position of where you need to use the flute to destroy weathervane and spawn bird
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
!AREAID = $34
|
||||
|
||||
; Weather vane explosion changes:
|
||||
; Let the flute work in special areas.
|
||||
org $07A40A
|
||||
NOP : NOP
|
||||
|
||||
org $07A418
|
||||
JML NewVaneCheck
|
||||
|
||||
org $07A441
|
||||
VanePassed:
|
||||
|
||||
org $07A44F
|
||||
VaneFailed:
|
||||
|
||||
org $07A453
|
||||
SpawnBird:
|
||||
|
||||
; Disable the area check for the weather vane sprite.
|
||||
org $06C2EB
|
||||
LDA $8A : CMP.b #!AREAID : BNE .outside_village
|
||||
; Check if we have the flute activated already:
|
||||
LDA $7EF34C : CMP.b #$03 : BNE .player_lacks_bird_enabled_flute
|
||||
STZ $0DD0, X
|
||||
|
||||
.player_lacks_bird_enabled_flute
|
||||
|
||||
RTS
|
||||
|
||||
.outside_village
|
||||
|
||||
; What to do in an area outside of the village:
|
||||
LDA $7EF34C : AND.b #$02 : BEQ .player_lacks_flute_completely
|
||||
STZ $0DD0, X ; Suicide.
|
||||
.player_lacks_flute_completely
|
||||
RTS
|
||||
|
||||
warnpc $06C309
|
||||
|
||||
; Tile 1
|
||||
org $1BC226
|
||||
dw $06CA
|
||||
|
||||
; Tile 2
|
||||
org $1BC232
|
||||
dw $06CE
|
||||
|
||||
; Tile 3
|
||||
org $1BC243
|
||||
dw #$074C
|
||||
|
||||
; Bird coords
|
||||
org $098DC1
|
||||
LDA.w #$08C8 : STA $00
|
||||
LDA.w #$0460 : STA $02
|
||||
|
||||
; Vane Debris coords
|
||||
org $098CED
|
||||
.y_coords
|
||||
db $F4, $E7, $E4, $E6, $E4, $EC, $E4, $E4, $EC, $E5, $F4, $E4
|
||||
|
||||
.x_coords
|
||||
db $7C, $5E, $6C, $60, $62, $64, $7C, $60, $64, $62, $60, $6C
|
||||
|
||||
; Debris Y high byte
|
||||
org $098D65
|
||||
db $08
|
||||
|
||||
; Debris X high byte
|
||||
org $098D72
|
||||
db $04
|
||||
|
||||
pullpc ; Continue extended space.
|
||||
|
||||
NewVaneCheck:
|
||||
{
|
||||
REP #$20
|
||||
|
||||
; Check if its the master sword area.
|
||||
LDA $8A : CMP.w #!AREAID : BNE .not_weathervane_trigger2
|
||||
LDA $20
|
||||
CMP.w #$0068 : BCC .not_weathervane_trigger1
|
||||
CMP.w #$00A0 : BCS .not_weathervane_trigger1
|
||||
|
||||
LDA $22
|
||||
CMP.w #$0040 : BCC .not_weathervane_trigger1
|
||||
CMP.w #$00A0 : BCS .not_weathervane_trigger1
|
||||
|
||||
SEP #$20
|
||||
|
||||
; Cancel other sounds
|
||||
STZ $012E
|
||||
STZ $012F
|
||||
|
||||
; Stop player input
|
||||
INC InCutScene
|
||||
|
||||
; Trigger Zelda
|
||||
INC $0642
|
||||
|
||||
JML VaneFailed
|
||||
|
||||
.not_weathervane_trigger2
|
||||
|
||||
SEP #$20
|
||||
|
||||
; Check if we already have the bird.
|
||||
LDA $7EF34C : CMP.b #$02 : BNE .travel_bird_not_already_released
|
||||
REP #$20
|
||||
|
||||
; Check the area for #$22.
|
||||
LDA $8A : CMP.w #$0022 : BNE .not_weathervane_trigger1
|
||||
LDA $20
|
||||
CMP.w #$0900 : BCC .not_weathervane_trigger1
|
||||
CMP.w #$0920 : BCS .not_weathervane_trigger1
|
||||
|
||||
LDA $22
|
||||
CMP.w #$0450 : BCC .not_weathervane_trigger1
|
||||
CMP.w #$0470 : BCS .not_weathervane_trigger1
|
||||
SEP #$20
|
||||
LDA $7EF2A2 : ORA.b #$20 : STA $7EF2A2
|
||||
REP #$20
|
||||
|
||||
STZ FluteIndex
|
||||
|
||||
JML VanePassed
|
||||
|
||||
.not_weathervane_trigger1
|
||||
|
||||
JML VaneFailed
|
||||
|
||||
.travel_bird_not_already_released
|
||||
|
||||
JML SpawnBird
|
||||
}
|
||||
|
||||
pushpc ; Pause expanded space.
|
||||
|
||||
; ==============================================================================
|
||||
22
assets/patches/Music/LostWoodsExitMusic.asm
Normal file
22
assets/patches/Music/LostWoodsExitMusic.asm
Normal file
@@ -0,0 +1,22 @@
|
||||
;#ENABLED=True
|
||||
|
||||
;#PATCH_NAME=Lost Woods Exit Music
|
||||
;#PATCH_AUTHOR=Jared_Brian_
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Changes the room that plays the lost woods theme when exiting. Note: This only works for the first byte, so if you want to play music when leaving room 13, this will also cause room 113 to play the music. In vanilla this is used for room E1 Cave (Lost Woods HP).
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=The room number.
|
||||
;#type=byte
|
||||
!MusicRoomNumber = $E1
|
||||
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
|
||||
org $02844F
|
||||
db !MusicRoomNumber
|
||||
|
||||
pullpc
|
||||
29
assets/patches/Npcs/Bottle Vendor.asm
Normal file
29
assets/patches/Npcs/Bottle Vendor.asm
Normal file
@@ -0,0 +1,29 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=Bottle Vendor
|
||||
;#PATCH_AUTHOR=Zarby89
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Modify the item and price of sold by the Kakariko bottle vendor
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Item Price
|
||||
;#type=word
|
||||
;#decimal=true
|
||||
!ItemPrice = 100
|
||||
|
||||
;#name=Item ID
|
||||
;#type=item
|
||||
!ItemID = $16
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
org $05EAF9
|
||||
dw !BottlePrice
|
||||
|
||||
org $05EB34
|
||||
dw !BottlePrice
|
||||
|
||||
org $05EB18
|
||||
db !ItemID
|
||||
pullpc
|
||||
153
assets/patches/Overworld/TailMapExpansion.asm
Normal file
153
assets/patches/Overworld/TailMapExpansion.asm
Normal file
@@ -0,0 +1,153 @@
|
||||
;#ENABLED=false
|
||||
|
||||
;#PATCH_NAME=Overworld Tail Map Expansion
|
||||
;#PATCH_AUTHOR=yaze
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Expands the overworld pointer tables from 160 to 192 entries,
|
||||
;enabling support for Special World tail maps (0xA0-0xBF).
|
||||
;
|
||||
;IMPORTANT: This patch MUST be applied AFTER ZSCustomOverworld v3.
|
||||
;If applied manually via Asar:
|
||||
; 1. First apply ZSCustomOverworld v3 patch to your ROM
|
||||
; 2. Then apply this patch: asar TailMapExpansion.asm your_rom.sfc
|
||||
;
|
||||
;If applied via yaze CLI:
|
||||
; z3ed overworld-doctor --rom=your_rom.sfc --apply-tail-expansion
|
||||
;
|
||||
;Technical details:
|
||||
; - Relocates Map32 pointer tables from $02:F94D to $28:A400
|
||||
; - Adds 32 blank entries for maps 0xA0-0xBF pointing to $30:8000
|
||||
; - Patches 8 code locations in bank $02 to use new table addresses
|
||||
; - Writes detection marker 0xEA at $28:A3FF
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
lorom
|
||||
|
||||
;==============================================================================
|
||||
; Constants
|
||||
;==============================================================================
|
||||
!OldHighTable = $02F94D ; Vanilla high pointer table (160 entries)
|
||||
!OldLowTable = $02FB2D ; Vanilla low pointer table (160 entries)
|
||||
!NewHighTable = $28A400 ; New high pointer table (192 entries)
|
||||
!NewLowTable = $28A640 ; New low pointer table (192 entries)
|
||||
!BlankMapHigh = $308000 ; Blank map data for tail maps (high bytes)
|
||||
!BlankMapLow = $309000 ; Blank map data for tail maps (low bytes)
|
||||
!MarkerAddr = $28A3FF ; Detection marker location
|
||||
!MarkerValue = $EA ; Detection marker value (NOP opcode = "expanded")
|
||||
|
||||
;==============================================================================
|
||||
; PC address macros (for read3 function)
|
||||
;==============================================================================
|
||||
; LoROM: PC = (bank * $8000) + (addr - $8000)
|
||||
; $02F94D -> PC = (2 * $8000) + ($F94D - $8000) = $10000 + $794D = $1794D
|
||||
!OldHighTablePC = $01794D
|
||||
!OldLowTablePC = $017B2D
|
||||
|
||||
;==============================================================================
|
||||
; Detection marker - allows yaze to detect expanded tables
|
||||
;==============================================================================
|
||||
org !MarkerAddr
|
||||
db !MarkerValue
|
||||
|
||||
;==============================================================================
|
||||
; Blank map data for tail maps (0xA0-0xBF)
|
||||
; Located in safe free space at bank $30
|
||||
;==============================================================================
|
||||
org !BlankMapHigh ; PC $180000
|
||||
BlankMap32High:
|
||||
fillbyte $00
|
||||
fill 188 ; 0xBC bytes - compressed blank map32 high data
|
||||
|
||||
org !BlankMapLow ; PC $181000
|
||||
BlankMap32Low:
|
||||
fillbyte $00
|
||||
fill 4 ; 0x04 bytes - compressed blank map32 low data
|
||||
|
||||
;==============================================================================
|
||||
; New expanded High pointer table (192 entries x 3 bytes = 576 bytes)
|
||||
; Copies existing 160 entries, adds 32 blank entries for tail maps
|
||||
;==============================================================================
|
||||
org !NewHighTable ; PC $142400
|
||||
ExpandedMap32HPointers:
|
||||
; Copy 160 vanilla entries (preserves any ZSCustomOverworld modifications)
|
||||
; Using Asar's read1() to copy bytes from current ROM state
|
||||
!n = 0
|
||||
while !n < 160
|
||||
db read1(!OldHighTablePC+(!n*3)+0)
|
||||
db read1(!OldHighTablePC+(!n*3)+1)
|
||||
db read1(!OldHighTablePC+(!n*3)+2)
|
||||
!n #= !n+1
|
||||
endwhile
|
||||
|
||||
; Add 32 blank entries for tail maps (0xA0-0xBF)
|
||||
; Each entry is a 24-bit pointer to BlankMap32High ($30:8000)
|
||||
!n = 0
|
||||
while !n < 32
|
||||
dl BlankMap32High
|
||||
!n #= !n+1
|
||||
endwhile
|
||||
|
||||
;==============================================================================
|
||||
; New expanded Low pointer table (192 entries x 3 bytes = 576 bytes)
|
||||
;==============================================================================
|
||||
org !NewLowTable ; PC $142640
|
||||
ExpandedMap32LPointers:
|
||||
; Copy 160 vanilla entries (preserves any ZSCustomOverworld modifications)
|
||||
!n = 0
|
||||
while !n < 160
|
||||
db read1(!OldLowTablePC+(!n*3)+0)
|
||||
db read1(!OldLowTablePC+(!n*3)+1)
|
||||
db read1(!OldLowTablePC+(!n*3)+2)
|
||||
!n #= !n+1
|
||||
endwhile
|
||||
|
||||
; Add 32 blank entries for tail maps (0xA0-0xBF)
|
||||
!n = 0
|
||||
while !n < 32
|
||||
dl BlankMap32Low
|
||||
!n #= !n+1
|
||||
endwhile
|
||||
|
||||
;==============================================================================
|
||||
; Patch game code to use new pointer tables
|
||||
; Each LDA.l instruction is 4 bytes: AF xx xx xx (opcode + 24-bit address)
|
||||
; We patch the 3 address bytes to point to the new tables
|
||||
;==============================================================================
|
||||
|
||||
; Function 1: Overworld_DecompressAndDrawOneQuadrant
|
||||
; Original at PC $1F59D: LDA.l $02F94D,X -> LDA.l $28A400,X
|
||||
org $02F59E ; Address bytes of instruction at $02F59D
|
||||
dl ExpandedMap32HPointers ; New high table address
|
||||
|
||||
org $02F5A4 ; Address bytes for +1 offset access
|
||||
dl ExpandedMap32HPointers+1
|
||||
|
||||
; Original at PC $1F5C8: LDA.l $02FB2D,X -> LDA.l $28A640,X
|
||||
org $02F5C9 ; Address bytes of instruction at $02F5C8
|
||||
dl ExpandedMap32LPointers ; New low table address
|
||||
|
||||
org $02F5CF ; Address bytes for +1 offset access
|
||||
dl ExpandedMap32LPointers+1
|
||||
|
||||
; Function 2: Secondary quadrant loader (parallel decompression path)
|
||||
org $02F7E4
|
||||
dl ExpandedMap32HPointers
|
||||
|
||||
org $02F7EA
|
||||
dl ExpandedMap32HPointers+1
|
||||
|
||||
org $02F80F
|
||||
dl ExpandedMap32LPointers
|
||||
|
||||
org $02F815
|
||||
dl ExpandedMap32LPointers+1
|
||||
|
||||
;==============================================================================
|
||||
; End of patch
|
||||
;==============================================================================
|
||||
print "Tail Map Expansion patch applied successfully."
|
||||
print "- New High Table: $28:A400 (192 entries)"
|
||||
print "- New Low Table: $28:A640 (192 entries)"
|
||||
print "- Blank Map Data: $30:8000, $30:9000"
|
||||
print "- Detection Marker: $28:A3FF = $EA"
|
||||
19
assets/patches/Sprites/Crystalswitch Conveyor.asm
Normal file
19
assets/patches/Sprites/Crystalswitch Conveyor.asm
Normal file
@@ -0,0 +1,19 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=Crystal Switch Conveyor
|
||||
;#PATCH_AUTHOR=Zarby89
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Causes crystal switches to be moved by conveyors
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
lorom
|
||||
|
||||
pushpc
|
||||
org $06B8D0
|
||||
JSL ConveyorSwitch
|
||||
NOP
|
||||
pullpc
|
||||
|
||||
ConveyorSwitch:
|
||||
JSL $06E496 ; Sprite_CheckTileCollisionLong
|
||||
LDA.w $0F50, X : AND.b #$F1
|
||||
RTL
|
||||
95
assets/patches/Sprites/Elemental Trinexx.asm
Normal file
95
assets/patches/Sprites/Elemental Trinexx.asm
Normal file
@@ -0,0 +1,95 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=Elemental Trinexx
|
||||
;#PATCH_AUTHOR=Jared_Brian_
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Changes Trinexx's side heads to be both ice heads, both fire heads, or swapped.
|
||||
;The heads will shoot the corrisponding beams and will also appear the correct color.
|
||||
;The main head will appear the elemental color if you set that option but otherwise will be the default palette.
|
||||
;You will still need to set the side heads to take damage from the appropriate elemental rod with the advanced damage editor.
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Changes the arrangement of side heads.
|
||||
;#type=choice
|
||||
;#choice0=Inverted Heads
|
||||
;#choice1=Ice Heads Only
|
||||
;#choice2=Fire Heads Only
|
||||
!ElementType = $00
|
||||
|
||||
;#name=Changes the main head palette.
|
||||
;#type=choice
|
||||
;#choice0=Default Palette
|
||||
;#choice1=Ice Palette
|
||||
;#choice2=Fire Palette
|
||||
!MainHeadPalette = $00
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
|
||||
if !ElementType == 0
|
||||
; Change the palettes of the side heads to the inverted palette.
|
||||
org $0DB425
|
||||
db $0D, $0B
|
||||
|
||||
; Swap which head shows the apropriate particales when charging up.
|
||||
org $1DBAD9
|
||||
db $F0 ; Replace a BNE with a BEQ.
|
||||
|
||||
; Swap which head shoots what beam.
|
||||
org $1DBAE8
|
||||
LDA $0E20, X : CMP.b #$CC
|
||||
|
||||
; Another beam related thing.
|
||||
org $1DBAF8
|
||||
LDA.b #$CC
|
||||
|
||||
elseif !ElementType == 1
|
||||
; Change the palettes of the side heads to the ice palette.
|
||||
org $0DB425
|
||||
db $0D, $0D
|
||||
|
||||
; Make the fire head show ice spakles when charging up.
|
||||
org $1DBAD9
|
||||
db $80 ; Replace a BNE with a BRA.
|
||||
|
||||
; Make the fire head shoot ice instead of fire.
|
||||
org $1DBAE8
|
||||
LDA.b #$CD : NOP #5
|
||||
|
||||
elseif !ElementType == 2
|
||||
; Change the palettes of the side heads to the fire palette.
|
||||
org $0DB425
|
||||
db $0B, $0B
|
||||
|
||||
; Make the ice head show flames when charging up.
|
||||
org $1DBAD9
|
||||
NOP : NOP ; Remove the BNE and never branch.
|
||||
|
||||
; Make the ice head shoot fire instead of ice.
|
||||
org $1DBAE8
|
||||
LDA.b #$CC : NOP : NOP : NOP
|
||||
db $80 ; Replace a BNE with a BRA.
|
||||
|
||||
endif
|
||||
|
||||
if !MainHeadPalette == 1
|
||||
; Change the palette of all the main head to the ice.
|
||||
org $0DB424
|
||||
db $4D
|
||||
|
||||
; Change the snake trinexx palette to ice.
|
||||
org $1DB033
|
||||
db $0D
|
||||
|
||||
elseif !MainHeadPalette == 2
|
||||
; Change the palette of all the main head to the fire.
|
||||
org $0DB424
|
||||
db $4B
|
||||
|
||||
; Change the snake trinexx palette to fire.
|
||||
org $1DB033
|
||||
db $0B
|
||||
endif
|
||||
|
||||
pullpc
|
||||
43
assets/patches/Sprites/Eye Lasers Active.asm
Normal file
43
assets/patches/Sprites/Eye Lasers Active.asm
Normal file
@@ -0,0 +1,43 @@
|
||||
;#PATCH_NAME=Eye Lasers Active
|
||||
;#PATCH_AUTHOR=Jared_Brian_
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Changes the wall eye lasers to always be active or always inactive reguardless of what X position they are placed on.
|
||||
;Normally in vanilla every other X position is set to be inactive unless link is looking directly at them.
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Active?
|
||||
;#type=bool
|
||||
!EyeActive = $00
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
|
||||
if !EyeActive == $00
|
||||
; Make it so the eye lazers are always inactive reguardless of what X position they are placed on.
|
||||
org $1EA50B
|
||||
; Replaced code:
|
||||
; LDA $0D10, X : AND.b #$10 : EOR.b #$10 : STA !requires_facing, X
|
||||
NOP #5 : LDA.b #$00 : STA $0EB0, X
|
||||
|
||||
org $1EA52C
|
||||
; Replace code:
|
||||
; LDA $0D00, X : AND.b #$10 : STA !requires_facing, X
|
||||
NOP #3 : LDA.b #$00 : STA $0EB0, X
|
||||
|
||||
elseif !EyeActive == $01
|
||||
; Make it so the eye lazers are always active reguardless of what X position they are placed on.
|
||||
org $1EA50B
|
||||
; Replaced code:
|
||||
; LDA $0D10, X : AND.b #$10 : EOR.b #$10 : STA !requires_facing, X
|
||||
NOP #5 : LDA.b #$01 : STA $0EB0, X
|
||||
|
||||
org $1EA52C
|
||||
; Replace code:
|
||||
; LDA $0D00, X : AND.b #$10 : STA !requires_facing, X
|
||||
NOP #3 : LDA.b #$01 : STA $0EB0, X
|
||||
|
||||
endif
|
||||
|
||||
pullpc
|
||||
56
assets/patches/Sprites/Khodstare Speeds.asm
Normal file
56
assets/patches/Sprites/Khodstare Speeds.asm
Normal file
@@ -0,0 +1,56 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=Kholdstare Speeds
|
||||
;#PATCH_AUTHOR=Jared_Brian_
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Changes the speeds at which kholdstare can move.
|
||||
;By default he will move the same speed on the x and y axis in all 4 diagonal directions.
|
||||
;Values above 0x80 are negative.
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=X Value 1
|
||||
;#type=byte
|
||||
!XValue1 = $0010
|
||||
|
||||
;#name=X Value 2
|
||||
;#type=byte
|
||||
!XValue2 = $0010
|
||||
|
||||
;#name=X Value 3
|
||||
;#type=byte
|
||||
!XValue3 = $00F0
|
||||
|
||||
;#name=X Value 4
|
||||
;#type=byte
|
||||
!XValue4 = $00F0
|
||||
|
||||
;#name=Y Value 1
|
||||
;#type=byte
|
||||
!YValue1 = $00F0
|
||||
|
||||
;#name=Y Value 2
|
||||
;#type=byte
|
||||
!YValue2 = $0010
|
||||
|
||||
;#name=Y Value 3
|
||||
;#type=byte
|
||||
!YValue3 = $0010
|
||||
|
||||
;#name=Y Value 4
|
||||
;#type=byte
|
||||
!YValue4 = $00F0
|
||||
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
|
||||
; Speed chagnes.
|
||||
org $1E95DD
|
||||
.x_speed_limits
|
||||
db !XValue1, !XValue2, !XValue3, !XValue4
|
||||
|
||||
.y_speed_limits
|
||||
db !YValue1, !YValue2, !YValue3, !YValue4
|
||||
|
||||
pullpc
|
||||
24
assets/patches/Sprites/Spike Damage.asm
Normal file
24
assets/patches/Sprites/Spike Damage.asm
Normal file
@@ -0,0 +1,24 @@
|
||||
;#ENABLED=True
|
||||
;#PATCH_NAME=Spike damage
|
||||
;#PATCH_AUTHOR=kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Allows mail upgrades to reduce sprite damage
|
||||
;$08 = 1 heart, $04 = half heart, $10 = 2 heart, etc...
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
|
||||
;#DEFINE_START
|
||||
;#name=Green Mail Damage
|
||||
!GreenMailDamage = $08
|
||||
;#name=Blue Mail Damage
|
||||
!BlueMailDamage = $08
|
||||
;#name=Red Mail Damage
|
||||
!RedMailDamage = $08
|
||||
;#DEFINE_END
|
||||
|
||||
pushpc
|
||||
org $07BA07
|
||||
db !GreenMailDamage
|
||||
db !BlueMailDamage
|
||||
db !RedMailDamage
|
||||
pullpc
|
||||
52
assets/patches/Sprites/Spikes_Subtype.asm
Normal file
52
assets/patches/Sprites/Spikes_Subtype.asm
Normal file
@@ -0,0 +1,52 @@
|
||||
;#ENABLED=True
|
||||
|
||||
;#PATCH_NAME=More spike directions
|
||||
;#PATCH_AUTHOR=Zarby89,kan
|
||||
;#PATCH_VERSION=1.0
|
||||
;#PATCH_DESCRIPTION
|
||||
;Allows more spike blocks Subtype (sprite property)
|
||||
;Default Values : (00) = normal, (08) = normal vertical
|
||||
;Values, ascending by speed
|
||||
;00,01,02,03,04,05,06 = Horizontal
|
||||
;08,09,0A,0B,0C,0D,0E = Vertical
|
||||
;#ENDPATCH_DESCRIPTION
|
||||
lorom
|
||||
|
||||
pushpc
|
||||
org $0691D7 ; SpritePrep_SpikeBlock:
|
||||
JSL NewSpikePrep
|
||||
RTS
|
||||
|
||||
org $1EBD0E
|
||||
JSL NewSpikeCollision
|
||||
RTS
|
||||
pullpc
|
||||
|
||||
speedValuesH:
|
||||
db $20, $10, $18, $28, $30, $38, $40, $FF
|
||||
db $00, $00, $00, $00, $00, $00, $00, $FF
|
||||
|
||||
speedValuesV:
|
||||
db $00, $00, $00, $00, $00, $00, $00, $FF
|
||||
db $20, $18, $20, $28, $30, $38, $40, $FF
|
||||
|
||||
NewSpikePrep:
|
||||
TXY
|
||||
|
||||
LDX.w $0E30,Y
|
||||
|
||||
LDA.l speedValuesH,X : STA.w $0D50,Y
|
||||
LDA.l speedValuesV,X : STA.w $0D40,Y
|
||||
|
||||
TYX
|
||||
RTL
|
||||
|
||||
NewSpikeCollision:
|
||||
LDA.b #$04 : STA.w $0DF0, X
|
||||
|
||||
LDA.w $0D50, X : EOR.b #$FF : INC A : STA.w $0D50, X
|
||||
LDA.w $0D40, X : EOR.b #$FF : INC A : STA.w $0D40, X
|
||||
|
||||
LDA.b #$05 : JSL $0DBB7C ; Sound_SetSfx2PanLong
|
||||
|
||||
RTL
|
||||
1
assets/patches/Version.txt
Normal file
1
assets/patches/Version.txt
Normal file
@@ -0,0 +1 @@
|
||||
0000
|
||||
Reference in New Issue
Block a user