diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index d1eb1bc..b33e6c5 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -26,7 +26,7 @@ org $3FFFFF ; <- 1FFFFF db #$00 ; expand file to 2mb org $1FFFF8 ; <- FFFF8 timestamp rom -db #$20, #$18, #$02, #$17 ; year/month/day +db #$20, #$18, #$02, #$22 ; year/month/day ;================================================================================ diff --git a/c2e3e.bin b/c2e3e.bin index 363b517..4805fd9 100644 Binary files a/c2e3e.bin and b/c2e3e.bin differ diff --git a/c2e3e.gfx b/c2e3e.gfx index cd0a010..f18b781 100644 Binary files a/c2e3e.gfx and b/c2e3e.gfx differ diff --git a/hooks.asm b/hooks.asm index d71de68..bda75f1 100644 --- a/hooks.asm +++ b/hooks.asm @@ -44,6 +44,29 @@ org $02E21B ; <- 1621B - Bank02.asm : 11211 (STA $040C) JSL.l OnDungeonExit : NOP #2 ;-------------------------------------------------------------------------------- +;================================================================================ +; Infinite Bombs / Arrows / Magic +;-------------------------------------------------------------------------------- +org $08A17A ; <- 4217A - ancilla_arrow.asm : 42 (AND.b #$04 : BEQ .dont_spawn_sparkle) +CMP.b #$03 : db #$90 ; !BLT +org $08A40E ; <- 4240E - ancilla_arrow.asm : 331 (AND.b #$04 : BNE .use_silver_palette) +CMP.b #$03 : db #$B0 ; !BGE +;-------------------------------------------------------------------------------- +org $098127 ; <- 48127 - ancilla_init.asm : 202 (LDA $7EF343 : BNE .player_has_bombs) +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 +;-------------------------------------------------------------------------------- +org $0DFC5B ; <- 6FC5B - headsup_display.asm : 839 (LDA .mp_tilemap+0, X : STA $7EC746) +JSL.l DrawMagicMeter : JMP.w + : NOP #21 : + +;-------------------------------------------------------------------------------- + ;================================================================================ ; Inverted Mode ;-------------------------------------------------------------------------------- @@ -978,10 +1001,10 @@ JSL.l OnDrawHud BRA $27 org $0DFCB8 ; <- 6FCB8 -STA $7EC75A ; nudge bomb 10s digit right +JSL.l DrawBombTens ; nudge bomb 10s digit right org $0DFCC4 ; <- 6FCC4 -STA $7EC75C ; nudge bomb 1s digit right +JSL.l DrawBombOnes ; nudge bomb 1s digit right org $0DFCDC ; <- 6FCDC JSL.l DrawArrowTens diff --git a/pendantcrystalhud.asm b/pendantcrystalhud.asm index df43a1b..894c7bb 100644 --- a/pendantcrystalhud.asm +++ b/pendantcrystalhud.asm @@ -241,8 +241,13 @@ RTL ;$388 = Turtle Rock ;$389 = Ganon's Tower ;-------------------------------------------------------------------------------- +!INFINITE_ARROWS = "$7F50C8" DrawArrowTens: PHA : LDA.l ArrowMode : AND.w #$00FF : BNE + + LDA !INFINITE_ARROWS : AND.w #$00FF : BEQ .finite + .infinite + PLA : LDA.w #$2431 : STA $7EC760 : RTL + .finite PLA : STA $7EC760 : RTL + PLA @@ -250,11 +255,39 @@ RTL ;-------------------------------------------------------------------------------- DrawArrowOnes: PHA : LDA.l ArrowMode : AND.w #$00FF : BNE + + LDA !INFINITE_ARROWS : AND.w #$00FF : BEQ .finite + .infinite + PLA : LDA.w #$2432 : STA $7EC762 : RTL + .finite PLA : STA $7EC762 : RTL + PLA RTL ;-------------------------------------------------------------------------------- +;-------------------------------------------------------------------------------- +!INFINITE_BOMBS = "$7F50C9" +DrawBombTens: + PHA ;;; LDA.l ArrowMode : AND.w #$00FF : BNE + + LDA !INFINITE_BOMBS : AND.w #$00FF : BEQ .finite + .infinite + PLA : LDA.w #$2431 : STA $7EC75A : RTL + .finite + PLA : STA $7EC75A : RTL + + + PLA +RTL +;-------------------------------------------------------------------------------- +DrawBombOnes: + PHA ;;; LDA.l ArrowMode : AND.w #$00FF : BNE + + LDA !INFINITE_BOMBS : AND.w #$00FF : BEQ .finite + .infinite + PLA : LDA.w #$2432 : STA $7EC75C : RTL + .finite + PLA : STA $7EC75C : RTL + + + PLA +RTL +;-------------------------------------------------------------------------------- DrawBootsInMenuLocation: LDA.l HUDDungeonItems : BNE + LDA.w #$1608 : STA $00 @@ -263,6 +296,46 @@ DrawBootsInMenuLocation: LDA.w #$1588 : STA $00 RTL ;-------------------------------------------------------------------------------- +!INFINITE_MAGIC = "$7F50CA" +!DrawMagicMeter_mp_tilemap = "$0DFE0F" +DrawMagicMeter: + LDA !INFINITE_MAGIC : BNE + : BRL .green : + + LDX.w #$0080 ; load full magic meter graphics + LDA $1A : AND.w #$000C : LSR #2 + BEQ .red + CMP.w #0001 : BEQ .yellow + CMP.w #0002 : BNE + : BRL .green : + + .blue + LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EFFF : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EFFF : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$EFFF : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$EFFF : STA $7EC806 + RTL + .red + LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$E7FF : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$E7FF : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$E7FF : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$E7FF : STA $7EC806 + RTL + .yellow + LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EBFF : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EBFF : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$EBFF : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$EBFF : STA $7EC806 + RTL + .orange + LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$E3FF : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$E3FF : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$E3FF : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$E3FF : STA $7EC806 + RTL + .green + LDA !DrawMagicMeter_mp_tilemap+0, X : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : STA $7EC806 +RTL +;-------------------------------------------------------------------------------- DrawGlovesInMenuLocation: LDA.l HUDDungeonItems : BNE + LDA.w #$1610 : STA $00 diff --git a/retro.asm b/retro.asm index 96ccb67..b54d9ef 100644 --- a/retro.asm +++ b/retro.asm @@ -1,5 +1,38 @@ +!INFINITE_BOMBS = "$7F50C9" +IsItemAvailable: + LDA !INFINITE_BOMBS : BEQ .finite + .infinite + CPX.b #$04 : BNE .finite + LDA.b #$01 : RTL + .finite + LDA $7EF33F, X +RTL +LoadBombCount: + LDA !INFINITE_BOMBS : BNE .infinite + .finite + LDA $7EF343 + .infinite +RTL +LoadBombCount16: + LDA !INFINITE_BOMBS : AND.w #$00FF : BNE .infinite + .finite + LDA $7EF343 + .infinite +RTL +StoreBombCount: + PHA : LDA !INFINITE_BOMBS : BEQ .finite + .infinite + PLA : LDA.b #$01 : RTL + .finite + PLA : STA $7EF343 +RTL + +!INFINITE_ARROWS = "$7F50C8" DecrementArrows: - LDA.l ArrowMode : BNE .rupees + LDA !INFINITE_ARROWS : BNE .infinite + LDA.l ArrowMode : BNE .rupees : BRA .normal + .infinite + LDA.b #$01 : RTL .normal LDA $7EF377 : BEQ .done DEC : STA $7EF377 : INC @@ -14,7 +47,7 @@ DecrementArrows: PHA : LDA $7EF340 : DEC : AND #$0002 : TAX : PLA !SUB.l ArrowModeWoodArrowCost, X ; CMP.w #$0000 BMI .not_enough_money - STA $7EF360 : INC : BRA + + STA $7EF360 : LDA.w #$0001 : BRA + .not_enough_money LDA.w #$0000 +