Add cane-only modes

This commit is contained in:
2021-12-20 16:10:11 -08:00
parent e50641db11
commit e210c85710
12 changed files with 193 additions and 83 deletions

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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!

View File

@@ -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

View File

@@ -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 +

View File

@@ -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
;================================================================================ ;================================================================================

View File

@@ -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)

View File

@@ -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
;-------- ;--------

View File

@@ -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