From ae0a5c685a369ad3bb05d4b8a403caa77d8c3241 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 7 Nov 2021 00:28:28 -0700 Subject: [PATCH] Unify handling of bomb colors in bomb-only mode --- hooks.asm | 14 +++++++++++--- newitems.asm | 2 +- special_weapons.asm | 36 ++++++++++++++++++++++++++++++++++++ utilities.asm | 14 ++++++++++++-- 4 files changed, 60 insertions(+), 6 deletions(-) diff --git a/hooks.asm b/hooks.asm index 35a9c64..81cd15e 100755 --- a/hooks.asm +++ b/hooks.asm @@ -360,9 +360,6 @@ JSL.l LoadBombCount org $098133 ; <- 48133 - ancilla_init.asm : 211 (STA $7EF343 : BNE .bombs_left_over) JSL.l StoreBombCount ;-------------------------------------------------------------------------------- -org $0DE4BF ; <- 6E4BF - equipment.asm : 1249 (LDA $7EF343 : AND.w #$00FF : BEQ .gotNoBombs) -JSL.l LoadBombCount16 -;-------------------------------------------------------------------------------- org $0DDEB3 ; <- 6DEB3 - equipment.asm : 328 (LDA $7EF33F, X) JSL.l IsItemAvailable ;-------------------------------------------------------------------------------- @@ -2761,6 +2758,14 @@ org $06892F ; sprite_prep.asm@548 (LDA $0D00, X : SUB #$0C : STA $0D00, X : ...) JSL AllowBombingBarrier RTS : NOP #7 ;-------------------------------------------------------------------------------- +org $0DE4BF ; equipment.asm@1247 (LDA $7EF343 : AND.w #$00FF : BEQ .gotNoBombs : ...) +JSL DrawBombInMenu +BRA + : NOP #13 : + +;-------------------------------------------------------------------------------- +org $0DFB6A ; headsup_display@727 (CPX #$0004 : BNE .bombsNotEquipped : LDA #$0001) +JSL DrawBombInYBox +BRA + : NOP #2 : + +;-------------------------------------------------------------------------------- org $0DEE05 ; equipment.asm@2065 (LDA $7EF359 : AND.w #$00FF : CMP.w #$00FF : ...) JSL DrawSwordInMenu BRA + : NOP #16 : + @@ -2769,6 +2774,9 @@ org $0DFA92 ; headsup_display.asm@622 (PDB : LDA.w #$0149 : ...) JSL DrawBombOnHud BRA + : NOP #8 : + ;-------------------------------------------------------------------------------- +org $089EF8 ; ancilla_bomb@1438 (LDA.w #$04 : STA $0B) +JSL SetBombSpriteColor +;-------------------------------------------------------------------------------- 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 $B2, $3C, $B3, $3C, $C2, $3C, $17, $3C diff --git a/newitems.asm b/newitems.asm index 29deff9..edd661c 100755 --- a/newitems.asm +++ b/newitems.asm @@ -764,7 +764,7 @@ org $A08800 db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Big 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 5, 5, 5, 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 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 diff --git a/special_weapons.asm b/special_weapons.asm index 6a5c3fb..8f008b5 100644 --- a/special_weapons.asm +++ b/special_weapons.asm @@ -261,6 +261,22 @@ AllowBombingBarrier: .no_disable_projectiles RTL ;-------------------------------------------------------------------------------- +DrawBombInMenu: + JSL LoadBombCount16 : AND.w #$00FF : BEQ .noBombs + LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .vanillaBombs + LDA.l !BOMB_LEVEL : AND.w #$00FF : BEQ .noBombs : STA $02 + LDA.w #$FC51 : STA $04 + BRA .done +.vanillaBombs + LDA.w #$0001 : STA $02 + LDA.w #$F699 : STA $04 + BRA .done +.noBombs + LDA.w #$0000 : STA $02 + LDA.w #$F699 : STA $04 +.done + RTL +;-------------------------------------------------------------------------------- DrawSwordInMenu: LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BEQ .bombSword LDA $7EF359 : AND.w #$00FF : CMP.w #$00FF : BEQ .noSword @@ -277,6 +293,15 @@ DrawSwordInMenu: LDA.w #$FC51 : STA $04 RTL ;-------------------------------------------------------------------------------- +DrawBombInYBox: + CPX.w #$0004 : BNE .done + LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .vanilla + LDA !BOMB_LEVEL : AND.w #$00FF : CLC : ADC.w #$00B7 : BRA .done +.vanilla + LDA.w #$0001 +.done + RTL +;-------------------------------------------------------------------------------- BombIcon: dw $207F, $207F, $3C88, $3C89, $2C88, $2C89, $2488, $2489, $2888, $2889,$2888, $2889 DrawBombOnHud: @@ -294,6 +319,17 @@ DrawBombOnHud: .regularBombs RTL ;-------------------------------------------------------------------------------- +BombSpriteColor: + db $04, $08, $04, $02, $0A, $0A +SetBombSpriteColor: + PHX + LDA.l !BOMB_LEVEL + TAX + LDA.l BombSpriteColor, X + STA $0B + PLX + RTL +;-------------------------------------------------------------------------------- StoreSwordDamage: LDA.l SpecialWeapons : CMP #$02 : BEQ + LDA.l $06ED39, X : RTL diff --git a/utilities.asm b/utilities.asm index f102f91..0544d7f 100644 --- a/utilities.asm +++ b/utilities.asm @@ -183,7 +183,7 @@ GetSpritePalette: ;-------- TAX : LDA.l .gfxPalettes, X ; look up item gfx PLB : PLX - CMP.b #$F7 : !BGE .specialHandling + CMP.b #$F6 : !BGE .specialHandling RTL .specialHandling CMP.b #$FD : BNE ++ ; Progressive Sword @@ -232,6 +232,16 @@ RTL LDA.b #$08 : RTL + ; Any Bow LDA.b #$02 : RTL + ++ : CMP.b #$F7 : BNE ++ ; Progressive Bombs + LDA !BOMB_LEVEL + CMP.b #$00 : BNE + ; No Bombs + LDA.b #$08 : RTL + + : CMP.b #$01 : BNE + ; L1 Bombs + LDA.b #$04 : RTL + + : CMP.b #$02 : BNE + ; L2 Bombs + LDA.b #$02 : RTL + + ; Everything Else + LDA.b #$0A : RTL ++ : CMP.b #$FA : BNE ++ ; RNG Item (Single) JSL.l GetRNGItemSingle : JMP GetSpritePalette ++ : CMP.b #$FB : BNE ++ ; RNG Item (Multi) @@ -278,7 +288,7 @@ RTL db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Big 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 $0A, $0A, $0A, $0A, $0A, $0A ; Bomb Upgrades + db $08, $04, $02, $0A, $0A, $F7 ; Bomb Upgrades db $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