1 Commits

17 changed files with 66 additions and 192 deletions

View File

@@ -53,17 +53,6 @@ RTL
GiveBonkItem: GiveBonkItem:
LDA.w SprItemMWPlayer, X : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.w SprItemMWPlayer, X : STA.l !MULTIWORLD_ITEM_PLAYER_ID
LDA.w SprSourceItemId, X LDA.w SprSourceItemId, X
PHY : TAY
JSL ShieldCheck
TYA : PLY
BCS +
STZ.w $0DD0, X
PLA : PLA : PLA ; remove the stored return address
JML $85FC9D
+
JSR AbsorbKeyCheck : BCC .notKey JSR AbsorbKeyCheck : BCC .notKey
PHY : LDY.b #$24 : JSL AddInventory : PLY ; do inventory processing for a small key PHY : LDY.b #$24 : JSL AddInventory : PLY ; do inventory processing for a small key
LDA.l CurrentSmallKeys : INC A : STA.l CurrentSmallKeys LDA.l CurrentSmallKeys : INC A : STA.l CurrentSmallKeys

View File

@@ -72,27 +72,18 @@ JML Dungeon_OpenKeyedObject_nextChest
TXA : LSR TXA : LSR
JSL RetrieveValueFromEncryptedTable JSL RetrieveValueFromEncryptedTable
JSL ShieldCheck
STA.b Scrap0C STA.b Scrap0C
PLA : STA.b Scrap02 : PLA : STA.b Scrap00 PLA : STA.b Scrap02 : PLA : STA.b Scrap00
LDA.l ChestData, X : ASL A : BCC .smallChest LDA.l ChestData, X : ASL A : BCC .smallChest
PHY JSL ShieldCheck : BCC .couldntFindChest
LDY.b Scrap0C
JSL ShieldCheck
STY.b Scrap0C
PLY
BCC .couldntFindChest
JML Dungeon_OpenKeyedObject_bigChest ;(bank01.asm line #13783) JML Dungeon_OpenKeyedObject_bigChest ;(bank01.asm line #13783)
.smallChest .smallChest
PHY JSL ShieldCheck : BCC .couldntFindChest
LDY.b Scrap0C
JSL ShieldCheck
STY.b Scrap0C
PLY
BCC .couldntFindChest
JML Dungeon_OpenKeyedObject_smallChest JML Dungeon_OpenKeyedObject_smallChest
.couldntFindChest .couldntFindChest

View File

@@ -88,7 +88,6 @@ RTL
PrizeReceiveItem: PrizeReceiveItem:
PHA PHA
LDA.b #$00 : STA.l BossDropTouched
JSL BossPrizeGetPlayer : STA.l !MULTIWORLD_ITEM_PLAYER_ID JSL BossPrizeGetPlayer : STA.l !MULTIWORLD_ITEM_PLAYER_ID
PLA PLA
CMP.b #$6A : BNE + CMP.b #$6A : BNE +
@@ -106,7 +105,7 @@ RTL
SetItemPose: SetItemPose:
PHA PHA
LDA.w DungeonID : BMI .one_handed LDA.w DungeonID : BMI .one_handed
JSL CheckBossDropTouched : BNE + LDA.w RoomItemsTaken : BIT.b #$80 : BNE +
.one_handed .one_handed
PLA PLA
JML Link_ReceiveItem_not_cool_pose JML Link_ReceiveItem_not_cool_pose
@@ -135,7 +134,7 @@ SetCutsceneFlag:
PHX PHX
LDY.b #$01 ; wrote over LDY.b #$01 ; wrote over
LDA.w DungeonID : BMI .no_cutscene LDA.w DungeonID : BMI .no_cutscene
JSL CheckBossDropTouched : BNE .dungeon_prize LDA.w RoomItemsTaken : BIT.b #$80 : BNE .dungeon_prize
.no_cutscene .no_cutscene
SEP #$30 SEP #$30
PLX PLX
@@ -156,7 +155,7 @@ AnimatePrizeCutscene:
LDA.w ItemReceiptMethod : CMP.b #$03 : BNE + LDA.w ItemReceiptMethod : CMP.b #$03 : BNE +
JSR CrystalOrPendantBehavior : BCC + JSR CrystalOrPendantBehavior : BCC +
LDA.w DungeonID : BMI + LDA.w DungeonID : BMI +
JSL CheckBossDropTouched : BEQ + LDA.w RoomItemsTaken : BIT.b #$80 : BEQ +
SEC SEC
RTL RTL
+ +
@@ -173,7 +172,7 @@ PrizeDropSparkle:
RTL RTL
HandleDropSFX: HandleDropSFX:
JSL CheckBossDropTouched : BEQ .no_sound LDA.w RoomItemsTaken : BIT.b #$80 : BEQ .no_sound
JSR CrystalOrPendantBehavior : BCC .no_sound JSR CrystalOrPendantBehavior : BCC .no_sound
SEC SEC
RTL RTL
@@ -193,7 +192,7 @@ RTL
MaybeKeepLootID: MaybeKeepLootID:
PHA PHA
LDA.w DungeonID : BMI .no_prize LDA.w DungeonID : BMI .no_prize
JSL CheckBossDropTouched : BNE .prize LDA.w RoomItemsTaken : BIT.b #$80 : BNE .prize
.no_prize .no_prize
STZ.w ItemReceiptID STZ.w ItemReceiptID
STZ.w ItemReceiptPose STZ.w ItemReceiptPose
@@ -217,15 +216,6 @@ CheckSpawnPrize:
SEP #$21 SEP #$21
RTL RTL
CheckBossDropTouched:
; Out: z - boss drop not touched
LDA.w RoomItemsTaken
AND.b #$80
BNE .done
LDA.l BossDropTouched
.done
RTL
CheckDungeonCompletion: CheckDungeonCompletion:
LDX.w DungeonID LDX.w DungeonID
REP #$20 REP #$20

View File

@@ -70,7 +70,7 @@ GetAgahnimLightning:
;1 = Forbid ;1 = Forbid
AllowJoypadInput: AllowJoypadInput:
LDA.l PermitSQFromBosses : BEQ .fullCheck LDA.l PermitSQFromBosses : BEQ .fullCheck
JSL CheckBossDropTouched : BEQ .fullCheck LDA.w RoomItemsTaken : AND.b #$80 : BEQ .fullCheck
LDA.w MedallionFlag : ORA.w CutsceneFlag ; we have heart container, do short check LDA.w MedallionFlag : ORA.w CutsceneFlag ; we have heart container, do short check
RTL RTL
.fullCheck .fullCheck

View File

@@ -2,20 +2,13 @@
; Randomize Half Magic Bat ; Randomize Half Magic Bat
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
GetMagicBatItem: GetMagicBatItem:
JSL ItemSet_MagicBat
%GetPossiblyEncryptedItem(MagicBatItem, SpriteItemValues) %GetPossiblyEncryptedItem(MagicBatItem, SpriteItemValues)
CMP.b #$FF : BEQ .normalLogic CMP.b #$FF : BEQ .normalLogic
TAY TAY
PHA PHA : LDA.l MagicBatItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID : PLA
JSL ShieldCheck
BCC .have_shield
LDA.l MagicBatItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
JSL ItemSet_MagicBat
PLA
STZ.b ItemReceiptMethod ; 0 = Receiving item from an NPC or message STZ.b ItemReceiptMethod ; 0 = Receiving item from an NPC or message
JML Link_ReceiveItem JML Link_ReceiveItem
.have_shield
PLA
RTL
.normalLogic .normalLogic
LDA.l HalfMagic LDA.l HalfMagic
STA.l MagicConsumption STA.l MagicConsumption

View File

@@ -5,17 +5,8 @@ HeartPieceGet:
PHX : PHY PHX : PHY
LDA.w SprItemMWPlayer, X : STA.l !MULTIWORLD_SPRITEITEM_PLAYER_ID LDA.w SprItemMWPlayer, X : STA.l !MULTIWORLD_SPRITEITEM_PLAYER_ID
LDY.w SprSourceItemId, X LDY.w SprSourceItemId, X
JSL HeartGet
BCC +
JSL MaybeMarkDigSpotCollected JSL MaybeMarkDigSpotCollected
+ .skipLoad
PLY : PLX
RTL
;--------------------------------------------------------------------------------
HeartGet:
JSL ShieldCheck
BCC .skip
LDA.w SprItemMWPlayer, X : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.w SprItemMWPlayer, X : STA.l !MULTIWORLD_ITEM_PLAYER_ID
CPY.b #$26 : BNE .not_heart ; don't add a 1/4 heart if it's not a heart piece CPY.b #$26 : BNE .not_heart ; don't add a 1/4 heart if it's not a heart piece
CMP.b #$00 : BNE .not_heart CMP.b #$00 : BNE .not_heart
@@ -25,27 +16,15 @@ HeartGet:
STZ.w ItemReceiptMethod ; 0 = Receiving item from an NPC or message STZ.w ItemReceiptMethod ; 0 = Receiving item from an NPC or message
JSL Link_ReceiveItem JSL Link_ReceiveItem
JSL MaybeUnlockTabletAnimation JSL MaybeUnlockTabletAnimation
SEC
RTL PLY : PLX
.skip
JSL MaybeFreeLinkFromTablet
CLC
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
HeartContainerGet: HeartContainerGet:
PHX : PHY PHX : PHY
JSL IncrementBossSword JSL IncrementBossSword
LDY.w SprSourceItemId, X LDY.w SprSourceItemId, X
JSL HeartGet BRA HeartPieceGet_skipLoad
PLY : PLX
BCC +
LDA.w RoomItemsTaken
ORA.b #$80
STA.w RoomItemsTaken
+
LDA.b #$01
STA.l BossDropTouched
RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
DrawHeartPieceGFX: DrawHeartPieceGFX:
PHP PHP

View File

@@ -1053,12 +1053,8 @@ Overworld_Entrance_BRANCH_EPSILON: ; go here to lock doors
org $81C50D : JSL CheckDungeonWorld org $81C50D : JSL CheckDungeonWorld
org $81C517 : JSL CheckDungeonCompletion org $81C517 : JSL CheckDungeonCompletion
org $81C523 : JSL CheckDungeonCompletion org $81C523 : JSL CheckDungeonCompletion
org $81C709 : JSL CheckBossDropTouched : NOP org $81C710 : JSL CheckSpawnPrize
org $81C710 BCS RoomTag_GetHeartForPrize_spawn_prize : BRA RoomTag_GetHeartForPrize_delete_tag
JSL CheckSpawnPrize
BCS RoomTag_GetHeartForPrize_spawn_prize
BRA RoomTag_GetHeartForPrize_delete_tag
warnpc $81C731
org $81C742 : JSL SpawnDungeonPrize : PLA : RTS org $81C742 : JSL SpawnDungeonPrize : PLA : RTS
org $8799EA : JML SetItemPose org $8799EA : JML SetItemPose
org $88C415 : JSL PendantMusicCheck org $88C415 : JSL PendantMusicCheck
@@ -1070,7 +1066,6 @@ org $88C622 : BCC ItemReceipt_Animate_continue
org $88C6BA : JSL CheckPoseItemCoordinates org $88C6BA : JSL CheckPoseItemCoordinates
org $88C6C3 : JSL PrepPrizeVRAMHigh org $88C6C3 : JSL PrepPrizeVRAMHigh
org $88C6F4 : JSL PrepPrizeVRAMLow org $88C6F4 : JSL PrepPrizeVRAMLow
org $88CAC4 : JSL CheckBossDropTouched : NOP
org $88CAD6 : JSL HandleDropSFX : NOP #2 org $88CAD6 : JSL HandleDropSFX : NOP #2
org $88CADC : BCC Ancilla29_MilestoneItemReceipt_skip_crystal_sfx org $88CADC : BCC Ancilla29_MilestoneItemReceipt_skip_crystal_sfx
org $88CAE9 : JSL PrepPrizeTile org $88CAE9 : JSL PrepPrizeTile
@@ -2010,7 +2005,7 @@ org $85EE53 ; <- 2EE53 - mushroom.asm : 22
JSL ItemCheck_Mushroom : NOP #2 JSL ItemCheck_Mushroom : NOP #2
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $85EE8C ; <- 2EE8C - mushroom.asm : 69 org $85EE8C ; <- 2EE8C - mushroom.asm : 69
JSL ItemSet_Mushroom : NOP #5 JSL ItemSet_Mushroom : NOP
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $85F53E ; <- 2F53E - sprite_potion_shop.asm : 40 org $85F53E ; <- 2F53E - sprite_potion_shop.asm : 40
JSL ItemCheck_Powder : CMP.b #$20 JSL ItemCheck_Powder : CMP.b #$20
@@ -2038,10 +2033,7 @@ org $85EF79 ; <- 2EF79 - sprite_heart_upgrades.asm:128 (JSL Sprite_PrepAndDrawSi
JSL DrawHeartContainerGFX JSL DrawHeartContainerGFX
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $85EFCE ; <- 2EFCE - sprite_heart_upgrades.asm:176 (JSL Link_ReceiveItem) org $85EFCE ; <- 2EFCE - sprite_heart_upgrades.asm:176 (JSL Link_ReceiveItem)
JSL HeartContainerGet ; this also handles setting the boss-killed flag if appropriate JSL HeartContainerGet
PLX
RTS
warnpc $85EFDC
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $8799B1 ; 399B1 - Bank07.asm:4063 (CPY.b #$3E : BNE .notHeartContainer) org $8799B1 ; 399B1 - Bank07.asm:4063 (CPY.b #$3E : BNE .notHeartContainer)
@@ -2067,13 +2059,10 @@ JSL HeartPieceSpawnDelayFix
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $85F08A ; <- 2F08A - sprite_heart_upgrades.asm : 324 - (LDA $7EF36B : INC A : AND.b #$03 : STA $7EF36B : BNE .got_4_piecese) item determination org $85F08A ; <- 2F08A - sprite_heart_upgrades.asm : 324 - (LDA $7EF36B : INC A : AND.b #$03 : STA $7EF36B : BNE .got_4_piecese) item determination
JSL HeartPieceGet JSL HeartPieceGet
PHP
JSL DynamicDrawCleanup JSL DynamicDrawCleanup
PLP : BCC +
JSL IsMedallion JSL IsMedallion
BCS + : BRA Sprite_EB_HeartPiece_handle_flags : + ; Don't change OW flags if we're BCS + : BRA Sprite_EB_HeartPiece_handle_flags : + ; Don't change OW flags if we're
STZ.w SpriteAITable, X : RTS ; getting a tablet item STZ.w SpriteAITable, X : RTS ; getting a tablet item
warnpc $85F0C0
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $86C0B0 ; <- 340B0 - sprite prep org $86C0B0 ; <- 340B0 - sprite prep
JSL HeartPieceSpritePrep JSL HeartPieceSpritePrep
@@ -2869,6 +2858,3 @@ JSL LinkAwaken
org $879A31 org $879A31
JSL TuckLink JSL TuckLink
NOP #2 NOP #2
org $80F950
NOP #2

View File

@@ -650,21 +650,14 @@ CollectPowder:
BNE + BNE +
; if for any reason the item value is 0 reload it, just in case ; if for any reason the item value is 0 reload it, just in case
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues) : TAY %GetPossiblyEncryptedItem(WitchItem, SpriteItemValues) : TAY
+ + PHA
PHA
JSL ShieldCheck
BCC .skip
LDA.l WitchItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l WitchItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
LDA.b #$01 : STA.l ShopEnableCount LDA.b #$01 : STA.l ShopEnableCount
PLA PLA
STZ.w ItemReceiptMethod ; item from NPC STZ.w ItemReceiptMethod ; item from NPC
JSL Link_ReceiveItem JSL Link_ReceiveItem
PHA : LDA.b #$00 : STA.l ShopEnableCount : STA.l PowderFlag PHA : LDA.b #$00 : STA.l ShopEnableCount : STA.l PowderFlag : PLA
JSL ItemSet_Powder JSL ItemSet_Powder
.skip
PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -416,10 +416,10 @@ macro SpriteProps(id, chest_width, standing_width, chest_pal, standing_pal, addr
pullpc pullpc
endmacro endmacro
%SpriteProps($00, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 00 - Fighter sword & Shield %SpriteProps($00, 0, 2, $05, $02, PalettesVanilla_blue_ice+$0E) ; 00 - Fighter sword & Shield
%SpriteProps($01, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 01 - Master sword %SpriteProps($01, 0, 2, $05, $05, PalettesCustom_master_sword) ; 01 - Master sword
%SpriteProps($02, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 02 - Tempered sword %SpriteProps($02, 0, 2, $05, $01, PalettesCustom_tempered_sword) ; 02 - Tempered sword
%SpriteProps($03, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 03 - Golden sword %SpriteProps($03, 0, 2, $05, $04, PalettesCustom_golden_sword) ; 03 - Golden sword
%SpriteProps($04, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 04 - Fighter shield %SpriteProps($04, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 04 - Fighter shield
%SpriteProps($05, 2, 2, $05, $80, PalettesCustom_red_shield) ; 05 - Fire shield %SpriteProps($05, 2, 2, $05, $80, PalettesCustom_red_shield) ; 05 - Fire shield
%SpriteProps($06, 2, 2, $05, $80, PalettesCustom_mirror_shield) ; 06 - Mirror shield %SpriteProps($06, 2, 2, $05, $80, PalettesCustom_mirror_shield) ; 06 - Mirror shield
@@ -489,7 +489,7 @@ endmacro
%SpriteProps($46, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 46 - 300 rupees %SpriteProps($46, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 46 - 300 rupees
%SpriteProps($47, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 47 - 20 rupees green %SpriteProps($47, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 47 - 20 rupees green
%SpriteProps($48, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 48 - Full bottle (good bee) %SpriteProps($48, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 48 - Full bottle (good bee)
%SpriteProps($49, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 49 - Tossed fighter sword %SpriteProps($49, 0, 2, $05, $02, PalettesCustom_fighter_shield) ; 49 - Tossed fighter sword
%SpriteProps($4A, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 4A - Active Flute %SpriteProps($4A, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 4A - Active Flute
%SpriteProps($4B, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 4B - Boots %SpriteProps($4B, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 4B - Boots
%SpriteProps($4C, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 4C - Bomb capacity (50) %SpriteProps($4C, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 4C - Bomb capacity (50)
@@ -1220,10 +1220,10 @@ ItemReceiptGraphicsOffsets:
; for receipt and non-receipt drawing. ; for receipt and non-receipt drawing.
;=================================================================================================== ;===================================================================================================
StandingItemGraphicsOffsets: StandingItemGraphicsOffsets:
dw BigDecompressionBuffer+$09E0 ; 00 - Fighter Sword and Shield dw $0860 ; 00 - Fighter Sword and Shield
dw BigDecompressionBuffer+$09E0 ; 01 - Master Sword dw $00E0 ; 01 - Master Sword
dw BigDecompressionBuffer+$09E0 ; 02 - Tempered Sword dw $0120 ; 02 - Tempered Sword
dw BigDecompressionBuffer+$09E0 ; 03 - Butter Sword dw $0160 ; 03 - Butter Sword
dw BigDecompressionBuffer+$09E0 ; 04 - Fighter Shield dw BigDecompressionBuffer+$09E0 ; 04 - Fighter Shield
dw BigDecompressionBuffer+$1940 ; 05 - Fire Shield dw BigDecompressionBuffer+$1940 ; 05 - Fire Shield
dw BigDecompressionBuffer+$0C80 ; 06 - Mirror Shield dw BigDecompressionBuffer+$0C80 ; 06 - Mirror Shield
@@ -1293,7 +1293,7 @@ StandingItemGraphicsOffsets:
dw BigDecompressionBuffer+$0DA0 ; 46 - 300 rupees dw BigDecompressionBuffer+$0DA0 ; 46 - 300 rupees
dw BigDecompressionBuffer+$0000 ; 47 - 20 rupees green dw BigDecompressionBuffer+$0000 ; 47 - 20 rupees green
dw BigDecompressionBuffer+$09E0 ; 48 - Full bottle (good bee) dw BigDecompressionBuffer+$09E0 ; 48 - Full bottle (good bee)
dw BigDecompressionBuffer+$09E0 ; 49 - Tossed fighter sword dw $00A0 ; 49 - Tossed fighter sword
dw BigDecompressionBuffer+$09E0 ; 4A - Active Flute dw BigDecompressionBuffer+$09E0 ; 4A - Active Flute
dw BigDecompressionBuffer+$09E0 ; 4B - Boots dw BigDecompressionBuffer+$09E0 ; 4B - Boots

View File

@@ -696,14 +696,6 @@ KeyGet:
LDA.l StandingItemsOn : BNE + LDA.l StandingItemsOn : BNE +
PLA : RTL PLA : RTL
+ LDY.w SprSourceItemId, X + LDY.w SprSourceItemId, X
JSL ShieldCheck
BCS .not_replaced
PLA : PLA : PLA ; remove stored address to jump back to
PLA ; restore the A value going into KeyGet
JML $86D1A8
.not_replaced
LDA.w SprItemIndex, X : STA.w SpawnedItemIndex LDA.w SprItemIndex, X : STA.w SpawnedItemIndex
LDA.w SprItemFlags, X : STA.w SpawnedItemFlag LDA.w SprItemFlags, X : STA.w SpawnedItemFlag
STY.b Scrap00 STY.b Scrap00

View File

@@ -202,11 +202,6 @@ RTL
Multiworld_BottleVendor_GiveBottle: Multiworld_BottleVendor_GiveBottle:
{ {
PHA
JSL ShieldCheck
PLA
BCC .no_take_shield
PHA : PHP PHA : PHP
SEP #$20 SEP #$20
LDA.l BottleMerchant_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l BottleMerchant_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
@@ -214,10 +209,6 @@ Multiworld_BottleVendor_GiveBottle:
JSL Link_ReceiveItem ; thing we wrote over JSL Link_ReceiveItem ; thing we wrote over
RTL RTL
.no_take_shield
PLA : PLA : PLA : PLX
JML $85EB3A
} }
Multiworld_MiddleAgedMan_ReactToSecretKeepingResponse: Multiworld_MiddleAgedMan_ReactToSecretKeepingResponse:

View File

@@ -99,8 +99,10 @@ RTL
ItemSet_OldMan: ItemSet_OldMan:
PHA PHA
TYA : STA.b $0C
JSL ShieldCheck JSL ShieldCheck
BCC .skip BCC .skip
LDA.b $0C : TAY
LDA.l OldManItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l OldManItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
PLA PLA
@@ -117,8 +119,10 @@ RTL
ItemSet_SickKid: ItemSet_SickKid:
PHA PHA
TYA : STA.b $0C
JSL ShieldCheck JSL ShieldCheck
BCC .skip BCC .skip
LDA.b $0C : TAY
LDA.l SickKidItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l SickKidItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
PLA PLA
@@ -131,8 +135,10 @@ RTL
ItemSet_TreeKid: ItemSet_TreeKid:
PHA PHA
TYA : STA.b $0C
JSL ShieldCheck JSL ShieldCheck
BCC .skip BCC .skip
LDA.b $0C : TAY
LDA.l TreeKidItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l TreeKidItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
PLA PLA
@@ -145,8 +151,10 @@ RTL
ItemSet_Sahasrala: ItemSet_Sahasrala:
PHA PHA
TYA : STA.b $0C
JSL ShieldCheck JSL ShieldCheck
BCC .skip BCC .skip
LDA.b $0C : TAY
LDA.l SahasralaItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l SahasralaItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
PLA PLA
@@ -163,8 +171,10 @@ RTL
ItemSet_Library: ItemSet_Library:
PHA PHA
TYA : STA.b $0C
JSL ShieldCheck JSL ShieldCheck
BCC .skip BCC .skip
LDA.b $0C : TAY
LDA.l LibraryItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l LibraryItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
PLA PLA
@@ -177,23 +187,15 @@ RTL
ItemSet_Mushroom: ItemSet_Mushroom:
PHA PHA
LDA.l NpcFlags+1 : ORA.b #$10 : STA.l NpcFlags+1
LDY.w SprSourceItemId, X ; Retrieve stored item type LDY.w SprSourceItemId, X ; Retrieve stored item type
BNE + BNE +
; if for any reason the item value is 0 reload it, just in case ; if for any reason the item value is 0 reload it, just in case
%GetPossiblyEncryptedItem(MushroomItem, SpriteItemValues) : TAY %GetPossiblyEncryptedItem(MushroomItem, SpriteItemValues) : TAY
+ +
JSL ShieldCheck
BCC .skip
LDA.l MushroomItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l MushroomItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
PLA
STZ.w ItemReceiptMethod ; thing we wrote over - the mushroom is an npc for item purposes apparently STZ.w ItemReceiptMethod ; thing we wrote over - the mushroom is an npc for item purposes apparently
PLA
JSL Link_ReceiveItem
PHA
LDA.l NpcFlags+1 : ORA.b #$10 : STA.l NpcFlags+1
.skip
PLA
RTL RTL
ItemSet_Powder: ItemSet_Powder:
@@ -271,16 +273,20 @@ MarkThrownItem:
LDA.b OverworldIndex : CMP.b #$81 : BNE .catfish LDA.b OverworldIndex : CMP.b #$81 : BNE .catfish
.zora .zora
TYA : STA.b $0C
JSL ShieldCheck JSL ShieldCheck
BCC .skip BCC .skip
LDA.b $0C : TAY
JSL ItemSet_ZoraKing JSL ItemSet_ZoraKing
LDA.l ZoraItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l ZoraItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
BRA .done BRA .done
.catfish .catfish
TYA : STA.b $0C
JSL ShieldCheck JSL ShieldCheck
BCC .skip BCC .skip
LDA.b $0C : TAY
JSL ItemSet_Catfish JSL ItemSet_Catfish
LDA.l CatfishItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l CatfishItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID

View File

@@ -74,11 +74,7 @@ LinkAwaken:
RTL RTL
BigChest_ShieldCheck: BigChest_ShieldCheck:
PHY
LDY.b $0C
JSL ShieldCheck JSL ShieldCheck
STY.b $0C
PLY
BCC .no_open BCC .no_open
LDA.l BigKeyField LDA.l BigKeyField
AND.l BitMasks, X AND.l BitMasks, X
@@ -86,13 +82,9 @@ BigChest_ShieldCheck:
RTL RTL
SmallChest_ShieldCheck: SmallChest_ShieldCheck:
PHY
LDY.b $0C
JSL ShieldCheck JSL ShieldCheck
STY.b $0C
PLY
BCC .no_open BCC .no_open
LDA.w $0402 LDA.w DungeonID
ORA.w RoomFlagMask, Y ORA.w RoomFlagMask, Y
.no_open .no_open
RTL RTL
@@ -101,14 +93,13 @@ ShieldCheck:
PHP PHP
REP #$30 REP #$30
PHX PHX
TYA LDA.b $0C
AND.w #$00FF AND.w #$00FF
TAX TAX
LDA.l PikitItemList, X LDA.l PikitItemList, X
AND.w #$00FF AND.w #$00FF
BNE .replace BNE .replace
PLX PLX
PLP
SEC SEC
RTL RTL
@@ -118,7 +109,8 @@ ShieldCheck:
BNE .already_have_shield BNE .already_have_shield
TXA TXA
STA.l PikitItem STA.l PikitItem
LDY.w #$0004 LDA.w #$0004
STA.b $0C
PLX PLX
PLP PLP
SEC SEC

View File

@@ -619,8 +619,7 @@ HexToDecDigit3: skip 1 ;
HexToDecDigit4: skip 1 ; HexToDecDigit4: skip 1 ;
HexToDecDigit5: skip 1 ; HexToDecDigit5: skip 1 ;
SpriteSkipEOR: skip 2 ; Used in utilities.asm to determine when to skip drawing sprites. Zero-padded SpriteSkipEOR: skip 2 ; Used in utilities.asm to determine when to skip drawing sprites. Zero-padded
skip $2A ; Unused skip $2B ; Unused
BossDropTouched: skip 1
AltTextFlag: skip 2 ; dialog.asm: Determines whether to load from vanilla decompression buffer AltTextFlag: skip 2 ; dialog.asm: Determines whether to load from vanilla decompression buffer
; or from a secondary buffer (used for things like free dungeon item text) ; or from a secondary buffer (used for things like free dungeon item text)
BossKills: skip 1 ; BossKills: skip 1 ;

View File

@@ -132,12 +132,6 @@ GetSmithSword:
.buy .buy
LDA.l SmithItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID LDA.l SmithItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID
LDA.l SmithItem : TAY LDA.l SmithItem : TAY
JSL ShieldCheck
BCS +
JML $86B4A5
+
STZ.w ItemReceiptMethod ; Item from NPC STZ.w ItemReceiptMethod ; Item from NPC
PHX : JSL Link_ReceiveItem : PLX PHX : JSL Link_ReceiveItem : PLX

View File

@@ -73,26 +73,6 @@ MaybeUnlockTabletAnimation:
PLP : PLA PLP : PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
MaybeFreeLinkFromTablet:
PHA : PHP
JSL IsMedallion : BCC +
STZ.w MedallionFlag ; disable falling-medallion mode
STZ.w ForceSwordUp ; release link from item-up pose
LDA.b #$00 : STA.b LinkState ; set link to ground state
STZ.w CutsceneFlag
STZ.w NoDamage
REP #$20 ; set 16-bit accumulator
LDA.b OverworldIndex : CMP.w #$0030 : BNE ++ ; Desert
SEP #$20 ; set 8-bit accumulator
LDA.b #$02 : STA.b LinkDirection ; face link forward
LDA.b #$3C : STA.b LinkIncapacitatedTimer ; lock link for 60f
++
SEP #$20 ; set 8-bit accumulator
+
PLP : PLA
RTL
;--------------------------------------------------------------------------------
IsMedallion: IsMedallion:
REP #$20 ; set 16-bit accumulator REP #$20 ; set 16-bit accumulator
LDA.b OverworldIndex LDA.b OverworldIndex

View File

@@ -192,7 +192,6 @@ LoadBackgroundGraphics_arbitrary = $80E64D
RoomTag_GetHeartForPrize = $81C709 RoomTag_GetHeartForPrize = $81C709
RoomTag_GetHeartForPrize_spawn_prize = $81C731 RoomTag_GetHeartForPrize_spawn_prize = $81C731
RoomTag_GetHeartForPrize_delete_tag = $81C749 RoomTag_GetHeartForPrize_delete_tag = $81C749
RoomTag_GetHeartForPrize_exit = $81C74D
Underworld_SetBossOrSancMusicUponEntry = $828AD9 Underworld_SetBossOrSancMusicUponEntry = $828AD9
ResetThenCacheRoomEntryProperties = $828C73 ResetThenCacheRoomEntryProperties = $828C73
RecoverPositionAfterDrowning = $829485 RecoverPositionAfterDrowning = $829485