Add variable ganon vulnerability mode
This commit is contained in:
@@ -185,6 +185,8 @@ incsrc textrenderer.asm
|
|||||||
incsrc crystalswitchbook.asm
|
incsrc crystalswitchbook.asm
|
||||||
incsrc mimicdash.asm
|
incsrc mimicdash.asm
|
||||||
incsrc gloom.asm
|
incsrc gloom.asm
|
||||||
|
incsrc special_weapons.asm
|
||||||
|
incsrc variable_ganon_vulnerability.asm
|
||||||
warnpc $A58000
|
warnpc $A58000
|
||||||
|
|
||||||
org $A28000
|
org $A28000
|
||||||
|
|||||||
80
dialog.asm
80
dialog.asm
@@ -284,28 +284,68 @@ RTL
|
|||||||
; s = silver arrow bow
|
; s = silver arrow bow
|
||||||
; p = 2nd progressive bow
|
; p = 2nd progressive bow
|
||||||
DialogGanon2:
|
DialogGanon2:
|
||||||
JSL CheckGanonVulnerability
|
JSL CheckGanonVulnerability
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
BCS +
|
BCS +
|
||||||
LDA.w #$018D : BRA ++
|
LDA.w #$018D : JMP .done
|
||||||
+
|
+
|
||||||
LDA.l BowTracking
|
LDA.l GanonVulnerabilityItem : AND.w #$00FF
|
||||||
|
BEQ .silver_arrows
|
||||||
|
CMP.w #$0001 : BEQ .silver_arrows
|
||||||
|
CMP.w #$0004 : BEQ .bombs
|
||||||
|
CMP.w #$0005 : BEQ .powder
|
||||||
|
CMP.w #$0010 : BEQ .bee
|
||||||
|
|
||||||
BIT.w #$0080 : BNE + ; branch if bow
|
PHX : TAX
|
||||||
LDA.w #$0192 : BRA ++
|
LDA.l EquipmentWRAM-1, X
|
||||||
+
|
PLX
|
||||||
BIT.w #$0040 : BEQ + ; branch if no silvers
|
AND.w #$00FF : BNE .have
|
||||||
LDA.w #$0195 : BRA ++
|
BRA .dont_have
|
||||||
+
|
|
||||||
BIT.w #$0020 : BNE + ; branch if p bow
|
.silver_arrows
|
||||||
LDA.w #$0194 : BRA ++
|
LDA.l BowTracking
|
||||||
+
|
|
||||||
LDA.w #$0193 : BRA ++
|
BIT.w #$0080 : BEQ .dont_have ; no bow
|
||||||
++
|
BIT.w #$0040 : BNE .have ; have silvers
|
||||||
STA.w TextID
|
|
||||||
SEP #$20
|
BIT.w #$0020 : BNE +
|
||||||
JSL Sprite_ShowMessageMinimal_Alt
|
LDA.w #$0194 : BRA .done ; have p bow
|
||||||
|
+ LDA.w #$0193 : BRA .done ; don't have p bow
|
||||||
|
|
||||||
|
.dont_have
|
||||||
|
LDA.w #$0192 : BRA .done
|
||||||
|
.have
|
||||||
|
LDA.w #$0195 : BRA .done
|
||||||
|
|
||||||
|
.bombs
|
||||||
|
LDA.l BombsEquipment : AND.w #$00FF : BNE .have
|
||||||
|
LDA.l InfiniteBombs : AND.w #$00FF : BNE .have
|
||||||
|
BRA .dont_have
|
||||||
|
|
||||||
|
.powder
|
||||||
|
LDA.l InventoryTracking : BIT.w #$0010 : BNE .have
|
||||||
|
BRA .dont_have
|
||||||
|
|
||||||
|
.bee
|
||||||
|
LDA.l BottleContentsOne : AND.w #$00FF
|
||||||
|
CMP.w #$0007 : BEQ .have
|
||||||
|
CMP.w #$0008 : BEQ .have
|
||||||
|
LDA.l BottleContentsTwo : AND.w #$00FF
|
||||||
|
CMP.w #$0007 : BEQ .have
|
||||||
|
CMP.w #$0008 : BEQ .have
|
||||||
|
LDA.l BottleContentsThree : AND.w #$00FF
|
||||||
|
CMP.w #$0007 : BEQ .have
|
||||||
|
CMP.w #$0008 : BEQ .have
|
||||||
|
LDA.l BottleContentsFour : AND.w #$00FF
|
||||||
|
CMP.w #$0007 : BEQ .have
|
||||||
|
CMP.w #$0008 : BEQ .have
|
||||||
|
BRA .dont_have
|
||||||
|
|
||||||
|
.done
|
||||||
|
STA.w TextID
|
||||||
|
SEP #$20
|
||||||
|
JSL Sprite_ShowMessageMinimal_Alt
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogEtherTablet:
|
DialogEtherTablet:
|
||||||
|
|||||||
36
hooks.asm
36
hooks.asm
@@ -2730,16 +2730,48 @@ NOP #2 ; this fixes Link's direction after mirroring and falling after entering
|
|||||||
org $81B5E6
|
org $81B5E6
|
||||||
LDA.b #$30
|
LDA.b #$30
|
||||||
|
|
||||||
;===================================================================================================
|
;================================================================================
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Mimic dash changes
|
; Mimic dash changes
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $9EC7BE
|
org $9EC7BE
|
||||||
JSL MimicDirection
|
JSL MimicDirection
|
||||||
|
|
||||||
;===================================================================================================
|
;================================================================================
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Gloom VRAM overwrite
|
; Gloom VRAM overwrite
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $828068
|
org $828068
|
||||||
JSL AdjustDefaultGraphics
|
JSL AdjustDefaultGraphics
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Special Weapons Modes
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $86ECC3 ; Bank06.asm@4704 (PHX : TAX : LDA.l .damage_classes, X : PLX)
|
||||||
|
JSL DamageClassCalc
|
||||||
|
BRA + : NOP #29 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $86ED94 ; Bank06.asm@4866 (LDA $0E60, X : AND.b #$40)
|
||||||
|
JSL Utility_CheckImpervious
|
||||||
|
NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; Variable Ganon Vulnerability
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $88BBD4 ; ancilla_magic_powder.asm@253 (LDA #$0A : JSL Ancilla_CheckSpriteDamage.preset_class)
|
||||||
|
JSL Ganon_CheckPowderVulnerability
|
||||||
|
NOP #2
|
||||||
|
|
||||||
|
org $1D8F4E ; sprite_ganon.asm@325 (LDA $04C5 : CMP #$02)
|
||||||
|
JSL Ganon_CheckInvincible
|
||||||
|
NOP
|
||||||
|
|
||||||
|
org $0DD628 ; Bank0D.asm@1266 (LDA $0B6B, Y : AND #$02)
|
||||||
|
JSL CheckBeeBoss
|
||||||
|
NOP
|
||||||
|
|
||||||
|
org $0DD677 ; Bank0D.asm@1303 (JSL Ancilla_CheckSpriteDamage.preset_class)
|
||||||
|
JSL Ganon_CheckBeeVulnerability
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
126
special_weapons.asm
Normal file
126
special_weapons.asm
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
DamageClassCalc:
|
||||||
|
PHA
|
||||||
|
LDA.l GanonVulnerabilityItem : BEQ +
|
||||||
|
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE +
|
||||||
|
PLA
|
||||||
|
JSL Ganon_CheckAncillaVulnerability
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BEQ .cane_immune
|
||||||
|
PLA
|
||||||
|
CMP.b #$01 : BEQ .red_cane
|
||||||
|
CMP.b #$2C : BEQ .red_cane
|
||||||
|
CMP.b #$31 : BEQ .blue_cane
|
||||||
|
CMP.b #$0C : BEQ .beam
|
||||||
|
BRA .not_cane_or_beam
|
||||||
|
|
||||||
|
.red_cane
|
||||||
|
PHA
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$04 : BEQ .special_cane
|
||||||
|
CMP.b #$05 : BEQ .special_cane
|
||||||
|
LDA.l SpecialWeapons : BIT.b #$80 : BNE .cane_immune
|
||||||
|
BRA .normal
|
||||||
|
|
||||||
|
.blue_cane
|
||||||
|
PHA
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$03 : BEQ .special_cane
|
||||||
|
CMP.b #$05 : BEQ .special_cane
|
||||||
|
LDA.l SpecialWeapons : BIT.b #$80 : BNE .cane_immune
|
||||||
|
BRA .normal
|
||||||
|
|
||||||
|
.cane_immune
|
||||||
|
LDA.w SpriteTypeTable, X : CMP.b #$1E : BEQ .normal ; crystal switch
|
||||||
|
PLA
|
||||||
|
BRA .impervious
|
||||||
|
|
||||||
|
.special_cane
|
||||||
|
PLA
|
||||||
|
LDA.w SpriteTypeTable, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
||||||
|
CMP.b #$88 : BEQ .mothula
|
||||||
|
BRA .special_level
|
||||||
|
|
||||||
|
.impervious
|
||||||
|
LDA.b #$FF
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.beam
|
||||||
|
PHA
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$02 : BNE .normal
|
||||||
|
PLA
|
||||||
|
LDA.b #$05
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.normal
|
||||||
|
PLA
|
||||||
|
|
||||||
|
.not_cane_or_beam
|
||||||
|
CMP.b #$07 : BNE .no_change
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE .normal_bombs
|
||||||
|
LDA.l SpecialWeaponLevel : BEQ .normal_bombs
|
||||||
|
LDA.w SpriteTypeTable, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
||||||
|
CMP.b #$88 : BEQ .mothula
|
||||||
|
CMP.b #$91 : BEQ .stalfos_knight
|
||||||
|
CMP.b #$92 : BEQ .helmasaur_king
|
||||||
|
|
||||||
|
.special_level
|
||||||
|
LDA.l SpecialWeaponLevel
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.mothula
|
||||||
|
LDA.l SpecialWeaponLevel
|
||||||
|
CMP.b #$04 : BCS .fix_mothula
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.fix_mothula
|
||||||
|
LDA.b #$03
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.stalfos_knight
|
||||||
|
LDA.l StalfosBombDamage : BEQ .special_level
|
||||||
|
LDA.b #$08
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.helmasaur_king
|
||||||
|
LDA.w $0DB0, X : CMP.b #$03 : BCS .special_level
|
||||||
|
LDA.b #$08
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.unstunned_ganon
|
||||||
|
LDA.w $04C5 : CMP.b #$02 : BNE .impervious
|
||||||
|
LDA.w $0EE0, X : BNE .impervious
|
||||||
|
LDA.b #$34 : STA.w $0EE0, X ; give the poor pig some i-frames
|
||||||
|
BRA .special_level
|
||||||
|
|
||||||
|
.normal_bombs
|
||||||
|
LDA.b #$07
|
||||||
|
|
||||||
|
.no_change
|
||||||
|
PHX : TAX
|
||||||
|
LDA.l $86EC84, X
|
||||||
|
PLX
|
||||||
|
CMP.b #$06 : BNE .done
|
||||||
|
LDA.l BowEquipment : CMP.b #$03 : BCS .actual_silver_arrows
|
||||||
|
|
||||||
|
.normal_arrows
|
||||||
|
LDA.b #$06
|
||||||
|
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.actual_silver_arrows
|
||||||
|
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE +
|
||||||
|
LDA.b #$20 : STA.w SpriteTimerE, X
|
||||||
|
+ LDA.b #$09
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Utility_CheckImpervious:
|
||||||
|
LDA.w SpriteControl, X : AND.b #$40 : BNE .impervious
|
||||||
|
LDA.w $0CF2 : CMP.b #$FF : BEQ .impervious
|
||||||
|
LDA.w UseY1 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammering
|
||||||
|
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
||||||
|
|
||||||
|
.not_impervious
|
||||||
|
LDA.b #$00 : RTL
|
||||||
|
.impervious
|
||||||
|
LDA.b #$01 : RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
4
sram.asm
4
sram.asm
@@ -190,7 +190,9 @@ ItemLimitCounts: skip 16 ; Keeps track of limited non-progressive items s
|
|||||||
; See: ItemSubstitutionRules in tables.asm
|
; See: ItemSubstitutionRules in tables.asm
|
||||||
; Right now this is only used for three items but extra space is
|
; Right now this is only used for three items but extra space is
|
||||||
; reserved
|
; reserved
|
||||||
skip 37 ; Unused
|
skip 35 ; Unused
|
||||||
|
SpecialWeaponLevel: skip 1 ; keeps track of level in special weapon modes
|
||||||
|
ItemOnB: skip 1 ; NYI
|
||||||
ProgressIndicator: skip 1 ; $00 = Pre-Uncle | $01 = Post-Uncle item | $02 = Zelda Rescued
|
ProgressIndicator: skip 1 ; $00 = Pre-Uncle | $01 = Post-Uncle item | $02 = Zelda Rescued
|
||||||
; $03 = Agahnim 1 defeated
|
; $03 = Agahnim 1 defeated
|
||||||
; $04 and above don't do anything. $00-$02 used in standard mode
|
; $04 and above don't do anything. $00-$02 used in standard mode
|
||||||
|
|||||||
@@ -98,11 +98,20 @@ RTL
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
CheckGanonHammerDamage:
|
CheckGanonHammerDamage:
|
||||||
LDA.l HammerableGanon : BEQ +
|
LDA.l HammerableGanon : BEQ +
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D8 ; original behavior except ganon
|
LDA.w SpriteTypeTable, X : CMP.b #$D8 ; original behavior except ganon
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP.b #$0C : BEQ .hammer_silvers
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D6 ; original behavior
|
LDA.w SpriteTypeTable, X : CMP.b #$D6 ; original behavior
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
.hammer_silvers
|
||||||
|
LDA.w SpriteTypeTable, X : CMP.b #$D8 : BCC +
|
||||||
|
RTL
|
||||||
|
+ CMP.b #$D6 : BNE +
|
||||||
|
RTL
|
||||||
|
+ CLC
|
||||||
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
GetSmithSword:
|
GetSmithSword:
|
||||||
JSL ItemCheck_SmithSword : BEQ + : JML Smithy_AlreadyGotSword : +
|
JSL ItemCheck_SmithSword : BEQ + : JML Smithy_AlreadyGotSword : +
|
||||||
|
|||||||
20
tables.asm
20
tables.asm
@@ -103,9 +103,25 @@ ChallengeModes:
|
|||||||
; d - damage modes (0 - normal, 1 - ohko, 2 - gloom)
|
; d - damage modes (0 - normal, 1 - ohko, 2 - gloom)
|
||||||
db $00
|
db $00
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18002E (Reserved for Ganon Vulnerability Item)
|
org $B0802E
|
||||||
|
GanonVulnerabilityItem:
|
||||||
|
db $00 ; $00 = default behavior (silver arrows)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18002F (Reserved for Special Weapons)
|
org $B0902F
|
||||||
|
SpecialWeapons:
|
||||||
|
db #$00
|
||||||
|
; s - - - m m m m (bitfield) - NYI
|
||||||
|
; s - only swords damage can hurt enemies
|
||||||
|
; m - special weapon mode
|
||||||
|
; $00 = Off (default)
|
||||||
|
; $01 = Bomb mode
|
||||||
|
; $02 = Pseudosword
|
||||||
|
; $03 = Byrna mode
|
||||||
|
; $04 = Somaria mode
|
||||||
|
; $05 = Canes mode
|
||||||
|
; $06 = Bee mode
|
||||||
|
; $07 = Unused
|
||||||
|
; $08 = Bugnet mode
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x180030 (Unused)
|
; 0x180030 (Unused)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
130
variable_ganon_vulnerability.asm
Normal file
130
variable_ganon_vulnerability.asm
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
Ganon_CheckAncillaVulnerability:
|
||||||
|
PHA
|
||||||
|
LDA.w $0EE0, X : BNE .not_vulnerable_pla
|
||||||
|
PLA
|
||||||
|
PHX : PHA
|
||||||
|
LDA.l GanonVulnerabilityItem
|
||||||
|
BMI .no_weakness
|
||||||
|
TAX : PLA
|
||||||
|
CMP.l Ganon_CheckByAncilla, X : BNE +
|
||||||
|
PLX : BRA .vulnerable
|
||||||
|
+ PLX : PHA
|
||||||
|
LDA.l GanonVulnerabilityItem
|
||||||
|
BEQ .silver_arrows
|
||||||
|
CMP.b #$01 : BEQ .silver_arrows
|
||||||
|
CMP.b #$11 : BEQ .somaria
|
||||||
|
BRA .not_vulnerable_pla
|
||||||
|
|
||||||
|
.no_weakness
|
||||||
|
PLA : PLX
|
||||||
|
BRA .not_vulnerable
|
||||||
|
|
||||||
|
.silver_arrows
|
||||||
|
PLA : CMP.b #$09 : BNE .not_vulnerable
|
||||||
|
LDA.l BowEquipment : CMP.b #$03 : BCS +
|
||||||
|
LDA.b #$09 : BRA .not_vulnerable
|
||||||
|
+ BRA .vulnerable
|
||||||
|
|
||||||
|
.somaria
|
||||||
|
PLA
|
||||||
|
CMP.b #$01 : BEQ .vulnerable
|
||||||
|
CMP.b #$2C : BEQ .vulnerable
|
||||||
|
BRA .not_vulnerable
|
||||||
|
|
||||||
|
.vulnerable
|
||||||
|
PHX
|
||||||
|
LDA.l GanonVulnerabilityItem
|
||||||
|
TAX
|
||||||
|
LDA.l Ganon_IFrameDuration, X
|
||||||
|
PLX
|
||||||
|
STA.w $0EE0, X ; give the poor pig some iframes
|
||||||
|
LDA.b #$20 : STA.w SpriteTimerE, X
|
||||||
|
LDA.b #$09
|
||||||
|
RTL
|
||||||
|
.not_vulnerable_pla_pla
|
||||||
|
PLA
|
||||||
|
.not_vulnerable_pla
|
||||||
|
PLA
|
||||||
|
.not_vulnerable
|
||||||
|
PHX : TAX
|
||||||
|
LDA.l $86EC84, X
|
||||||
|
PLX
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckPowderVulnerability:
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP.b #$05 : BNE .normal
|
||||||
|
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE .normal
|
||||||
|
LDA.w $0EE0, X : BNE .normal ; ganon has i-frames
|
||||||
|
LDA.l Ganon_IFrameDuration+$05
|
||||||
|
STA.w $0EE0, X ; give ganon i-frames
|
||||||
|
LDA.b #$20 : STA.w SpriteTimerE, X
|
||||||
|
LDA.b #$09
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.normal
|
||||||
|
LDA.b #$0A
|
||||||
|
.done
|
||||||
|
JML $86ECE6
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckBeeVulnerability:
|
||||||
|
; X is bee sprite index
|
||||||
|
; Y is target sprite index
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP.b #$10 : BNE .normal
|
||||||
|
LDA.w SpriteTypeTable, Y : CMP.b #$D7 : BNE .normal
|
||||||
|
LDA.w $0EE0, Y : BNE .normal ; ganon has i-frames
|
||||||
|
LDA.l Ganon_IFrameDuration+$10
|
||||||
|
STA.w $0EE0, X ; give ganon i-frames
|
||||||
|
LDA.b #$20 : STA.w SpriteTimerE, X
|
||||||
|
LDA.b #$09
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.normal
|
||||||
|
LDA.b #$01
|
||||||
|
.done
|
||||||
|
TYX
|
||||||
|
JML $86ECE6
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckInvincible:
|
||||||
|
LDA.w $04C5 : CMP.b #$02 : BEQ .not_transparent
|
||||||
|
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE .transparent ; non-stunned ganon
|
||||||
|
LDA.w UseY1 : AND.b #$0A : BEQ .transparent ; normal behavior if not hammering
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP.b #$0C : BNE .transparent
|
||||||
|
.not_transparent
|
||||||
|
LDA.b #$00 : RTL
|
||||||
|
.transparent
|
||||||
|
LDA.b #$01 : RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckHammerVulnerability:
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP.b #$0C : BNE .normal
|
||||||
|
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE .normal
|
||||||
|
LDA.w $0EE0, X : BNE .normal ; ganon has i-frames
|
||||||
|
LDA.l Ganon_IFrameDuration+$0C
|
||||||
|
STA.w $0EE0, X ; give ganon i-frames
|
||||||
|
LDA.b #$20 : STA.w SpriteTimerE, X
|
||||||
|
LDA.b #$09 : STA.w $0CF2 ; set damage class to silver
|
||||||
|
SEC : RTL
|
||||||
|
.normal
|
||||||
|
CLC : RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
CheckBeeBoss:
|
||||||
|
; Y is sprite index
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP.b #$10 : BNE .normal
|
||||||
|
LDA.w SpriteTypeTable, Y : CMP.b #$D7 : BNE .normal
|
||||||
|
LDA.b #$00 : RTL
|
||||||
|
.normal
|
||||||
|
LDA.w $0B6B, Y : AND.b #$02
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckByAncilla:
|
||||||
|
db #$00 ; default behavior
|
||||||
|
db #$00, #$05, #$1F, #$07, #$00
|
||||||
|
db #$02, #$0B, #$19, #$18, #$1C
|
||||||
|
db #$00, #$00, #$00, #$00, #$00
|
||||||
|
db #$00, #$00, #$31, #$00, #$00
|
||||||
|
Ganon_IFrameDuration:
|
||||||
|
db #$00 ; default behavior
|
||||||
|
db #$00, #$00, #$00, #$34, #$00
|
||||||
|
db #$00, #$00, #$00, #$00, #$00
|
||||||
|
db #$00, #$00, #$00, #$00, #$00
|
||||||
|
db #$00, #$00, #$00, #$00, #$00
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
Reference in New Issue
Block a user