From 1b698808c3bfa88df28af9a7ae38ee563fea0b58 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 11 Jul 2021 12:52:20 -0700 Subject: [PATCH] Add L-1 bombs as separate from no bombs in bomb-only mode --- darkworldspawn.asm | 5 ++++ hooks.asm | 1 + newitems.asm | 62 ++++++++++++++++++++++++++-------------------- special_bombs.asm | 5 ++-- swordswap.asm | 2 +- tables.asm | 11 ++++---- utilities.asm | 8 +++--- zelda.asm | 9 +++++-- 8 files changed, 62 insertions(+), 41 deletions(-) diff --git a/darkworldspawn.asm b/darkworldspawn.asm index e47d5b8..a10f298 100644 --- a/darkworldspawn.asm +++ b/darkworldspawn.asm @@ -145,6 +145,11 @@ SetEscapeAssist: BIT.b #$20 : BEQ + : STA !INFINITE_BOMBS : + BIT.b #$10 : BEQ + : STA !INFINITE_ARROWS : + ++ + + LDA.l SpecialBombs : BEQ + + LDA.l $7EF4A8 : BEQ + + LDA #$01 : STA !INFINITE_BOMBS + + RTL ;-------------------------------------------------------------------------------- SetSilverBowMode: diff --git a/hooks.asm b/hooks.asm index 85852d0..29aaba8 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2756,6 +2756,7 @@ JSL DrawSwordInMenu BRA + : NOP #16 : + ;-------------------------------------------------------------------------------- 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 db $B2, $2C, $B3, $2C, $C2, $2C, $18, $2C db $B2, $24, $B3, $24, $C2, $24, $19, $24 diff --git a/newitems.asm b/newitems.asm index 415f37a..32a27a6 100755 --- a/newitems.asm +++ b/newitems.asm @@ -40,11 +40,12 @@ ; #$90 - Big Keys ; #$A0 - Small Keys ; #$B0 - reserved for bee traps -; #$B1 - L-2 Bombs -; #$B2 - L-3 Bombs -; #$B3 - L-4 Bombs -; #$B4 - L-5 Bombs -; #$B5 - Progressive Bombs +; #$B1 - L-1 Bombs +; #$B2 - L-2 Bombs +; #$B3 - L-3 Bombs +; #$B4 - L-4 Bombs +; #$B5 - L-5 Bombs +; #$B6 - Progressive Bombs ; #$FE - Server Request (Asychronous Chest) ; #$FF - Null Chest ;-------------------------------------------------------------------------------- @@ -400,6 +401,11 @@ AddReceivedItemExpandedGetItem: LDA $7EF36F : INC : STA $7EF36F ++ JMP .done + + CMP.b #$B1 : !BLT + : CMP.b #$B6 : !BGE + ; Bomb Upgrades + LDA.l SpecialBombs : BEQ ++ + LDA #$01 : STA $7F50C9 ; infinite bombs + ++ + BRA .done + .done PLX @@ -508,7 +514,7 @@ AddReceivedItemExpanded: LDA $7EF340 : INC : LSR : CMP.l ProgressiveBowLimit : !BLT + LDA.l ProgressiveBowReplacement : STA $02D8 : JMP .done + : CMP.b #$00 : BNE + ; No Bow - LDA.b #$3A : STA $02D8 : BRA .done + LDA.b #$3A : STA $02D8 : JMP .done + ; Any Bow LDA.b #$3B : STA $02D8 : BRA .done ++ : CMP.b #$65 : BNE ++ ; Progressive Bow 2 @@ -526,16 +532,18 @@ AddReceivedItemExpanded: JSL.l GetRNGItemMulti : STA $02D8 LDA #$FF : STA !LOCK_IN ; clear lock-in BRA .done - ++ : CMP.b #$B5 : BNE ++ ; Progressive Bombs + ++ : CMP.b #$B6 : BNE ++ ; Progressive Bombs LDA $7EF4A8 - CMP.b #$00 : BNE + ; L-1 Bombs + CMP.b #$00 : BNE + ; have no Bombs LDA.b #$B1 : STA $02D8 : JMP .done - + : CMP.b #$01 : BNE + ; L-2 Bombs + + : CMP.b #$01 : BNE + ; have L-1 Bombs LDA.b #$B2 : STA $02D8 : JMP .done - + : CMP.b #$02 : BNE + ; L-3 Bombs + + : CMP.b #$02 : BNE + ; have L-2 Bombs LDA.b #$B3 : STA $02D8 : JMP .done - + ; Everything Else + + : CMP.b #$03 : BNE + ; have L-3 Bombs LDA.b #$B4 : STA $02D8 : JMP .done + + ; Everything Else + LDA.b #$B5 : STA $02D8 : JMP .done ++ .done PLX : PLA @@ -585,8 +593,8 @@ 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 -4, -4, -4, -4, -4 ; Bomb Upgrades - db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused + 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, -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 @@ -627,8 +635,8 @@ org $A08800 ;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 0 ; reserved for bee traps - db 0, 0, 0, 0, 0 ; Bomb Upgrades - db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused + db 0, 0, 0, 0, 0, 0; Bomb Upgrades + db 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 @@ -673,8 +681,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 $13, $13, $13, $13, $13 ; Bomb Upgrades - db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused + db $13, $13, $13, $13, $13, $13 ; Bomb Upgrades + db $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 @@ -714,8 +722,8 @@ org $A08800 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 $02 ; reserved for bee traps - db $02, $02, $02, $02, $02 ; Bomb Upgrades - db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused + db $02, $02, $02, $02, $02, $02; Bomb Upgrades + db $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 @@ -756,8 +764,8 @@ 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 ; Bomb Upgrades - db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused + db 5, 5, 5, 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 db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused @@ -799,8 +807,8 @@ org $A08800 dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Big 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 $F4A8, $F4A8, $F4A8, $F4A8, $F4A8 ; Bomb Upgrades - dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused + dw $F4A8, $F4A8, $F4A8, $F4A8, $F4A8, $F4A8 ; Bomb Upgrades + dw $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 @@ -844,8 +852,8 @@ org $A08800 db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Big 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 $01, $02, $03, $04, $FF ; Bomb Upgrades - db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused + db $01, $02, $03, $04, $05, $FF ; Bomb Upgrades + db $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 @@ -932,8 +940,8 @@ Link_ReceiveItemAlternatesExpanded: db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Big 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, -1, -1, -1, -1 ; Bomb Upgrades - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused + 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, -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 diff --git a/special_bombs.asm b/special_bombs.asm index efd7460..544bc78 100644 --- a/special_bombs.asm +++ b/special_bombs.asm @@ -29,15 +29,16 @@ DamageClassCalc: .not_cane CMP #$07 : BNE .no_change LDA SpecialBombs : BEQ .normal_bombs + LDA !BOMB_LEVEL : BEQ .normal_bombs LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon CMP.b #$D7 : BEQ .stunned_ganon CMP.b #$88 : BEQ .mothula CMP.b #$92 : BEQ .helmasaur_king .bomb_level - LDA !BOMB_LEVEL : INC A + LDA !BOMB_LEVEL BRA .done .mothula - LDA !BOMB_LEVEL : INC A + LDA !BOMB_LEVEL CMP #$04 : !BGE .fix_mothula BRA .done .fix_mothula diff --git a/swordswap.asm b/swordswap.asm index 94a2941..75593c6 100644 --- a/swordswap.asm +++ b/swordswap.asm @@ -135,7 +135,7 @@ CheckTabletSword: LDA.b #$02 : RTL + LDA.l SpecialBombs : BEQ + - LDA $7EF4A8 : CMP #$01 : !BLT + ; check for master bombs + LDA $7EF4A8 : CMP #$02 : !BLT + ; check for master bombs LDA.b #$02 : RTL + LDA $7EF359 ; get actual sword value diff --git a/tables.asm b/tables.asm index d117e9d..39a9149 100644 --- a/tables.asm +++ b/tables.asm @@ -1412,11 +1412,12 @@ db $04 ;AF - Generic Small Key ;B0 - reserved for bee traps -;B1 - L-2 Bombs -;B2 - L-3 Bombs -;B3 - L-4 Bombs -;B4 - L-5 Bombs -;B5 - Progressive Bombs +;B1 - L-1 Bombs +;B2 - L-2 Bombs +;B3 - L-3 Bombs +;B4 - L-4 Bombs +;B5 - L-5 Bombs +;B6 - Progressive Bombs ;================================================================================ ;;Residual Portal ;org $0283E0 ; PC 0x103E0 (Bank02.asm:816) (BNE) diff --git a/utilities.asm b/utilities.asm index 8729075..383310a 100644 --- a/utilities.asm +++ b/utilities.asm @@ -152,9 +152,9 @@ RTL ;Bx db $49 ; reserved for bee traps - db $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, $49 ; Unused + db $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 @@ -288,8 +288,8 @@ 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; Bomb Upgrades - db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused + db $0A, $0A, $0A, $0A, $0A, $0A ; 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 db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused diff --git a/zelda.asm b/zelda.asm index e0ba4ec..33a7733 100644 --- a/zelda.asm +++ b/zelda.asm @@ -9,7 +9,7 @@ SpawnZelda: + RTL ;-------------------------------------------------------------------------------- EndRainState: - LDA $7EF3C5 : CMP.b #$02 : !BGE + ; skip if past escape already + LDA $7EF3C5 : CMP.b #$02 : !BGE ++ ; skip if past escape already LDA.l EscapeAssist : AND #$44 CMP #$04 : BNE + : LDA #$00 : STA !INFINITE_MAGIC : + CMP #$40 : BNE + : STA !INFINITE_MAGIC : + @@ -19,8 +19,13 @@ EndRainState: LDA.l EscapeAssist : AND #$11 CMP #$01 : BNE + : LDA #$00 : STA !INFINITE_ARROWS : + CMP #$10 : BNE + : STA !INFINITE_ARROWS : + + + LDA.l SpecialBombs : BEQ + + LDA.l $7EF4A8 : BEQ + + LDA #$01 : STA !INFINITE_BOMBS + + LDA.b #$02 : STA $7EF3C5 ; end rain state JSL MaybeSetPostAgaWorldState - + + ++ RTL ;--------------------------------------------------------------------------------