Add cane-only modes
This commit is contained in:
@@ -47,7 +47,7 @@ dw !ROM_VERSION_HIGH
|
|||||||
!SHOP_PURCHASE_COUNTS = "$7EF302" ;$7EF302 - $7EF33F (temporary home)
|
!SHOP_PURCHASE_COUNTS = "$7EF302" ;$7EF302 - $7EF33F (temporary home)
|
||||||
!INVENTORY_SWAP = "$7EF38C"
|
!INVENTORY_SWAP = "$7EF38C"
|
||||||
!INVENTORY_SWAP_2 = "$7EF38E"
|
!INVENTORY_SWAP_2 = "$7EF38E"
|
||||||
!BOMB_LEVEL = "$7EF38F"
|
!WEAPON_LEVEL = "$7EF38F"
|
||||||
!ITEM_LIMIT_COUNTS = "$7EF390" ; $7EF390 - ????
|
!ITEM_LIMIT_COUNTS = "$7EF390" ; $7EF390 - ????
|
||||||
!NPC_FLAGS = "$7EF410"
|
!NPC_FLAGS = "$7EF410"
|
||||||
!NPC_FLAGS_2 = "$7EF411"
|
!NPC_FLAGS_2 = "$7EF411"
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ SetEscapeAssist:
|
|||||||
++
|
++
|
||||||
|
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE +
|
LDA.l SpecialWeapons : CMP #$01 : BNE +
|
||||||
LDA.l !BOMB_LEVEL : BEQ +
|
LDA.l !WEAPON_LEVEL : BEQ +
|
||||||
LDA #$01 : STA !INFINITE_BOMBS
|
LDA #$01 : STA !INFINITE_BOMBS
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -2787,7 +2787,7 @@ BRA + : NOP #8 : +
|
|||||||
org $089EF8 ; ancilla_bomb@1438 (LDA.w #$04 : STA $0B)
|
org $089EF8 ; ancilla_bomb@1438 (LDA.w #$04 : STA $0B)
|
||||||
JSL SetBombSpriteColor
|
JSL SetBombSpriteColor
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; icons with numbers
|
; bomb icons with numbers
|
||||||
org $0DFC51 ; is this being used? I hope not! let's find out if anything breaks!
|
org $0DFC51 ; is this being used? I hope not! let's find out if anything breaks!
|
||||||
db $F5, $20, $F5, $20, $F5, $20, $F5, $20
|
db $F5, $20, $F5, $20, $F5, $20, $F5, $20
|
||||||
db $B2, $3C, $B3, $3C, $C2, $3C, $17, $3C
|
db $B2, $3C, $B3, $3C, $C2, $3C, $17, $3C
|
||||||
@@ -2796,7 +2796,7 @@ db $B2, $24, $B3, $24, $C2, $24, $19, $24
|
|||||||
db $B2, $28, $B3, $28, $C2, $28, $1A, $28
|
db $B2, $28, $B3, $28, $C2, $28, $1A, $28
|
||||||
db $B2, $28, $B3, $28, $C2, $28, $1B, $28
|
db $B2, $28, $B3, $28, $C2, $28, $1B, $28
|
||||||
|
|
||||||
; icons without numbers
|
; bomb icons without numbers
|
||||||
org $0DFC81
|
org $0DFC81
|
||||||
db $F5, $20, $F5, $20, $F5, $20, $F5, $20
|
db $F5, $20, $F5, $20, $F5, $20, $F5, $20
|
||||||
db $B2, $3C, $B3, $3C, $C2, $3C, $C2, $7C
|
db $B2, $3C, $B3, $3C, $C2, $3C, $C2, $7C
|
||||||
|
|||||||
@@ -726,9 +726,11 @@ RTS
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
.incrementBossSword
|
.incrementBossSword
|
||||||
LDA SpecialWeapons : CMP #$01 : BNE +
|
LDA SpecialWeapons : CMP #$01 : BEQ +
|
||||||
LDA !BOMB_LEVEL : BRA ++
|
CMP #$03 : BEQ +
|
||||||
+ : LDA $7EF359
|
CMP #$04 : BEQ +
|
||||||
|
LDA $7EF359 : BRA ++
|
||||||
|
+ : LDA !WEAPON_LEVEL
|
||||||
++
|
++
|
||||||
BNE + : -
|
BNE + : -
|
||||||
%TopHalf($7EF452) : RTS
|
%TopHalf($7EF452) : RTS
|
||||||
|
|||||||
@@ -76,9 +76,9 @@ JMP .done
|
|||||||
PHA
|
PHA
|
||||||
TYA ; load bomb upgrade item
|
TYA ; load bomb upgrade item
|
||||||
!SUB #$B0 ; convert to bomb level
|
!SUB #$B0 ; convert to bomb level
|
||||||
CMP.l !BOMB_LEVEL : !BGE + ; skip if highest is lower (this is an upgrade)
|
CMP.l !WEAPON_LEVEL : !BGE + ; skip if highest is lower (this is an upgrade)
|
||||||
LDA.l !BOMB_LEVEL : !ADD #$B0 ; convert to item id
|
LDA.l !WEAPON_LEVEL : !ADD #$B0 ; convert to item id
|
||||||
TAY : PLA : LDA.l !BOMB_LEVEL ; put bomb level into the thing to write
|
TAY : PLA : LDA.l !WEAPON_LEVEL ; put bomb level into the thing to write
|
||||||
JMP .done
|
JMP .done
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ SEP #$30
|
|||||||
LDA !INFINITE_BOMBS : BNE .infinite_bombs
|
LDA !INFINITE_BOMBS : BNE .infinite_bombs
|
||||||
.finite_bombs
|
.finite_bombs
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE .normal
|
LDA.l SpecialWeapons : CMP #$01 : BNE .normal
|
||||||
LDA.l !BOMB_LEVEL : BEQ .no_bombs
|
LDA.l !WEAPON_LEVEL : BEQ .no_bombs
|
||||||
.normal
|
.normal
|
||||||
LDA.l $7EF343 ; bombs
|
LDA.l $7EF343 ; bombs
|
||||||
JSR HudHexToDec2Digit ;requires 8 bit registers!
|
JSR HudHexToDec2Digit ;requires 8 bit registers!
|
||||||
|
|||||||
74
newitems.asm
74
newitems.asm
@@ -46,6 +46,12 @@
|
|||||||
; #$B4 - L-4 Bombs
|
; #$B4 - L-4 Bombs
|
||||||
; #$B5 - L-5 Bombs
|
; #$B5 - L-5 Bombs
|
||||||
; #$B6 - Progressive Bombs
|
; #$B6 - Progressive Bombs
|
||||||
|
; #$B7 - L-1 Cane
|
||||||
|
; #$B8 - L-2 Cane
|
||||||
|
; #$B9 - L-3 Cane
|
||||||
|
; #$BA - L-4 Cane
|
||||||
|
; #$BB - L-5 Cane
|
||||||
|
; #$BC - Progressive Cane
|
||||||
; #$FE - Server Request (Asychronous Chest)
|
; #$FE - Server Request (Asychronous Chest)
|
||||||
; #$FF - Null Chest
|
; #$FF - Null Chest
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -401,10 +407,20 @@ AddReceivedItemExpandedGetItem:
|
|||||||
LDA $7EF36F : INC : STA $7EF36F
|
LDA $7EF36F : INC : STA $7EF36F
|
||||||
++
|
++
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$B1 : !BLT + : CMP.b #$B6 : !BGE + ; Bomb Upgrades
|
+ CMP.b #$B1 : !BLT + : CMP.b #$B7 : !BGE + ; Bomb Upgrades
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
LDA.l SpecialWeapons : CMP #$01 : BNE .done
|
||||||
LDA #$01 : STA $7F50C9 ; infinite bombs
|
LDA #$01 : STA $7F50C9 ; infinite bombs
|
||||||
++
|
JMP .done
|
||||||
|
+ : CMP.b #$B7 : !BLT + : CMP.b #$BD : !BGE + ; Cane Upgrades
|
||||||
|
LDA.l SpecialWeapons : CMP #$03 : BEQ .blue_cane
|
||||||
|
CMP #$04 : BEQ .red_cane
|
||||||
|
BRA .done
|
||||||
|
.blue_cane
|
||||||
|
LDA #$01 : STA $7EF351
|
||||||
|
BRA .done
|
||||||
|
.red_cane
|
||||||
|
LDA #$01 : STA $7EF350
|
||||||
|
BRA .done
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
.done
|
.done
|
||||||
@@ -516,7 +532,7 @@ AddReceivedItemExpanded:
|
|||||||
+ : CMP.b #$00 : BNE + ; No Bow
|
+ : CMP.b #$00 : BNE + ; No Bow
|
||||||
LDA.b #$3A : STA $02D8 : JMP .done
|
LDA.b #$3A : STA $02D8 : JMP .done
|
||||||
+ ; Any Bow
|
+ ; Any Bow
|
||||||
LDA.b #$3B : STA $02D8 : BRA .done
|
LDA.b #$3B : STA $02D8 : JMP .done
|
||||||
++ : CMP.b #$65 : BNE ++ ; Progressive Bow 2
|
++ : CMP.b #$65 : BNE ++ ; Progressive Bow 2
|
||||||
LDA.l !INVENTORY_SWAP_2 : ORA #$20 : STA.l !INVENTORY_SWAP_2
|
LDA.l !INVENTORY_SWAP_2 : ORA #$20 : STA.l !INVENTORY_SWAP_2
|
||||||
BRA --
|
BRA --
|
||||||
@@ -527,13 +543,13 @@ AddReceivedItemExpanded:
|
|||||||
JSL.l GetRNGItemSingle : STA $02D8
|
JSL.l GetRNGItemSingle : STA $02D8
|
||||||
XBA : JSR.w MarkRNGItemSingle
|
XBA : JSR.w MarkRNGItemSingle
|
||||||
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
||||||
BRA .done
|
JMP .done
|
||||||
++ : CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
++ : CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
||||||
JSL.l GetRNGItemMulti : STA $02D8
|
JSL.l GetRNGItemMulti : STA $02D8
|
||||||
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
||||||
BRA .done
|
JMP .done
|
||||||
++ : CMP.b #$B6 : BNE ++ ; Progressive Bombs
|
++ : CMP.b #$B6 : BNE ++ ; Progressive Bombs
|
||||||
LDA !BOMB_LEVEL
|
LDA !WEAPON_LEVEL
|
||||||
CMP.b #$00 : BNE + ; have no Bombs
|
CMP.b #$00 : BNE + ; have no Bombs
|
||||||
LDA.b #$B1 : STA $02D8 : JMP .done
|
LDA.b #$B1 : STA $02D8 : JMP .done
|
||||||
+ : CMP.b #$01 : BNE + ; have L-1 Bombs
|
+ : CMP.b #$01 : BNE + ; have L-1 Bombs
|
||||||
@@ -544,6 +560,18 @@ AddReceivedItemExpanded:
|
|||||||
LDA.b #$B4 : STA $02D8 : JMP .done
|
LDA.b #$B4 : STA $02D8 : JMP .done
|
||||||
+ ; Everything Else
|
+ ; Everything Else
|
||||||
LDA.b #$B5 : STA $02D8 : JMP .done
|
LDA.b #$B5 : STA $02D8 : JMP .done
|
||||||
|
++ : CMP.b #$BC : BNE ++ ; Progressive Cane
|
||||||
|
LDA !WEAPON_LEVEL
|
||||||
|
CMP.b #$00 : BNE + ; have no Cane
|
||||||
|
LDA.b #$B7 : STA $02D8 : JMP .done
|
||||||
|
+ : CMP.b #$01 : BNE + ; have L-1 Cane
|
||||||
|
LDA.b #$B8 : STA $02D8 : JMP .done
|
||||||
|
+ : CMP.b #$02 : BNE + ; have L-2 Cane
|
||||||
|
LDA.b #$B9 : STA $02D8 : JMP .done
|
||||||
|
+ : CMP.b #$03 : BNE + ; have L-3 Cane
|
||||||
|
LDA.b #$BA : STA $02D8 : JMP .done
|
||||||
|
+ ; Everything Else
|
||||||
|
LDA.b #$BB : STA $02D8 : JMP .done
|
||||||
++
|
++
|
||||||
.done
|
.done
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
@@ -554,10 +582,6 @@ AddReceivedItemExpanded:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;DATA AddReceivedItemExpanded
|
;DATA AddReceivedItemExpanded
|
||||||
{
|
{
|
||||||
; This is a temporary measure for Fish to have consistent addresses
|
|
||||||
warnpc $A08800
|
|
||||||
org $A08800
|
|
||||||
|
|
||||||
.y_offsets
|
.y_offsets
|
||||||
db -5, -5, -5, -5, -5, -4, -4, -5
|
db -5, -5, -5, -5, -5, -4, -4, -5
|
||||||
db -5, -4, -4, -4, -2, -4, -4, -4
|
db -5, -4, -4, -4, -2, -4, -4, -4
|
||||||
@@ -594,7 +618,8 @@ org $A08800
|
|||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Small Key
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Small Key
|
||||||
db -4 ; reserved for bee traps
|
db -4 ; reserved for bee traps
|
||||||
db -4, -4, -4, -4, -4, -4 ; Bomb Upgrades
|
db -4, -4, -4, -4, -4, -4 ; Bomb Upgrades
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
db -4, -4, -4, -4, -4, -4 ; Cane Upgrades
|
||||||
|
db -4, -4, -4 ; Unused
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
||||||
@@ -635,8 +660,9 @@ org $A08800
|
|||||||
;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; *EVENT*
|
;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; *EVENT*
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
||||||
db 0 ; reserved for bee traps
|
db 0 ; reserved for bee traps
|
||||||
db 0, 0, 0, 0, 0, 0; Bomb Upgrades
|
db 0, 0, 0, 0, 0, 0 ; Bomb Upgrades
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
db 4, 4, 4, 4, 4, 4 ; Cane Upgrades
|
||||||
|
db 0, 0, 0 ; Unused
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
||||||
@@ -682,7 +708,8 @@ org $A08800
|
|||||||
;db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; *EVENT*
|
;db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; *EVENT*
|
||||||
db $49 ; reserved for bee traps
|
db $49 ; reserved for bee traps
|
||||||
db $13, $13, $13, $13, $13, $13 ; Bomb Upgrades
|
db $13, $13, $13, $13, $13, $13 ; Bomb Upgrades
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $07, $07, $07, $07, $07, $07 ; Cane Upgrades
|
||||||
|
db $49, $49, $49 ; Unused
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
||||||
@@ -722,8 +749,9 @@ org $A08800
|
|||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Free Big Key
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Free Big Key
|
||||||
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; Free Small Key
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; Free Small Key
|
||||||
db $02 ; reserved for bee traps
|
db $02 ; reserved for bee traps
|
||||||
db $02, $02, $02, $02, $02, $02; Bomb Upgrades
|
db $02, $02, $02, $02, $02, $02 ; Bomb Upgrades
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
db $00, $00, $00, $00, $00, $00 ; Cane Upgrades
|
||||||
|
db $02, $02, $02 ; Unused
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
||||||
@@ -765,7 +793,8 @@ org $A08800
|
|||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
||||||
db 4 ; reserved for bee traps
|
db 4 ; reserved for bee traps
|
||||||
db 4, 2, 1, 5, 5, 5 ; Bomb Upgrades
|
db 4, 2, 1, 5, 5, 5 ; Bomb Upgrades
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
db 5, 5, 5, 5, 5, 5 ; Cane Upgrades
|
||||||
|
db 4, 4, 4 ; Unused
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
||||||
@@ -808,7 +837,8 @@ org $A08800
|
|||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Small Key
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Small Key
|
||||||
dw $F36A ; reserved for bee traps
|
dw $F36A ; reserved for bee traps
|
||||||
dw $F38F, $F38F, $F38F, $F38F, $F38F, $F38F ; Bomb Upgrades
|
dw $F38F, $F38F, $F38F, $F38F, $F38F, $F38F ; Bomb Upgrades
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
dw $F38F, $F38F, $F38F, $F38F, $F38F, $F38F ; Cane Upgrades
|
||||||
|
dw $F36A, $F36A, $F36A ; Unused
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
||||||
@@ -853,7 +883,8 @@ org $A08800
|
|||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Small Key
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Small Key
|
||||||
db $FF ; reserved for bee traps
|
db $FF ; reserved for bee traps
|
||||||
db $01, $02, $03, $04, $05, $FF ; Bomb Upgrades
|
db $01, $02, $03, $04, $05, $FF ; Bomb Upgrades
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
db $01, $02, $03, $04, $05, $FF ; Cane Upgrades
|
||||||
|
db $FF, $FF, $FF ; Unused
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||||
@@ -941,7 +972,8 @@ Link_ReceiveItemAlternatesExpanded:
|
|||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Small Key
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Small Key
|
||||||
db -1 ; reserved for bee traps
|
db -1 ; reserved for bee traps
|
||||||
db -1, -1, -1, -1, -1, -1 ; Bomb Upgrades
|
db -1, -1, -1, -1, -1, -1 ; Bomb Upgrades
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
db -1, -1, -1, -1, -1, -1 ; Cane Upgrades
|
||||||
|
db -1, -1, -1 ; Unused
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
||||||
|
|||||||
@@ -11,16 +11,34 @@ DamageClassCalc:
|
|||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
CMP #$01 : BEQ .cane
|
CMP #$01 : BEQ .red_cane
|
||||||
CMP #$2C : BEQ .cane
|
CMP #$2C : BEQ .red_cane
|
||||||
CMP #$31 : BEQ .cane
|
CMP #$31 : BEQ .blue_cane
|
||||||
CMP #$0C : BEQ .beam
|
CMP #$0C : BEQ .beam
|
||||||
BRA .not_cane_or_beam
|
BRA .not_cane_or_beam
|
||||||
.cane
|
.red_cane
|
||||||
PHA
|
PHA
|
||||||
LDA SpecialWeapons : CMP #$01 : BNE .normal
|
LDA SpecialWeapons : CMP #$01 : BEQ .cane_immune
|
||||||
|
LDA SpecialWeapons : CMP #$03 : BEQ .cane_immune
|
||||||
|
LDA SpecialWeapons : CMP #$04 : BEQ .special_cane
|
||||||
|
BRA .normal
|
||||||
|
.blue_cane
|
||||||
|
PHA
|
||||||
|
LDA SpecialWeapons : CMP #$01 : BEQ .cane_immune
|
||||||
|
LDA SpecialWeapons : CMP #$03 : BEQ .special_cane
|
||||||
|
LDA SpecialWeapons : CMP #$04 : BEQ .cane_immune
|
||||||
|
BRA .normal
|
||||||
|
.cane_immune
|
||||||
LDA $0E20, X : CMP.b #$1E : BEQ .normal ; crystal switch
|
LDA $0E20, X : CMP.b #$1E : BEQ .normal ; crystal switch
|
||||||
PLA
|
PLA
|
||||||
|
BRA .impervious
|
||||||
|
.special_cane
|
||||||
|
LDA !WEAPON_LEVEL
|
||||||
|
LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
||||||
|
CMP.b #$D7 : BEQ .stunned_ganon
|
||||||
|
CMP.b #$88 : BEQ .mothula
|
||||||
|
PLA
|
||||||
|
BRA .special_level
|
||||||
.impervious
|
.impervious
|
||||||
LDA #$FF
|
LDA #$FF
|
||||||
RTL
|
RTL
|
||||||
@@ -35,35 +53,35 @@ DamageClassCalc:
|
|||||||
.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 : CMP #$01 : BNE .normal_bombs
|
||||||
LDA !BOMB_LEVEL : BEQ .normal_bombs
|
LDA !WEAPON_LEVEL : 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
|
||||||
CMP.b #$88 : BEQ .mothula
|
CMP.b #$88 : BEQ .mothula
|
||||||
CMP.b #$91 : BEQ .stalfos_knight
|
CMP.b #$91 : BEQ .stalfos_knight
|
||||||
CMP.b #$92 : BEQ .helmasaur_king
|
CMP.b #$92 : BEQ .helmasaur_king
|
||||||
.bomb_level
|
.special_level
|
||||||
LDA !BOMB_LEVEL
|
LDA !WEAPON_LEVEL
|
||||||
BRA .done
|
BRA .done
|
||||||
.mothula
|
.mothula
|
||||||
LDA !BOMB_LEVEL
|
LDA !WEAPON_LEVEL
|
||||||
CMP #$04 : !BGE .fix_mothula
|
CMP #$04 : !BGE .fix_mothula
|
||||||
BRA .done
|
BRA .done
|
||||||
.fix_mothula
|
.fix_mothula
|
||||||
LDA #$03
|
LDA #$03
|
||||||
BRA .done
|
BRA .done
|
||||||
.stalfos_knight
|
.stalfos_knight
|
||||||
LDA !StalfosBombDamage : BEQ .bomb_level
|
LDA !StalfosBombDamage : BEQ .special_level
|
||||||
LDA #$08
|
LDA #$08
|
||||||
BRA .done
|
BRA .done
|
||||||
.helmasaur_king
|
.helmasaur_king
|
||||||
LDA $0DB0, X : CMP #$03 : !BGE .bomb_level
|
LDA $0DB0, X : CMP #$03 : !BGE .special_level
|
||||||
LDA #$08
|
LDA #$08
|
||||||
BRA .done
|
BRA .done
|
||||||
.unstunned_ganon
|
.unstunned_ganon
|
||||||
LDA $04C5 : CMP.b #$02 : BNE .impervious
|
LDA $04C5 : CMP.b #$02 : BNE .impervious
|
||||||
LDA $0EE0, X : BNE .impervious
|
LDA $0EE0, X : BNE .impervious
|
||||||
LDA #$34 : STA $0EE0, X ; give the poor pig some iframes
|
LDA #$34 : STA $0EE0, X ; give the poor pig some iframes
|
||||||
BRA .bomb_level
|
BRA .special_level
|
||||||
.stunned_ganon
|
.stunned_ganon
|
||||||
LDA $0EE0, X : BNE .impervious
|
LDA $0EE0, X : BNE .impervious
|
||||||
LDA #$34 : STA $0EE0, X ; give the poor pig some iframes
|
LDA #$34 : STA $0EE0, X ; give the poor pig some iframes
|
||||||
@@ -109,17 +127,35 @@ Utility_CheckAncillaOverlapWithSprite:
|
|||||||
CLC
|
CLC
|
||||||
RTL
|
RTL
|
||||||
.giant_moldorm
|
.giant_moldorm
|
||||||
LDA $0C4A, X : CMP #$07 : BNE .ignore_collision ; don't collide with non-bombs
|
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE .ignore_collision
|
|
||||||
LDA $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
LDA $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
||||||
|
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
||||||
|
LDA $0C4A, X : CMP #$07 : BEQ .check_collision_moldorm
|
||||||
|
BRA .ignore_collision ; don't collide with non-bombs
|
||||||
|
++ : LDA.l SpecialWeapons : CMP #$03 : BNE ++
|
||||||
|
LDA $0C4A, X : CMP #$31 : BEQ .check_collision_moldorm
|
||||||
|
BRA .ignore_collision ; don't collide with non-byrna
|
||||||
|
++ : LDA.l SpecialWeapons : CMP #$04 : BNE .ignore_collision
|
||||||
|
LDA $0C4A, X : CMP #$01 : BEQ .check_collision_moldorm
|
||||||
|
LDA $0C4A, X : CMP #$2C : BEQ .check_collision_moldorm
|
||||||
|
BRA .ignore_collision ; don't collide with non-somaria
|
||||||
|
|
||||||
|
.check_collision_moldorm
|
||||||
JSR SetUpMoldormHitbox
|
JSR SetUpMoldormHitbox
|
||||||
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
||||||
RTL
|
RTL
|
||||||
.trinexx
|
.trinexx
|
||||||
LDA $0C4A, X : CMP #$07 : BNE .ignore_collision ; don't collide with non-bombs
|
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE .ignore_collision
|
LDA $0C4A, X : CMP #$07 : BEQ .check_collision_trinexx
|
||||||
|
BRA .ignore_collision ; don't collide with non-bombs
|
||||||
|
++ : LDA.l SpecialWeapons : CMP #$03 : BNE ++
|
||||||
|
LDA $0C4A, X : CMP #$31 : BEQ .check_collision_trinexx
|
||||||
|
BRA .ignore_collision ; don't collide with non-byrna
|
||||||
|
++ : LDA.l SpecialWeapons : CMP #$04 : BNE .ignore_collision
|
||||||
|
LDA $0C4A, X : CMP #$01 : BEQ .check_collision_trinexx
|
||||||
|
LDA $0C4A, X : CMP #$2C : BEQ .check_collision_trinexx
|
||||||
|
JMP .ignore_collision ; don't collide with non-somaria
|
||||||
|
|
||||||
|
.check_collision_trinexx
|
||||||
JSR SetUpTrinexxHitbox
|
JSR SetUpTrinexxHitbox
|
||||||
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
||||||
RTL
|
RTL
|
||||||
@@ -193,8 +229,17 @@ SetUpMoldormHitbox:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; start with X = ancilla index, Y = sprite index
|
; start with X = ancilla index, Y = sprite index
|
||||||
Utility_CheckHelmasaurKingCollision:
|
Utility_CheckHelmasaurKingCollision:
|
||||||
LDA $0C4A, X : CMP #$07 : BNE .normal ; normal behavior with non-bombs
|
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE .normal
|
LDA $0C4A, X : CMP #$07 : BEQ .collide
|
||||||
|
BRA .normal ; normal behavior with non-bombs
|
||||||
|
++ : LDA.l SpecialWeapons : CMP #$03 : BNE ++
|
||||||
|
LDA $0C4A, X : CMP #$31 : BEQ .collide
|
||||||
|
BRA .normal ; normal behavior with non-byrna
|
||||||
|
++ : LDA.l SpecialWeapons : CMP #$04 : BNE .normal
|
||||||
|
LDA $0C4A, X : CMP #$01 : BEQ .collide
|
||||||
|
LDA $0C4A, X : CMP #$2C : BEQ .collide
|
||||||
|
BRA .normal ; normal behavior with non-somaria
|
||||||
|
.collide
|
||||||
CLC
|
CLC
|
||||||
RTL
|
RTL
|
||||||
.normal
|
.normal
|
||||||
@@ -211,34 +256,42 @@ Utility_CheckHammerHelmasaurKingMask:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Utility_CheckImpervious:
|
Utility_CheckImpervious:
|
||||||
LDA $0E20, X : CMP.b #$CB : BEQ .trinexx
|
LDA $0E20, X : CMP.b #$CB : BNE .normal
|
||||||
|
.trinexx
|
||||||
|
LDA SpecialWeapons : CMP #$01 : BEQ + : CMP #$03 : BEQ + : CMP #$04 : BEQ +
|
||||||
|
BRA .normal
|
||||||
|
+
|
||||||
|
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||||
|
BRA .not_impervious
|
||||||
.normal
|
.normal
|
||||||
LDA $0E60, X : AND.b #$40 : BNE .impervious
|
LDA $0E60, X : AND.b #$40 : BNE .impervious
|
||||||
LDA $0CF2 : CMP #$FF : BEQ .impervious ; special "always-impervious" class
|
LDA $0CF2 : CMP #$FF : BEQ .impervious ; special "always-impervious" class
|
||||||
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.l SpecialWeapons : CMP #$01 : BNE .not_impervious
|
LDA SpecialWeapons : CMP #$01 : BEQ + : CMP #$03 : BEQ + : CMP #$04 : 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
|
||||||
.trinexx
|
|
||||||
LDA SpecialWeapons : CMP #$01 : BNE .normal
|
|
||||||
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
|
||||||
BRA .not_impervious
|
|
||||||
.sidenexx
|
|
||||||
LDA $0CAA, X : AND.b #$04 : BEQ .vulnerable
|
|
||||||
LDA SpecialWeapons : CMP #$01 : BNE .not_impervious
|
|
||||||
LDA $0CF2 : CMP #$06 : !BLT .impervious ; swords are ineffective
|
|
||||||
BRA .not_impervious
|
|
||||||
.vulnerable
|
|
||||||
LDA SpecialWeapons : CMP #$01 : BNE .not_impervious
|
|
||||||
LDA $0CF2 : CMP #$06 : !BGE .impervious ; non-swords are ineffective
|
|
||||||
BRA .not_impervious
|
|
||||||
.not_impervious
|
.not_impervious
|
||||||
LDA #$00 : RTL
|
LDA #$00 : RTL
|
||||||
.impervious
|
.impervious
|
||||||
LDA #$01 : RTL
|
LDA #$01 : RTL
|
||||||
|
.sidenexx
|
||||||
|
LDA $0CAA, X : AND.b #$04 : BEQ .vulnerable
|
||||||
|
LDA SpecialWeapons : CMP #$01 : BEQ + : CMP #$03 : BEQ + : CMP #$04 : BEQ +
|
||||||
|
BRA .not_impervious
|
||||||
|
+
|
||||||
|
LDA $0CF2 : CMP #$06 : !BLT .impervious ; swords are ineffective
|
||||||
|
BRA .not_impervious
|
||||||
|
.vulnerable
|
||||||
|
LDA SpecialWeapons : CMP #$01 : BEQ + : CMP #$03 : BEQ + : CMP #$04 : BEQ +
|
||||||
|
BRA .not_impervious
|
||||||
|
+
|
||||||
|
LDA $0CF2 : CMP #$06 : !BGE .impervious ; non-swords are ineffective
|
||||||
|
BRA .not_impervious
|
||||||
; returns nonzero A if impervious
|
; returns nonzero A if impervious
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!SPRITE_INITIALIZED_SEGMENTED = "$1DD6D1"
|
!SPRITE_INITIALIZED_SEGMENTED = "$1DD6D1"
|
||||||
@@ -246,6 +299,8 @@ Utility_CheckImpervious:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AllowBombingMoldorm:
|
AllowBombingMoldorm:
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ .no_disable_projectiles
|
LDA SpecialWeapons : CMP #$01 : BEQ .no_disable_projectiles
|
||||||
|
LDA SpecialWeapons : CMP #$03 : BEQ .no_disable_projectiles
|
||||||
|
LDA SpecialWeapons : CMP #$04 : BEQ .no_disable_projectiles
|
||||||
INC $0BA0, X
|
INC $0BA0, X
|
||||||
.no_disable_projectiles
|
.no_disable_projectiles
|
||||||
JSL !SPRITE_INITIALIZED_SEGMENTED
|
JSL !SPRITE_INITIALIZED_SEGMENTED
|
||||||
@@ -256,6 +311,8 @@ AllowBombingBarrier:
|
|||||||
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 SpecialWeapons : CMP #$01 : BEQ .no_disable_projectiles
|
||||||
|
LDA SpecialWeapons : CMP #$03 : BEQ .no_disable_projectiles
|
||||||
|
LDA SpecialWeapons : CMP #$04 : BEQ .no_disable_projectiles
|
||||||
.disable_projectiles
|
.disable_projectiles
|
||||||
INC $0BA0, X
|
INC $0BA0, X
|
||||||
.no_disable_projectiles
|
.no_disable_projectiles
|
||||||
@@ -264,7 +321,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 #$00FF : CMP.w #$0001 : BNE .vanillaBombs
|
||||||
LDA.l !BOMB_LEVEL : AND.w #$00FF : BEQ .noBombs : STA $02
|
LDA.l !WEAPON_LEVEL : AND.w #$00FF : BEQ .noBombs : STA $02
|
||||||
LDA.w #$FC81 : STA $04
|
LDA.w #$FC81 : STA $04
|
||||||
BRA .done
|
BRA .done
|
||||||
.vanillaBombs
|
.vanillaBombs
|
||||||
@@ -278,7 +335,9 @@ DrawBombInMenu:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawSwordInMenu:
|
DrawSwordInMenu:
|
||||||
LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BEQ .bombSword
|
LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BEQ .specialSword
|
||||||
|
LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0003 : BEQ .specialSword
|
||||||
|
LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0004 : BEQ .specialSword
|
||||||
LDA $7EF359 : AND.w #$00FF : CMP.w #$00FF : BEQ .noSword
|
LDA $7EF359 : AND.w #$00FF : CMP.w #$00FF : BEQ .noSword
|
||||||
.hasSword
|
.hasSword
|
||||||
STA $02
|
STA $02
|
||||||
@@ -288,15 +347,15 @@ DrawSwordInMenu:
|
|||||||
LDA.w #$0000 : STA $02
|
LDA.w #$0000 : STA $02
|
||||||
LDA.w #$F859 : STA $04
|
LDA.w #$F859 : STA $04
|
||||||
RTL
|
RTL
|
||||||
.bombSword
|
.specialSword
|
||||||
LDA !BOMB_LEVEL : AND.w #$00FF : STA $02
|
LDA !WEAPON_LEVEL : AND.w #$00FF : STA $02
|
||||||
LDA.w #$FC51 : STA $04
|
LDA.w #$FC51 : STA $04
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
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 #$00FF : CMP.w #$0001 : BNE .vanilla
|
||||||
LDA !BOMB_LEVEL : AND.w #$00FF : CLC : ADC.w #$00BD : BRA .done
|
LDA !WEAPON_LEVEL : AND.w #$00FF : CLC : ADC.w #$00BD : BRA .done
|
||||||
.vanilla
|
.vanilla
|
||||||
LDA.w #$0001
|
LDA.w #$0001
|
||||||
.done
|
.done
|
||||||
@@ -313,7 +372,7 @@ DrawBombOnHud:
|
|||||||
PLB
|
PLB
|
||||||
|
|
||||||
LDA.l SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .regularBombs
|
LDA.l SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .regularBombs
|
||||||
LDA.l !BOMB_LEVEL : AND.w #$00FF : ASL #2 : TAX
|
LDA.l !WEAPON_LEVEL : 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
|
||||||
.regularBombs
|
.regularBombs
|
||||||
@@ -322,13 +381,17 @@ 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
|
||||||
PHX
|
PHX
|
||||||
LDA.l !BOMB_LEVEL
|
LDA.l !WEAPON_LEVEL
|
||||||
TAX
|
TAX
|
||||||
LDA.l BombSpriteColor, X
|
LDA.l BombSpriteColor, X
|
||||||
STA $0B
|
STA $0B
|
||||||
PLX
|
PLX
|
||||||
RTL
|
RTL
|
||||||
|
.normal
|
||||||
|
LDA #$04 : STA $0B
|
||||||
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
StoreSwordDamage:
|
StoreSwordDamage:
|
||||||
LDA.l SpecialWeapons : CMP #$02 : BEQ +
|
LDA.l SpecialWeapons : CMP #$02 : BEQ +
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ LookupDamageLevel:
|
|||||||
+
|
+
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ .bomb_table
|
LDA SpecialWeapons : CMP #$01 : BEQ .bomb_table
|
||||||
CMP #$02 : BEQ .pseudo_table
|
CMP #$02 : BEQ .pseudo_table
|
||||||
|
CMP #$03 : BEQ .bomb_table
|
||||||
|
CMP #$04 : 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
|
||||||
@@ -128,10 +130,14 @@ CheckTabletSword:
|
|||||||
LDA $7EF34B : BEQ + ; check for hammer
|
LDA $7EF34B : BEQ + ; check for hammer
|
||||||
LDA.b #$02 : RTL
|
LDA.b #$02 : RTL
|
||||||
+
|
+
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE +
|
LDA.l SpecialWeapons : CMP #$01 : BEQ .check_special
|
||||||
LDA !BOMB_LEVEL : CMP #$02 : !BLT + ; check for master bombs
|
LDA.l SpecialWeapons : CMP #$03 : BEQ .check_special
|
||||||
|
LDA.l SpecialWeapons : CMP #$04 : BEQ .check_special
|
||||||
|
BRA .normal
|
||||||
|
.check_special
|
||||||
|
LDA !WEAPON_LEVEL : CMP #$02 : !BLT + ; check for master bombs
|
||||||
LDA.b #$02 : RTL
|
LDA.b #$02 : RTL
|
||||||
+
|
.normal
|
||||||
LDA $7EF359 ; get actual sword value
|
LDA $7EF359 ; get actual sword value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
@@ -1425,6 +1425,11 @@ db $04
|
|||||||
;B4 - L-4 Bombs
|
;B4 - L-4 Bombs
|
||||||
;B5 - L-5 Bombs
|
;B5 - L-5 Bombs
|
||||||
;B6 - Progressive Bombs
|
;B6 - Progressive Bombs
|
||||||
|
;B7 - L-1 Cane
|
||||||
|
;B8 - L-2 Cane
|
||||||
|
;B9 - L-3 Cane
|
||||||
|
;BA - L-4 Cane
|
||||||
|
;BB - L-5 Cane
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;;Residual Portal
|
;;Residual Portal
|
||||||
;org $0283E0 ; PC 0x103E0 (Bank02.asm:816) (BNE)
|
;org $0283E0 ; PC 0x103E0 (Bank02.asm:816) (BNE)
|
||||||
|
|||||||
@@ -149,7 +149,8 @@ RTL
|
|||||||
db $49 ; reserved for bee traps
|
db $49 ; reserved for bee traps
|
||||||
db $13, $13, $13, $13, $13, $13 ; Bomb Upgrades
|
db $13, $13, $13, $13, $13, $13 ; Bomb Upgrades
|
||||||
|
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $07, $07, $07, $07, $07, $07 ; Cane Upgrades
|
||||||
|
db $49, $49, $49 ; Unused
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
||||||
@@ -233,7 +234,7 @@ RTL
|
|||||||
+ ; Any Bow
|
+ ; Any Bow
|
||||||
LDA.b #$02 : RTL
|
LDA.b #$02 : RTL
|
||||||
++ : CMP.b #$F7 : BNE ++ ; Progressive Bombs
|
++ : CMP.b #$F7 : BNE ++ ; Progressive Bombs
|
||||||
LDA !BOMB_LEVEL
|
LDA !WEAPON_LEVEL
|
||||||
CMP.b #$00 : BNE + ; No Bombs
|
CMP.b #$00 : BNE + ; No Bombs
|
||||||
LDA.b #$08 : RTL
|
LDA.b #$08 : RTL
|
||||||
+ : CMP.b #$01 : BNE + ; L1 Bombs
|
+ : CMP.b #$01 : BNE + ; L1 Bombs
|
||||||
@@ -289,7 +290,8 @@ RTL
|
|||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Small Key
|
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Small Key
|
||||||
db $08 ; reserved for bee traps
|
db $08 ; reserved for bee traps
|
||||||
db $08, $04, $02, $0A, $0A, $F7 ; Bomb Upgrades
|
db $08, $04, $02, $0A, $0A, $F7 ; Bomb Upgrades
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
db $0A, $0A, $0A, $0A, $0A, $0A ; Cane Upgrades
|
||||||
|
db $08, $08, $08 ; Unused
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
||||||
@@ -345,12 +347,12 @@ IsNarrowSprite:
|
|||||||
++ CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
++ CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
||||||
JSL.l GetRNGItemMulti
|
JSL.l GetRNGItemMulti
|
||||||
++ CMP.b #$64 : BEQ + ; Progressive Bow
|
++ CMP.b #$64 : BEQ + ; Progressive Bow
|
||||||
CMP.b #$65 : BNE .continue ; Progressive Bow (alt)
|
CMP.b #$65 : BNE .continue ; Progressive Bow (alt)
|
||||||
+ : LDA $7EF340 : INC : LSR
|
+ : LDA $7EF340 : INC : LSR
|
||||||
CMP.l ProgressiveBowLimit : !BLT +
|
CMP.l ProgressiveBowLimit : !BLT +
|
||||||
LDA.l ProgressiveBowReplacement
|
LDA.l ProgressiveBowReplacement
|
||||||
JSL.l IsNarrowSprite
|
JSL.l IsNarrowSprite
|
||||||
JMP .done
|
JMP .done
|
||||||
.continue
|
.continue
|
||||||
;--------
|
;--------
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ EndRainState:
|
|||||||
CMP #$10 : BNE + : STA !INFINITE_ARROWS : +
|
CMP #$10 : BNE + : STA !INFINITE_ARROWS : +
|
||||||
|
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE +
|
LDA.l SpecialWeapons : CMP #$01 : BNE +
|
||||||
LDA.l !BOMB_LEVEL : BEQ +
|
LDA.l !WEAPON_LEVEL : BEQ +
|
||||||
LDA #$01 : STA !INFINITE_BOMBS
|
LDA #$01 : STA !INFINITE_BOMBS
|
||||||
+
|
+
|
||||||
LDA.b #$02 : STA $7EF3C5 ; end rain state
|
LDA.b #$02 : STA $7EF3C5 ; end rain state
|
||||||
|
|||||||
Reference in New Issue
Block a user