Move non-swords not damaging enemies to high bit of special weapons
This commit is contained in:
@@ -171,7 +171,7 @@ SetEscapeAssist:
|
|||||||
BIT.b #$10 : BEQ + : STA InfiniteArrowsModifier : +
|
BIT.b #$10 : BEQ + : STA InfiniteArrowsModifier : +
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE +
|
LDA.l SpecialWeapons : AND.b #$7F : CMP #$01 : BNE +
|
||||||
LDA.l SpecialWeaponLevel : BEQ +
|
LDA.l SpecialWeaponLevel : BEQ +
|
||||||
LDA #$01 : STA InfiniteBombsModifier
|
LDA #$01 : STA InfiniteBombsModifier
|
||||||
+
|
+
|
||||||
|
|||||||
@@ -306,7 +306,7 @@ DialogGanon2:
|
|||||||
LDA.w #$018D : JMP .done
|
LDA.w #$018D : JMP .done
|
||||||
+
|
+
|
||||||
LDA.l GanonVulnerabilityItem : AND #$00FF : BNE .special_item
|
LDA.l GanonVulnerabilityItem : AND #$00FF : BNE .special_item
|
||||||
LDA.l SpecialWeapons : AND.w #$00FF
|
LDA.l SpecialWeapons : AND.w #$007F
|
||||||
CMP.w #$0001 : BEQ .bombs ; bombs if special bomb mode
|
CMP.w #$0001 : BEQ .bombs ; bombs if special bomb mode
|
||||||
.silver_arrows
|
.silver_arrows
|
||||||
LDA.l BowTracking
|
LDA.l BowTracking
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ DrawPlayerFileShared:
|
|||||||
%fs_drawBottle(EquipmentSRAM+$1F,9,23)
|
%fs_drawBottle(EquipmentSRAM+$1F,9,23)
|
||||||
|
|
||||||
; Sword
|
; Sword
|
||||||
LDA.l SpecialWeapons : AND.w #$00FF : CMP #$0001 : BEQ .bombSword
|
LDA.l SpecialWeapons : AND.w #$007F : CMP #$0001 : BEQ .bombSword
|
||||||
LDA.l EquipmentSRAM+$19 : AND.w #$00FF : BNE +
|
LDA.l EquipmentSRAM+$19 : AND.w #$00FF : BNE +
|
||||||
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
||||||
JMP ++
|
JMP ++
|
||||||
@@ -602,7 +602,7 @@ FileSelectDrawHudBar:
|
|||||||
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
||||||
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
||||||
|
|
||||||
LDA SpecialWeapons : AND.w #$00FF : CMP #$0001 : BEQ .colorBombs
|
LDA SpecialWeapons : AND.w #$007F : CMP #$0001 : BEQ .colorBombs
|
||||||
LDA #$028B|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
LDA #$028B|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
||||||
LDA EquipmentSRAM+$03 : AND.w #$00FF
|
LDA EquipmentSRAM+$03 : AND.w #$00FF
|
||||||
JSL.l HexToDec
|
JSL.l HexToDec
|
||||||
|
|||||||
10
hardmode.asm
10
hardmode.asm
@@ -80,14 +80,14 @@ GetItemDamageValue:
|
|||||||
CPX.b #$3C : BEQ .hookshot
|
CPX.b #$3C : BEQ .hookshot
|
||||||
CPX.b #$3D : BEQ .hookshot
|
CPX.b #$3D : BEQ .hookshot
|
||||||
|
|
||||||
LDA.l SpecialWeapons : CMP #$02 : BNE .normal
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$02 : BNE .normal
|
||||||
TXA : AND #$78 : CMP #$28 : BNE .normal
|
TXA : AND.b #$78 : CMP.b #$28 : BNE .normal
|
||||||
LDA $0DB8F1, X : BEQ .noDamage
|
LDA.l $8DB8F1, X : BEQ .noDamage
|
||||||
LDA #$01
|
LDA.b #$01
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.normal
|
.normal
|
||||||
LDA $0DB8F1, X ; what we wrote over
|
LDA.l $0DB8F1, X ; what we wrote over
|
||||||
RTL
|
RTL
|
||||||
.boomerang
|
.boomerang
|
||||||
LDA.l StunItemAction : AND #$01 : BNE .normal
|
LDA.l StunItemAction : AND #$01 : BNE .normal
|
||||||
|
|||||||
@@ -2912,10 +2912,6 @@ org $0882E8 ; Bank08.asm@456 (LDA $0DB0, Y : CMP.b #$03)
|
|||||||
JSL Utility_CheckHelmasaurKingCollision
|
JSL Utility_CheckHelmasaurKingCollision
|
||||||
NOP
|
NOP
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $1E838C ; sprite_helmasaur_king.asm@522 (LDA $0301 : AND.b #$0A)
|
|
||||||
JSL Utility_CheckHammerHelmasaurKingMask
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $06ED94 ; Bank06.asm@4866 (LDA $0E60, X : AND.b #$40)
|
org $06ED94 ; Bank06.asm@4866 (LDA $0E60, X : AND.b #$40)
|
||||||
JSL Utility_CheckImpervious
|
JSL Utility_CheckImpervious
|
||||||
NOP
|
NOP
|
||||||
|
|||||||
@@ -739,11 +739,11 @@ RTS
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
.incrementBossSword
|
.incrementBossSword
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ +
|
||||||
CMP #$03 : BEQ +
|
CMP.b #$03 : BEQ +
|
||||||
CMP #$04 : BEQ +
|
CMP.b #$04 : BEQ +
|
||||||
CMP #$05 : BEQ +
|
CMP.b #$05 : BEQ +
|
||||||
CMP #$08 : BEQ +
|
CMP.b #$08 : BEQ +
|
||||||
LDA SwordEquipment : BRA ++
|
LDA SwordEquipment : BRA ++
|
||||||
+ : LDA SpecialWeaponLevel
|
+ : LDA SpecialWeaponLevel
|
||||||
++
|
++
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ NewDrawHud:
|
|||||||
|
|
||||||
LDA InfiniteBombsModifier : BNE .infinite_bombs
|
LDA InfiniteBombsModifier : BNE .infinite_bombs
|
||||||
.finite_bombs
|
.finite_bombs
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE .normal
|
LDA.l SpecialWeapons : AND.b #$7F : CMP #$01 : BNE .normal
|
||||||
LDA.l SpecialWeaponLevel : BEQ .no_bombs
|
LDA.l SpecialWeaponLevel : BEQ .no_bombs
|
||||||
.normal
|
.normal
|
||||||
LDA.l BombsEquipment ; bombs
|
LDA.l BombsEquipment ; bombs
|
||||||
|
|||||||
@@ -470,8 +470,8 @@ AddReceivedItemExpandedGetItem:
|
|||||||
LDA #$01 : STA InfiniteBombsModifier ; infinite bombs
|
LDA #$01 : STA InfiniteBombsModifier ; infinite bombs
|
||||||
BRA .done
|
BRA .done
|
||||||
+ CMP.b #$C1 : BNE + ; Cane Upgrade
|
+ CMP.b #$C1 : BNE + ; Cane Upgrade
|
||||||
LDA.l SpecialWeapons : CMP #$03 : BEQ .blue_cane
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$03 : BEQ .blue_cane
|
||||||
CMP #$04 : BEQ .red_cane
|
CMP.b #$04 : BEQ .red_cane
|
||||||
BRA .done
|
BRA .done
|
||||||
.blue_cane
|
.blue_cane
|
||||||
LDA #$01 : STA ByrnaEquipment
|
LDA #$01 : STA ByrnaEquipment
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ DamageClassCalc:
|
|||||||
JSL Ganon_CheckAncillaVulnerability
|
JSL Ganon_CheckAncillaVulnerability
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA SpecialWeapons : CMP #$06 : BEQ .cane_immune ; only crystal switches in bee mode
|
LDA SpecialWeapons : AND.b #$7F : CMP #$06 : BEQ .cane_immune ; only crystal switches in bee mode
|
||||||
PLA
|
PLA
|
||||||
CMP #$01 : BEQ .red_cane
|
CMP #$01 : BEQ .red_cane
|
||||||
CMP #$2C : BEQ .red_cane
|
CMP #$2C : BEQ .red_cane
|
||||||
@@ -19,19 +19,15 @@ DamageClassCalc:
|
|||||||
BRA .not_cane_or_beam
|
BRA .not_cane_or_beam
|
||||||
.red_cane
|
.red_cane
|
||||||
PHA
|
PHA
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ .cane_immune
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$04 : BEQ .special_cane
|
||||||
CMP #$03 : BEQ .cane_immune
|
CMP.b #$05 : BEQ .special_cane
|
||||||
CMP #$04 : BEQ .special_cane
|
LDA SpecialWeapons : AND.b #$80 : BNE .cane_immune
|
||||||
CMP #$05 : BEQ .special_cane
|
|
||||||
CMP #$08 : BEQ .cane_immune
|
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.blue_cane
|
.blue_cane
|
||||||
PHA
|
PHA
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ .cane_immune
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$03 : BEQ .special_cane
|
||||||
CMP #$03 : BEQ .special_cane
|
CMP.b #$05 : BEQ .special_cane
|
||||||
CMP #$04 : BEQ .cane_immune
|
LDA SpecialWeapons : AND.b #$80 : BNE .cane_immune
|
||||||
CMP #$05 : BEQ .special_cane
|
|
||||||
CMP #$08 : BEQ .cane_immune
|
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.cane_immune
|
.cane_immune
|
||||||
LDA $0E20, X : CMP.b #$1E : BEQ .normal ; crystal switch
|
LDA $0E20, X : CMP.b #$1E : BEQ .normal ; crystal switch
|
||||||
@@ -47,7 +43,7 @@ DamageClassCalc:
|
|||||||
RTL
|
RTL
|
||||||
.beam
|
.beam
|
||||||
PHA
|
PHA
|
||||||
LDA SpecialWeapons : CMP #$02 : BNE .normal
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$02 : BNE .normal
|
||||||
PLA
|
PLA
|
||||||
LDA #$05
|
LDA #$05
|
||||||
RTL
|
RTL
|
||||||
@@ -55,7 +51,7 @@ DamageClassCalc:
|
|||||||
PLA
|
PLA
|
||||||
.not_cane_or_beam
|
.not_cane_or_beam
|
||||||
CMP #$07 : BNE .no_change
|
CMP #$07 : BNE .no_change
|
||||||
LDA SpecialWeapons : CMP #$01 : BNE .normal_bombs
|
LDA SpecialWeapons : AND.b #$7F : CMP #$01 : BNE .normal_bombs
|
||||||
LDA SpecialWeaponLevel : BEQ .normal_bombs
|
LDA SpecialWeaponLevel : BEQ .normal_bombs
|
||||||
LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
||||||
CMP.b #$D7 : BEQ .stunned_ganon
|
CMP.b #$D7 : BEQ .stunned_ganon
|
||||||
@@ -105,7 +101,7 @@ DamageClassCalc:
|
|||||||
RTL
|
RTL
|
||||||
.actual_silver_arrows
|
.actual_silver_arrows
|
||||||
LDA $0E20, X : CMP.b #$D7 : BNE +
|
LDA $0E20, X : CMP.b #$D7 : BNE +
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ .normal_arrows
|
LDA SpecialWeapons : AND.b #$7F : CMP #$01 : BEQ .normal_arrows
|
||||||
LDA #$20 : STA $0F10, X
|
LDA #$20 : STA $0F10, X
|
||||||
+
|
+
|
||||||
LDA #$09
|
LDA #$09
|
||||||
@@ -127,21 +123,21 @@ Utility_CheckAncillaOverlapWithSprite:
|
|||||||
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
||||||
RTL
|
RTL
|
||||||
.giant_moldorm
|
.giant_moldorm
|
||||||
LDA $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
LDA.w $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$07 : BEQ .check_collision_moldorm
|
LDA.w $0C4A, X : CMP.b #$07 : BEQ .check_collision_moldorm
|
||||||
BRA .ignore_collision ; don't collide with non-bombs
|
BRA .ignore_collision ; don't collide with non-bombs
|
||||||
++ : LDA.l SpecialWeapons : CMP #$03 : BNE ++
|
++ : CMP.b #$03 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$31 : BEQ .check_collision_moldorm
|
LDA.w $0C4A, X : CMP.b #$31 : BEQ .check_collision_moldorm
|
||||||
BRA .ignore_collision ; don't collide with non-byrna
|
BRA .ignore_collision ; don't collide with non-byrna
|
||||||
++ : LDA.l SpecialWeapons : CMP #$04 : BNE ++
|
++ : CMP.b #$04 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$01 : BEQ .check_collision_moldorm
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_moldorm
|
||||||
CMP #$2C : BEQ .check_collision_moldorm
|
CMP.b #$2C : BEQ .check_collision_moldorm
|
||||||
BRA .ignore_collision ; don't collide with non-somaria
|
BRA .ignore_collision ; don't collide with non-somaria
|
||||||
++ : LDA.l SpecialWeapons : CMP #$05 : BNE .ignore_collision
|
++ : CMP.b #$05 : BNE .ignore_collision
|
||||||
LDA $0C4A, X : CMP #$01 : BEQ .check_collision_moldorm
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_moldorm
|
||||||
CMP #$2C : BEQ .check_collision_moldorm
|
CMP.b #$2C : BEQ .check_collision_moldorm
|
||||||
CMP #$31 : BEQ .check_collision_moldorm
|
CMP.b #$31 : BEQ .check_collision_moldorm
|
||||||
BRA .ignore_collision ; don't collide with non-canes
|
BRA .ignore_collision ; don't collide with non-canes
|
||||||
|
|
||||||
.check_collision_moldorm
|
.check_collision_moldorm
|
||||||
@@ -154,20 +150,20 @@ Utility_CheckAncillaOverlapWithSprite:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
.trinexx
|
.trinexx
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$07 : BEQ .check_collision_trinexx
|
LDA.w $0C4A, X : CMP.b #$07 : BEQ .check_collision_trinexx
|
||||||
BRA .ignore_collision ; don't collide with non-bombs
|
BRA .ignore_collision ; don't collide with non-bombs
|
||||||
++ : LDA.l SpecialWeapons : CMP #$03 : BNE ++
|
++ : CMP.b #$03 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$31 : BEQ .check_collision_trinexx
|
LDA.w $0C4A, X : CMP.b #$31 : BEQ .check_collision_trinexx
|
||||||
JMP .ignore_collision ; don't collide with non-byrna
|
JMP .ignore_collision ; don't collide with non-byrna
|
||||||
++ : LDA.l SpecialWeapons : CMP #$04 : BNE ++
|
++ : CMP.b #$04 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$01 : BEQ .check_collision_trinexx
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_trinexx
|
||||||
CMP #$2C : BEQ .check_collision_trinexx
|
CMP.b #$2C : BEQ .check_collision_trinexx
|
||||||
JMP .ignore_collision ; don't collide with non-somaria
|
JMP .ignore_collision ; don't collide with non-somaria
|
||||||
++ : LDA.l SpecialWeapons : CMP #$05 : BNE .ignore_collision
|
++ : CMP #$05 : BNE .ignore_collision
|
||||||
LDA $0C4A, X : CMP #$01 : BEQ .check_collision_trinexx
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_trinexx
|
||||||
CMP #$2C : BEQ .check_collision_trinexx
|
CMP.b #$2C : BEQ .check_collision_trinexx
|
||||||
CMP #$31 : BEQ .check_collision_trinexx
|
CMP.b #$31 : BEQ .check_collision_trinexx
|
||||||
JMP .ignore_collision ; don't collide with non-canes
|
JMP .ignore_collision ; don't collide with non-canes
|
||||||
|
|
||||||
.check_collision_trinexx
|
.check_collision_trinexx
|
||||||
@@ -244,46 +240,34 @@ SetUpMoldormHitbox:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; start with X = ancilla index, Y = sprite index
|
; start with X = ancilla index, Y = sprite index
|
||||||
Utility_CheckHelmasaurKingCollision:
|
Utility_CheckHelmasaurKingCollision:
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$07 : BEQ .collide
|
LDA.w $0C4A, X : CMP.b #$07 : BEQ .collide
|
||||||
BRA .normal ; normal behavior with non-bombs
|
BRA .normal ; normal behavior with non-bombs
|
||||||
++ : LDA.l SpecialWeapons : CMP #$03 : BNE ++
|
++ : CMP.b #$03 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$31 : BEQ .collide
|
LDA.w $0C4A, X : CMP.b #$31 : BEQ .collide
|
||||||
BRA .normal ; normal behavior with non-byrna
|
BRA .normal ; normal behavior with non-byrna
|
||||||
++ : LDA.l SpecialWeapons : CMP #$04 : BNE ++
|
++ : CMP.b #$04 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$01 : BEQ .collide
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .collide
|
||||||
CMP #$2C : BEQ .collide
|
CMP.b #$2C : BEQ .collide
|
||||||
BRA .normal ; normal behavior with non-somaria
|
BRA .normal ; normal behavior with non-somaria
|
||||||
++ : LDA.l SpecialWeapons : CMP #$05 : BNE .normal
|
++ : CMP.b #$05 : BNE .normal
|
||||||
LDA $0C4A, X : CMP #$01 : BEQ .collide
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .collide
|
||||||
CMP #$2C : BEQ .collide
|
CMP.b #$2C : BEQ .collide
|
||||||
CMP #$31 : BEQ .collide
|
CMP.b #$31 : BEQ .collide
|
||||||
BRA .normal ; normal behavior with non-canes
|
BRA .normal ; normal behavior with non-canes
|
||||||
.collide
|
.collide
|
||||||
CLC
|
CLC
|
||||||
RTL
|
RTL
|
||||||
.normal
|
.normal
|
||||||
LDA $0DB0, Y : CMP.b #$03
|
LDA.w $0DB0, Y : CMP.b #$03
|
||||||
RTL
|
RTL
|
||||||
; returns carry set if there is collision immunity
|
; returns carry set if there is collision immunity
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Utility_CheckHammerHelmasaurKingMask:
|
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BEQ .no_effect
|
|
||||||
LDA $0301 : AND #$0A
|
|
||||||
RTL
|
|
||||||
.no_effect
|
|
||||||
LDA #$00
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Utility_CheckImpervious:
|
Utility_CheckImpervious:
|
||||||
LDA $0E20, X : CMP.b #$CB : BNE .normal
|
LDA $0E20, X : CMP.b #$CB : BNE .normal
|
||||||
.trinexx
|
.trinexx
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$06 : BEQ .check_sidenexx
|
||||||
CMP #$03 : BEQ +
|
LDA SpecialWeapons : AND.b #$80 : BNE +
|
||||||
CMP #$04 : BEQ +
|
|
||||||
CMP #$05 : BEQ +
|
|
||||||
CMP #$06 : BEQ .check_sidenexx
|
|
||||||
CMP #$08 : BEQ +
|
|
||||||
BRA .normal
|
BRA .normal
|
||||||
+
|
+
|
||||||
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||||
@@ -297,13 +281,7 @@ Utility_CheckImpervious:
|
|||||||
LDA $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
LDA $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
||||||
LDA $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
LDA $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
||||||
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
LDA SpecialWeapons : AND.b #$80 : BEQ .not_impervious
|
||||||
CMP #$03 : BEQ +
|
|
||||||
CMP #$04 : BEQ +
|
|
||||||
CMP #$05 : BEQ +
|
|
||||||
CMP #$08 : BEQ +
|
|
||||||
BRA .not_impervious
|
|
||||||
+
|
|
||||||
LDA $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
LDA $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
||||||
CMP.b #$40 : BEQ .not_impervious ; aga barrier
|
CMP.b #$40 : BEQ .not_impervious ; aga barrier
|
||||||
BRA .impervious
|
BRA .impervious
|
||||||
@@ -313,23 +291,11 @@ Utility_CheckImpervious:
|
|||||||
LDA #$01 : RTL
|
LDA #$01 : RTL
|
||||||
.sidenexx
|
.sidenexx
|
||||||
LDA $0CAA, X : AND.b #$04 : BEQ .vulnerable
|
LDA $0CAA, X : AND.b #$04 : BEQ .vulnerable
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
LDA.l SpecialWeapons : AND.b #$80 : BEQ .not_impervious
|
||||||
CMP #$03 : BEQ +
|
|
||||||
CMP #$04 : BEQ +
|
|
||||||
CMP #$05 : BEQ +
|
|
||||||
CMP #$08 : BEQ +
|
|
||||||
BRA .not_impervious
|
|
||||||
+
|
|
||||||
LDA $0CF2 : CMP #$06 : !BLT .impervious ; swords are ineffective
|
LDA $0CF2 : CMP #$06 : !BLT .impervious ; swords are ineffective
|
||||||
BRA .not_impervious
|
BRA .not_impervious
|
||||||
.vulnerable
|
.vulnerable
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
LDA.l SpecialWeapons : AND.b #$80 : BEQ .not_impervious
|
||||||
CMP #$03 : BEQ +
|
|
||||||
CMP #$04 : BEQ +
|
|
||||||
CMP #$05 : BEQ +
|
|
||||||
CMP #$08 : BEQ +
|
|
||||||
BRA .not_impervious
|
|
||||||
+
|
|
||||||
LDA $0CF2 : CMP #$06 : !BGE .impervious ; non-swords are ineffective
|
LDA $0CF2 : CMP #$06 : !BGE .impervious ; non-swords are ineffective
|
||||||
BRA .not_impervious
|
BRA .not_impervious
|
||||||
; returns nonzero A if impervious
|
; returns nonzero A if impervious
|
||||||
@@ -338,11 +304,11 @@ Utility_CheckImpervious:
|
|||||||
; start with X = sprite index
|
; start with X = sprite index
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AllowBombingMoldorm:
|
AllowBombingMoldorm:
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ .no_disable_projectiles
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .no_disable_projectiles
|
||||||
CMP #$03 : BEQ .no_disable_projectiles
|
CMP.b #$03 : BEQ .no_disable_projectiles
|
||||||
CMP #$04 : BEQ .no_disable_projectiles
|
CMP.b #$04 : BEQ .no_disable_projectiles
|
||||||
CMP #$05 : BEQ .no_disable_projectiles
|
CMP.b #$05 : BEQ .no_disable_projectiles
|
||||||
CMP #$06 : BEQ .no_disable_projectiles
|
CMP.b #$06 : BEQ .no_disable_projectiles
|
||||||
INC $0BA0, X
|
INC $0BA0, X
|
||||||
.no_disable_projectiles
|
.no_disable_projectiles
|
||||||
JSL !SPRITE_INITIALIZED_SEGMENTED
|
JSL !SPRITE_INITIALIZED_SEGMENTED
|
||||||
@@ -352,11 +318,11 @@ AllowBombingBarrier:
|
|||||||
; what we wrote over
|
; what we wrote over
|
||||||
LDA $0D00, X : !SUB.b #$0C : STA $0D00, X
|
LDA $0D00, X : !SUB.b #$0C : STA $0D00, X
|
||||||
LDA $0E20, X : CMP #$40 : BNE .disable_projectiles
|
LDA $0E20, X : CMP #$40 : BNE .disable_projectiles
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ .no_disable_projectiles
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .no_disable_projectiles
|
||||||
CMP #$03 : BEQ .no_disable_projectiles
|
CMP.b #$03 : BEQ .no_disable_projectiles
|
||||||
CMP #$04 : BEQ .no_disable_projectiles
|
CMP.b #$04 : BEQ .no_disable_projectiles
|
||||||
CMP #$05 : BEQ .no_disable_projectiles
|
CMP.b #$05 : BEQ .no_disable_projectiles
|
||||||
CMP #$06 : BEQ .no_disable_projectiles
|
CMP.b #$06 : BEQ .no_disable_projectiles
|
||||||
.disable_projectiles
|
.disable_projectiles
|
||||||
INC $0BA0, X
|
INC $0BA0, X
|
||||||
.no_disable_projectiles
|
.no_disable_projectiles
|
||||||
@@ -364,7 +330,7 @@ AllowBombingBarrier:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawBombInMenu:
|
DrawBombInMenu:
|
||||||
JSL LoadBombCount16 : AND.w #$00FF : BEQ .noBombs
|
JSL LoadBombCount16 : AND.w #$00FF : BEQ .noBombs
|
||||||
LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .vanillaBombs
|
LDA SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BNE .vanillaBombs
|
||||||
LDA.l SpecialWeaponLevel : AND.w #$00FF : BEQ .noBombs : STA $02
|
LDA.l SpecialWeaponLevel : AND.w #$00FF : BEQ .noBombs : STA $02
|
||||||
LDA.w #$FC81 : STA $04
|
LDA.w #$FC81 : STA $04
|
||||||
BRA .done
|
BRA .done
|
||||||
@@ -379,7 +345,7 @@ DrawBombInMenu:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawSwordInMenu:
|
DrawSwordInMenu:
|
||||||
LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BEQ .specialSword
|
LDA SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BEQ .specialSword
|
||||||
CMP.w #$0003 : BEQ .specialSword
|
CMP.w #$0003 : BEQ .specialSword
|
||||||
CMP.w #$0004 : BEQ .specialSword
|
CMP.w #$0004 : BEQ .specialSword
|
||||||
CMP.w #$0005 : BEQ .specialSword
|
CMP.w #$0005 : BEQ .specialSword
|
||||||
@@ -400,7 +366,7 @@ DrawSwordInMenu:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawBombInYBox:
|
DrawBombInYBox:
|
||||||
CPX.w #$0004 : BNE .done
|
CPX.w #$0004 : BNE .done
|
||||||
LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .vanilla
|
LDA SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BNE .vanilla
|
||||||
LDA SpecialWeaponLevel : AND.w #$00FF : CLC : ADC.w #$00BD : BRA .done
|
LDA SpecialWeaponLevel : AND.w #$00FF : CLC : ADC.w #$00BD : BRA .done
|
||||||
.vanilla
|
.vanilla
|
||||||
LDA.w #$0001
|
LDA.w #$0001
|
||||||
@@ -417,7 +383,7 @@ DrawBombOnHud:
|
|||||||
MVN $7E, $21
|
MVN $7E, $21
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
LDA.l SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .regularBombs
|
LDA.l SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BNE .regularBombs
|
||||||
LDA.l SpecialWeaponLevel : AND.w #$00FF : ASL #2 : TAX
|
LDA.l SpecialWeaponLevel : AND.w #$00FF : ASL #2 : TAX
|
||||||
LDA.l BombIcon, X : STA.l $7EC71A
|
LDA.l BombIcon, X : STA.l $7EC71A
|
||||||
LDA.l BombIcon+2, X : STA.l $7EC71C
|
LDA.l BombIcon+2, X : STA.l $7EC71C
|
||||||
@@ -427,7 +393,7 @@ DrawBombOnHud:
|
|||||||
BombSpriteColor:
|
BombSpriteColor:
|
||||||
db $04, $08, $04, $02, $0A, $0A
|
db $04, $08, $04, $02, $0A, $0A
|
||||||
SetBombSpriteColor:
|
SetBombSpriteColor:
|
||||||
LDA.l SpecialWeapons : CMP.b #$01 : BNE .normal
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE .normal
|
||||||
PHX
|
PHX
|
||||||
LDA.l SpecialWeaponLevel
|
LDA.l SpecialWeaponLevel
|
||||||
TAX
|
TAX
|
||||||
@@ -440,7 +406,7 @@ SetBombSpriteColor:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
StoreSwordDamage:
|
StoreSwordDamage:
|
||||||
LDA.l SpecialWeapons : CMP #$02 : BEQ +
|
LDA.l SpecialWeapons : AND.b #$7F : CMP #$02 : BEQ +
|
||||||
LDA.l $06ED39, X : RTL
|
LDA.l $06ED39, X : RTL
|
||||||
+
|
+
|
||||||
LDA #$05
|
LDA #$05
|
||||||
@@ -454,8 +420,8 @@ BeeDamageClass:
|
|||||||
db $FF, $01, $01, $FF, $FF
|
db $FF, $01, $01, $FF, $FF
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckDetonateBomb:
|
CheckDetonateBomb:
|
||||||
LDA.l SpecialWeapons : CMP.b #$01 : BEQ .detonate_bombs
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .detonate_bombs
|
||||||
CMP.b #$06 : BEQ .release_bee
|
CMP.b #$06 : BEQ .release_bee
|
||||||
CLC : RTL
|
CLC : RTL
|
||||||
.detonate_bombs
|
.detonate_bombs
|
||||||
LDX.b #09
|
LDX.b #09
|
||||||
@@ -496,7 +462,7 @@ CheckDetonateBomb:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetBeeType:
|
SetBeeType:
|
||||||
LDA.l SpecialWeapons : CMP.b #$06 : BEQ .bee_mode
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BEQ .bee_mode
|
||||||
LDX.w $0202
|
LDX.w $0202
|
||||||
.check_bee_type
|
.check_bee_type
|
||||||
LDA.l $7EF33F, X
|
LDA.l $7EF33F, X
|
||||||
@@ -516,7 +482,7 @@ SetBeeType:
|
|||||||
BRA .regular_bee
|
BRA .regular_bee
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ArrghusBoing:
|
ArrghusBoing:
|
||||||
LDA.l SpecialWeapons : CMP.b #$06 : BNE .done
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE .done
|
||||||
LDA.w $0F60, X : AND.b #$BF : STA.w $0F60, X
|
LDA.w $0F60, X : AND.b #$BF : STA.w $0F60, X
|
||||||
.done
|
.done
|
||||||
; what we wrote over
|
; what we wrote over
|
||||||
@@ -536,7 +502,7 @@ LDA.w $0F00,Y
|
|||||||
BNE .unsuitable_target
|
BNE .unsuitable_target
|
||||||
|
|
||||||
; in bee-mode skip targets that the bee can't hurt
|
; in bee-mode skip targets that the bee can't hurt
|
||||||
LDA.l SpecialWeapons : CMP.b #$06 : BNE +
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE +
|
||||||
JSR BeeCheckDamage
|
JSR BeeCheckDamage
|
||||||
CMP.b #$00 : BEQ .unsuitable_target
|
CMP.b #$00 : BEQ .unsuitable_target
|
||||||
+
|
+
|
||||||
@@ -551,7 +517,7 @@ BNE .unsuitable_target
|
|||||||
LDA.w $0F60,Y
|
LDA.w $0F60,Y
|
||||||
AND.b #$40
|
AND.b #$40
|
||||||
BEQ +
|
BEQ +
|
||||||
LDA.l SpecialWeapons : CMP.b #$06 : BNE .unsuitable_target
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE .unsuitable_target
|
||||||
; in bee mode, allow targetting anti-fairies, bunny beams, and keese
|
; in bee mode, allow targetting anti-fairies, bunny beams, and keese
|
||||||
LDA.w $0E20,Y
|
LDA.w $0E20,Y
|
||||||
CMP.b #$15 : BEQ + ; anti-fairy
|
CMP.b #$15 : BEQ + ; anti-fairy
|
||||||
@@ -596,7 +562,7 @@ RTS
|
|||||||
CheckBugNet:
|
CheckBugNet:
|
||||||
LDA.w $037A : AND.b #$10 : BEQ .done ; normal behavior if not bugnet
|
LDA.w $037A : AND.b #$10 : BEQ .done ; normal behavior if not bugnet
|
||||||
PHP ; we want to preserve the carry bit
|
PHP ; we want to preserve the carry bit
|
||||||
LDA.l SpecialWeapons : CMP.b #$08 : BNE .return_10 ; normal behavior if not bugnet mode
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$08 : BNE .return_10 ; normal behavior if not bugnet mode
|
||||||
.bugnet_mode
|
.bugnet_mode
|
||||||
LDA.w $0E20, X : CMP.b #$E3 : BEQ .return_10 ; normal behavior if fairy
|
LDA.w $0E20, X : CMP.b #$E3 : BEQ .return_10 ; normal behavior if fairy
|
||||||
CMP.b #$79 : BEQ .return_10 ; normal behavior if bee
|
CMP.b #$79 : BEQ .return_10 ; normal behavior if bee
|
||||||
@@ -608,7 +574,7 @@ PLP : LDA.b #$10
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetHammerClass:
|
SetHammerClass:
|
||||||
LDA.l SpecialWeapons : CMP.b #$08 : BNE .normal ; normal behavior if not bugnet mode
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$08 : BNE .normal ; normal behavior if not bugnet mode
|
||||||
LDA.w $037A : AND.b #$10 : BEQ .normal ; normal behavior if not bugnet
|
LDA.w $037A : AND.b #$10 : BEQ .normal ; normal behavior if not bugnet
|
||||||
LDA 4, S : TAX ; get sprite index off of stack
|
LDA 4, S : TAX ; get sprite index off of stack
|
||||||
LDA.w $0E20, X : CMP.b #$88 : BNE .not_mothula
|
LDA.w $0E20, X : CMP.b #$88 : BNE .not_mothula
|
||||||
|
|||||||
@@ -60,12 +60,8 @@ LookupDamageLevel:
|
|||||||
LDA.l !StalfosBombDamage
|
LDA.l !StalfosBombDamage
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ .bomb_table
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$02 : BEQ .pseudo_table
|
||||||
CMP #$02 : BEQ .pseudo_table
|
LDA SpecialWeapons : AND.b #$80 : BNE .bomb_table
|
||||||
CMP #$03 : BEQ .bomb_table
|
|
||||||
CMP #$04 : BEQ .bomb_table
|
|
||||||
CMP #$05 : BEQ .bomb_table
|
|
||||||
CMP #$08 : BEQ .bomb_table
|
|
||||||
%LookupDamageSubclass(Damage_Table) : RTL
|
%LookupDamageSubclass(Damage_Table) : RTL
|
||||||
.bomb_table
|
.bomb_table
|
||||||
%LookupDamageSubclass(Damage_Table_Bombs) : RTL
|
%LookupDamageSubclass(Damage_Table_Bombs) : RTL
|
||||||
@@ -131,12 +127,12 @@ CheckTabletSword:
|
|||||||
LDA.l AllowHammerTablets : BEQ +
|
LDA.l AllowHammerTablets : BEQ +
|
||||||
LDA HammerEquipment : BNE .allow ; check for hammer
|
LDA HammerEquipment : BNE .allow ; check for hammer
|
||||||
+
|
+
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BEQ .check_special
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .check_special
|
||||||
CMP #$03 : BEQ .check_special
|
CMP.b #$03 : BEQ .check_special
|
||||||
CMP #$04 : BEQ .check_special
|
CMP.b #$04 : BEQ .check_special
|
||||||
CMP #$05 : BEQ .check_special
|
CMP.b #$05 : BEQ .check_special
|
||||||
CMP #$06 : BEQ .allow
|
CMP.b #$06 : BEQ .allow
|
||||||
CMP #$08 : BEQ .check_special
|
CMP.b #$08 : BEQ .check_special
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.allow
|
.allow
|
||||||
LDA.b #$02 : RTL
|
LDA.b #$02 : RTL
|
||||||
@@ -150,7 +146,7 @@ GetSwordLevelForEvilBarrier:
|
|||||||
LDA.l AllowHammerEvilBarrierWithFighterSword : BEQ +
|
LDA.l AllowHammerEvilBarrierWithFighterSword : BEQ +
|
||||||
LDA #$FF : RTL
|
LDA #$FF : RTL
|
||||||
+
|
+
|
||||||
LDA.l SpecialWeapons : CMP.b #$08 : BEQ +
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$08 : BEQ +
|
||||||
LDA.l SwordEquipment : RTL
|
LDA.l SwordEquipment : RTL
|
||||||
+
|
+
|
||||||
LDA.l SpecialWeaponLevel : RTL
|
LDA.l SpecialWeaponLevel : RTL
|
||||||
|
|||||||
15
tables.asm
15
tables.asm
@@ -120,15 +120,18 @@ db #$00 ; #$00 = Default behavior (silver arrows)
|
|||||||
org $30802F ; PC 0x18002F
|
org $30802F ; PC 0x18002F
|
||||||
SpecialWeapons:
|
SpecialWeapons:
|
||||||
db #$00
|
db #$00
|
||||||
|
; s - - - m m m m (bitfield)
|
||||||
|
; s - only swords damage can hurt enemies
|
||||||
|
; m - special weapon mode
|
||||||
; $00 = Off (default)
|
; $00 = Off (default)
|
||||||
; $01 = Bomb-Only mode
|
; $01 = Bomb mode
|
||||||
; $02 = Pseudosword
|
; $02 = Pseudosword
|
||||||
; $03 = Byrna-Only mode
|
; $03 = Byrna mode
|
||||||
; $04 = Somaria-Only mode
|
; $04 = Somaria mode
|
||||||
; $05 = Canes-Only mode
|
; $05 = Canes mode
|
||||||
; $06 = Bee mode
|
; $06 = Bee mode
|
||||||
; $07 = Hammer on B (for use with swordless)
|
; $07 = Unused
|
||||||
; $05 = Bugnet mode
|
; $08 = Bugnet mode
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308030 ; PC 0x180030
|
org $308030 ; PC 0x180030
|
||||||
EnableSRAMTrace:
|
EnableSRAMTrace:
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ Ganon_CheckBeeVulnerability: ; we know it's a bee
|
|||||||
LDA #$09
|
LDA #$09
|
||||||
BRA .done
|
BRA .done
|
||||||
.normal
|
.normal
|
||||||
LDA.l SpecialWeapons : CMP.b #$06 : BNE .regular_bee
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE .regular_bee
|
||||||
LDA.w $0ED0, X
|
LDA.w $0ED0, X
|
||||||
BRA .done
|
BRA .done
|
||||||
.regular_bee
|
.regular_bee
|
||||||
@@ -115,7 +115,7 @@ Ganon_CheckHammerVulnerability: ; we know it's hammer
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckBeeBoss:
|
CheckBeeBoss:
|
||||||
; Y is sprite index
|
; Y is sprite index
|
||||||
LDA.l SpecialWeapons : CMP #$06 : BNE .not_bee_mode
|
LDA.l SpecialWeapons : AND.b #$7F : CMP #$06 : BNE .not_bee_mode
|
||||||
LDA #$00 : RTL
|
LDA #$00 : RTL
|
||||||
.not_bee_mode
|
.not_bee_mode
|
||||||
LDA.l GanonVulnerabilityItem : CMP #$10 : BNE .normal ; ganon not vulnerable to bee
|
LDA.l GanonVulnerabilityItem : CMP #$10 : BNE .normal ; ganon not vulnerable to bee
|
||||||
|
|||||||
Reference in New Issue
Block a user