Compare commits
6 Commits
979608e2c9
...
pikit_mode
| Author | SHA1 | Date | |
|---|---|---|---|
| bd722bef33 | |||
| 9208d06f3a | |||
| 2a31b7763b | |||
| 779c9a27ce | |||
| 381868c3ce | |||
| f6c0de88fb |
@@ -53,6 +53,17 @@ 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
|
||||||
|
|||||||
@@ -72,18 +72,27 @@ 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
|
||||||
|
|
||||||
JSL ShieldCheck : BCC .couldntFindChest
|
PHY
|
||||||
|
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
|
||||||
JSL ShieldCheck : BCC .couldntFindChest
|
PHY
|
||||||
|
LDY.b Scrap0C
|
||||||
|
JSL ShieldCheck
|
||||||
|
STY.b Scrap0C
|
||||||
|
PLY
|
||||||
|
BCC .couldntFindChest
|
||||||
JML Dungeon_OpenKeyedObject_smallChest
|
JML Dungeon_OpenKeyedObject_smallChest
|
||||||
|
|
||||||
.couldntFindChest
|
.couldntFindChest
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ 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 +
|
||||||
@@ -105,7 +106,7 @@ RTL
|
|||||||
SetItemPose:
|
SetItemPose:
|
||||||
PHA
|
PHA
|
||||||
LDA.w DungeonID : BMI .one_handed
|
LDA.w DungeonID : BMI .one_handed
|
||||||
LDA.w RoomItemsTaken : BIT.b #$80 : BNE +
|
JSL CheckBossDropTouched : BNE +
|
||||||
.one_handed
|
.one_handed
|
||||||
PLA
|
PLA
|
||||||
JML Link_ReceiveItem_not_cool_pose
|
JML Link_ReceiveItem_not_cool_pose
|
||||||
@@ -134,7 +135,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
|
||||||
LDA.w RoomItemsTaken : BIT.b #$80 : BNE .dungeon_prize
|
JSL CheckBossDropTouched : BNE .dungeon_prize
|
||||||
.no_cutscene
|
.no_cutscene
|
||||||
SEP #$30
|
SEP #$30
|
||||||
PLX
|
PLX
|
||||||
@@ -155,7 +156,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 +
|
||||||
LDA.w RoomItemsTaken : BIT.b #$80 : BEQ +
|
JSL CheckBossDropTouched : BEQ +
|
||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
@@ -172,13 +173,13 @@ PrizeDropSparkle:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
HandleDropSFX:
|
HandleDropSFX:
|
||||||
LDA.w RoomItemsTaken : BIT.b #$80 : BEQ .no_sound
|
JSL CheckBossDropTouched : BEQ .no_sound
|
||||||
JSR CrystalOrPendantBehavior : BCC .no_sound
|
JSR CrystalOrPendantBehavior : BCC .no_sound
|
||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
.no_sound
|
.no_sound
|
||||||
CLC
|
CLC
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
HandleCrystalsField:
|
HandleCrystalsField:
|
||||||
TAX
|
TAX
|
||||||
@@ -192,7 +193,7 @@ RTL
|
|||||||
MaybeKeepLootID:
|
MaybeKeepLootID:
|
||||||
PHA
|
PHA
|
||||||
LDA.w DungeonID : BMI .no_prize
|
LDA.w DungeonID : BMI .no_prize
|
||||||
LDA.w RoomItemsTaken : BIT.b #$80 : BNE .prize
|
JSL CheckBossDropTouched : BNE .prize
|
||||||
.no_prize
|
.no_prize
|
||||||
STZ.w ItemReceiptID
|
STZ.w ItemReceiptID
|
||||||
STZ.w ItemReceiptPose
|
STZ.w ItemReceiptPose
|
||||||
@@ -216,6 +217,15 @@ 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
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ GetAgahnimLightning:
|
|||||||
;1 = Forbid
|
;1 = Forbid
|
||||||
AllowJoypadInput:
|
AllowJoypadInput:
|
||||||
LDA.l PermitSQFromBosses : BEQ .fullCheck
|
LDA.l PermitSQFromBosses : BEQ .fullCheck
|
||||||
LDA.w RoomItemsTaken : AND.b #$80 : BEQ .fullCheck
|
JSL CheckBossDropTouched : 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
|
||||||
|
|||||||
@@ -2,13 +2,20 @@
|
|||||||
; 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 : LDA.l MagicBatItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID : PLA
|
PHA
|
||||||
|
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
|
||||||
|
|||||||
@@ -5,8 +5,17 @@ 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
|
||||||
@@ -16,15 +25,27 @@ HeartPieceGet:
|
|||||||
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
|
||||||
PLY : PLX
|
RTL
|
||||||
RTL
|
.skip
|
||||||
|
JSL MaybeFreeLinkFromTablet
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HeartContainerGet:
|
HeartContainerGet:
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
JSL IncrementBossSword
|
JSL IncrementBossSword
|
||||||
LDY.w SprSourceItemId, X
|
LDY.w SprSourceItemId, X
|
||||||
BRA HeartPieceGet_skipLoad
|
JSL HeartGet
|
||||||
|
PLY : PLX
|
||||||
|
BCC +
|
||||||
|
LDA.w RoomItemsTaken
|
||||||
|
ORA.b #$80
|
||||||
|
STA.w RoomItemsTaken
|
||||||
|
+
|
||||||
|
LDA.b #$01
|
||||||
|
STA.l BossDropTouched
|
||||||
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawHeartPieceGFX:
|
DrawHeartPieceGFX:
|
||||||
PHP
|
PHP
|
||||||
|
|||||||
22
hooks.asm
22
hooks.asm
@@ -1053,8 +1053,12 @@ 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 $81C710 : JSL CheckSpawnPrize
|
org $81C709 : JSL CheckBossDropTouched : NOP
|
||||||
BCS RoomTag_GetHeartForPrize_spawn_prize : BRA RoomTag_GetHeartForPrize_delete_tag
|
org $81C710
|
||||||
|
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
|
||||||
@@ -1066,6 +1070,7 @@ 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
|
||||||
@@ -2005,7 +2010,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
|
JSL ItemSet_Mushroom : NOP #5
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
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
|
||||||
@@ -2033,7 +2038,10 @@ 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
|
JSL HeartContainerGet ; this also handles setting the boss-killed flag if appropriate
|
||||||
|
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)
|
||||||
@@ -2059,10 +2067,13 @@ 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
|
||||||
@@ -2858,3 +2869,6 @@ JSL LinkAwaken
|
|||||||
org $879A31
|
org $879A31
|
||||||
JSL TuckLink
|
JSL TuckLink
|
||||||
NOP #2
|
NOP #2
|
||||||
|
|
||||||
|
org $80F950
|
||||||
|
NOP #2
|
||||||
|
|||||||
@@ -650,14 +650,21 @@ 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 : PLA
|
PHA : LDA.b #$00 : STA.l ShopEnableCount : STA.l PowderFlag
|
||||||
JSL ItemSet_Powder
|
JSL ItemSet_Powder
|
||||||
|
.skip
|
||||||
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -416,10 +416,10 @@ macro SpriteProps(id, chest_width, standing_width, chest_pal, standing_pal, addr
|
|||||||
pullpc
|
pullpc
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
%SpriteProps($00, 0, 2, $05, $02, PalettesVanilla_blue_ice+$0E) ; 00 - Fighter sword & Shield
|
%SpriteProps($00, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 00 - Fighter sword & Shield
|
||||||
%SpriteProps($01, 0, 2, $05, $05, PalettesCustom_master_sword) ; 01 - Master sword
|
%SpriteProps($01, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 01 - Master sword
|
||||||
%SpriteProps($02, 0, 2, $05, $01, PalettesCustom_tempered_sword) ; 02 - Tempered sword
|
%SpriteProps($02, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 02 - Tempered sword
|
||||||
%SpriteProps($03, 0, 2, $05, $04, PalettesCustom_golden_sword) ; 03 - Golden sword
|
%SpriteProps($03, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 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, 2, $05, $02, PalettesCustom_fighter_shield) ; 49 - Tossed fighter sword
|
%SpriteProps($49, 0, 0, $05, $80, 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 $0860 ; 00 - Fighter Sword and Shield
|
dw BigDecompressionBuffer+$09E0 ; 00 - Fighter Sword and Shield
|
||||||
dw $00E0 ; 01 - Master Sword
|
dw BigDecompressionBuffer+$09E0 ; 01 - Master Sword
|
||||||
dw $0120 ; 02 - Tempered Sword
|
dw BigDecompressionBuffer+$09E0 ; 02 - Tempered Sword
|
||||||
dw $0160 ; 03 - Butter Sword
|
dw BigDecompressionBuffer+$09E0 ; 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 $00A0 ; 49 - Tossed fighter sword
|
dw BigDecompressionBuffer+$09E0 ; 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
|
||||||
|
|
||||||
|
|||||||
@@ -696,6 +696,14 @@ 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
|
||||||
|
|||||||
@@ -202,13 +202,22 @@ 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
|
||||||
PLP : PLA
|
PLP : PLA
|
||||||
|
|
||||||
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:
|
||||||
|
|||||||
26
npcitems.asm
26
npcitems.asm
@@ -99,10 +99,8 @@ 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
|
||||||
@@ -119,10 +117,8 @@ 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
|
||||||
@@ -135,10 +131,8 @@ 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
|
||||||
@@ -151,10 +145,8 @@ 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
|
||||||
@@ -171,10 +163,8 @@ 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
|
||||||
@@ -187,15 +177,23 @@ 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:
|
||||||
@@ -273,20 +271,16 @@ 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
|
||||||
|
|||||||
16
pikit.asm
16
pikit.asm
@@ -74,7 +74,11 @@ 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
|
||||||
@@ -82,9 +86,13 @@ 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 DungeonID
|
LDA.w $0402
|
||||||
ORA.w RoomFlagMask, Y
|
ORA.w RoomFlagMask, Y
|
||||||
.no_open
|
.no_open
|
||||||
RTL
|
RTL
|
||||||
@@ -93,13 +101,14 @@ ShieldCheck:
|
|||||||
PHP
|
PHP
|
||||||
REP #$30
|
REP #$30
|
||||||
PHX
|
PHX
|
||||||
LDA.b $0C
|
TYA
|
||||||
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
|
||||||
|
|
||||||
@@ -109,8 +118,7 @@ ShieldCheck:
|
|||||||
BNE .already_have_shield
|
BNE .already_have_shield
|
||||||
TXA
|
TXA
|
||||||
STA.l PikitItem
|
STA.l PikitItem
|
||||||
LDA.w #$0004
|
LDY.w #$0004
|
||||||
STA.b $0C
|
|
||||||
PLX
|
PLX
|
||||||
PLP
|
PLP
|
||||||
SEC
|
SEC
|
||||||
|
|||||||
3
ram.asm
3
ram.asm
@@ -619,7 +619,8 @@ 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 $2B ; Unused
|
skip $2A ; 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 ;
|
||||||
|
|||||||
@@ -132,6 +132,12 @@ 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
|
||||||
|
|
||||||
|
|||||||
20
tablets.asm
20
tablets.asm
@@ -73,6 +73,26 @@ 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
|
||||||
|
|||||||
@@ -192,6 +192,7 @@ 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
|
||||||
|
|||||||
Reference in New Issue
Block a user