144 lines
4.1 KiB
NASM
144 lines
4.1 KiB
NASM
GtBossHeartCheckOverride:
|
|
lda.b RoomIndex : cmp.b #$1c : beq ++
|
|
cmp.b #$6c : beq ++
|
|
cmp.b #$4d : bne +
|
|
++ lda.l DRFlags : and.b #$01 : bne ++ ;skip if flag on
|
|
lda.w RoomItemsTaken : ora.b #$80 : sta.w RoomItemsTaken
|
|
++ clc
|
|
rtl
|
|
+ sec
|
|
rtl
|
|
|
|
OnFileLoadOverride:
|
|
jsl OnFileLoad ; what I wrote over
|
|
+ lda.l DRFlags : and.b #$02 : beq + ; Mirror Scroll
|
|
lda.l MirrorEquipment : bne +
|
|
lda.b #$01 : sta.l MirrorEquipment
|
|
+ rtl
|
|
|
|
MirrorCheckOverride:
|
|
lda.l DRFlags : and.b #$02 : beq ++
|
|
lda.l MirrorEquipment : cmp.b #$01 : beq +
|
|
;++ lda.b OverworldIndex : and.b #$40 ; what I wrote over
|
|
++ phx : ldx.b OverworldIndex : lda.l OWTileWorldAssoc,x : plx : and.b #$ff
|
|
rtl
|
|
+ lda.l DRScroll : rtl
|
|
|
|
EGFixOnMirror:
|
|
lda.l DRFlags : and.b #$10 : beq +
|
|
stz.w LayerAdjustment
|
|
+ jsl Mirror_SaveRoomData
|
|
rtl
|
|
|
|
BlockEraseFix:
|
|
lda.l MirrorEquipment : and.b #$02 : beq +
|
|
stz.w $05fc : stz.w $05fd
|
|
+ rtl
|
|
|
|
FixShopCode:
|
|
cpx.w #$0300 : !bge +
|
|
sta.l RoomDataWRAM[$00].l, x
|
|
+ rtl
|
|
|
|
VitreousKeyReset:
|
|
LDA.l FixPrizeOnTheEyes : BEQ +
|
|
STZ.w SpriteForceDrop, X
|
|
+ JML SpritePrep_LoadProperties ; what we wrote over
|
|
|
|
GuruguruFix:
|
|
lda.b RoomIndex : cmp.b #$df : !bge +
|
|
and.b #$0f : cmp.b #$0e : !blt +
|
|
iny #2
|
|
+ rtl
|
|
|
|
BlindAtticFix:
|
|
lda.l DRMode : beq +
|
|
lda.b #$01 : rtl
|
|
+ lda.l FollowerIndicator : cmp.b #$06
|
|
rtl
|
|
|
|
SuctionOverworldFix:
|
|
stz.b LinkStrafe : stz.b LinkSpeed
|
|
lda.l DRMode : beq +
|
|
stz.b ForceMove
|
|
+ rtl
|
|
|
|
CutoffEntranceRug:
|
|
PHA : PHX
|
|
LDA.l DRMode : BEQ .norm
|
|
LDA.b Scrap04 : CMP.w #$000A : BEQ + ; only affect A & C objects
|
|
CMP.w #$000C : BNE .norm
|
|
+ LDX.w #$0000 : LDA.l CutoffRooms, x
|
|
- CMP.b RoomIndex : BEQ .check
|
|
INX #2 : LDA.l CutoffRooms, x : CMP.w #$FFFF : BNE -
|
|
.norm
|
|
PLX : PLA : LDA.w $9B52, Y : STA.l TileMapA, X ; what we wrote over
|
|
RTL
|
|
.check
|
|
LDA.b Scrap0C : CMP.w #$0004 : !BGE .skip
|
|
LDA.b Scrap0E : CMP.w #$0008 : !BGE .skip
|
|
CMP.w #$0004 : !BLT .skip
|
|
BRA .norm
|
|
.skip
|
|
PLX : PLA : RTL
|
|
|
|
StoreTempBunnyState:
|
|
LDA.b LinkState : CMP.b #$1C : BNE +
|
|
STA.b ManipTileField
|
|
+ LDA.b #$15 : STA.b LinkState ; what we wrote over
|
|
RTL
|
|
|
|
RetrieveBunnyState:
|
|
STY.b LinkState : STZ.w ItemReceiptID ; what we wrote over
|
|
LDA.b ManipTileField : BEQ +
|
|
STA.b LinkState
|
|
+ JML MaybeKeepLootID
|
|
|
|
; A should be how much dmg to do to Aga when leaving this function, 0 if prevented
|
|
StandardAgaDmg:
|
|
LDX.b #$00 ; part of what we wrote over
|
|
LDA.l ProgressFlags : AND.b #$04 : BNE .enableDamage ; zelda's been rescued, no further checks needed
|
|
; zelda's not been rescued
|
|
LDA.l AllowAgaDamageBeforeZeldaRescued : BEQ + ; zelda needs to be rescued if not allowed
|
|
.enableDamage
|
|
LDA.b #$10 ; hurt him!
|
|
+ RTL
|
|
|
|
StandardSaveAndQuit:
|
|
LDA.b #$0F : STA.b MOSAICQ ; what we wrote over
|
|
LDA.l ProgressFlags : AND.b #$04 : BNE +
|
|
LDA.l DRMode : BEQ +
|
|
LDA.l StartingEntrance : CMP.b #$02 : BCC +
|
|
LDA.b #$03 : STA.l StartingEntrance ; set spawn to uncle if >=
|
|
+ RTL
|
|
|
|
; note: this skips both maiden dialog triggers if the hole is open
|
|
BlindsAtticHint:
|
|
REP #$20
|
|
CMP.w #$0122 : BNE +
|
|
LDA.l RoomDataWRAM[$65].low : AND.w #$0100 : BEQ +
|
|
SEP #$20 : RTL ; skip the dialog box if the hole is already open
|
|
+ SEP #$20 : JML Main_ShowTextMessage
|
|
|
|
BlindZeldaDespawnFix:
|
|
CMP.b #06 : BEQ +
|
|
LDA.w SpritePosYLow,X : BEQ + ; don't despawn follower if maiden isn't "present"
|
|
PLA : PLA : PEA.w SpritePrep_BlindMaiden_despawn_follower-1 : RTL
|
|
+ PLA : PLA : PEA.w SpritePrep_BlindMaiden_kill_the_girl-1 : RTL
|
|
|
|
BigKeyDoorCheck:
|
|
CPY.w #$001E : BNE + ; skip if it isn't a BK door
|
|
LDA.l DRFlags : AND.w #$0400 : BNE + ; skip if the flag is set - bk doors can be double-sided
|
|
PLA : PEA.w RoomDraw_OneSidedShutters_South_onesided_shutter_or_big_key_door-1
|
|
+ LDA.w #$0000 : RTL
|
|
|
|
; FixOvalFadeOutMirror:
|
|
; LDA.b GameMode : CMP.b #$0F : BEQ .skip_activation
|
|
; LDA.l InvertedMode : BNE +
|
|
; LDA.l CurrentWorld : BNE .skip_activation
|
|
; RTL
|
|
; + LDA.l CurrentWorld : BEQ .skip_activation
|
|
; RTL
|
|
; .skip_activation
|
|
; PLA : PLA : PLA : JML Sprite_6C_MirrorPortal_missing_mirror
|