diff --git a/bugfixes.asm b/bugfixes.asm index 4a2dcba..ff550b2 100644 --- a/bugfixes.asm +++ b/bugfixes.asm @@ -127,10 +127,9 @@ RTL ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- -;Fix for PoD causing accidental Exploration Glitch -PodEGFix: +;Fix for SQ jumping causing accidental Exploration Glitch +SQEGFix: LDA Bugfix_PodEG : BNE .done - LDA $040C : CMP.b #$0C : BNE .done ;check if we are in PoD STZ $047A ;disarm exploration glitch .done RTL @@ -200,3 +199,18 @@ LDA $1B : BNE + LDA $8C : CMP.b #$97 + RTL + +;-------------------------------------------------------------------------------- +FixJingleGlitch: + LDA.b $11 + BEQ .set_doors + + LDA.l AllowAccidentalMajorGlitch + BEQ .exit + +.set_doors + LDA.b #$05 + STA.b $11 + +.exit + RTL diff --git a/darkworldspawn.asm b/darkworldspawn.asm index 693bab6..abd4f51 100644 --- a/darkworldspawn.asm +++ b/darkworldspawn.asm @@ -53,8 +53,9 @@ DoWorldFix_Inverted: .aga1Alive LDA #$40 : STA $7EF3CA ; set flag to dark world LDA $7EF3CC - CMP #$07 : BNE .done ; clear frog - CMP #$08 : BNE .done ; clear dwarf - consider flute implications + CMP #$07 : BEQ .clear ; clear frog + CMP #$08 : BEQ .clear ; clear dwarf - consider flute implications + BRA .done .clear LDA.b #$00 : STA $7EF3CC ; clear follower .done diff --git a/entrances.asm b/entrances.asm index 2b2f171..35db47e 100644 --- a/entrances.asm +++ b/entrances.asm @@ -24,11 +24,12 @@ LockAgahnimDoors: LDA $7EF2C3 : AND.w #$0020 : BNE .unlock ; Check if GT overlay is already on or not LDA $0308 : AND.w #$0080 : BEQ ++ ;If we are holding an item + + .locked LDA #$0001 : RTL ;Keep the door locked ++ SEP #$30 JSL $099B6F ;Add tower break seal - LDA $7EF2C3 : ORA #$20 : STA $7EF2C3 ; activate GT overlay REP #$30 LDA #$0001 ;Prevent door from opening that frame otherwise it glitchy RTL @@ -39,6 +40,17 @@ LockAgahnimDoors: LDA.w #$0000 ; fallback to never locked RTL +;--------------------------------------------------------------------------------- +FlagAgahnimDoor: + LDA.l InvertedMode : BEQ .vanilla + + LDA $7EF2C3 : ORA #$20 : STA $7EF2C3 ; activate GT overlay + +.vanilla + LDA.b #$28 : STA.b $72 + RTL + + ;-------------------------------------------------------------------------------- LockAgahnimDoorsCore: LDA $22 : CMP.w #1992 : !BLT + ; door too far left, skip diff --git a/events.asm b/events.asm index ccf297f..9751046 100644 --- a/events.asm +++ b/events.asm @@ -37,7 +37,7 @@ RTL OnDungeonExit: PHA : PHP SEP #$20 ; set 8-bit accumulator - JSL.l PodEGFix + JSL.l SQEGFix PLP : PLA STA $040C : STZ $04AC ; thing we wrote over @@ -50,8 +50,8 @@ OnDungeonExit: RTL ;-------------------------------------------------------------------------------- OnQuit: - JSL.l PodEGFix - + JSL.l SQEGFix + LDA.b #$00 : STA $7F5035 ; bandaid patch bug with mirroring away from text LDA.b #$10 : STA $1C ; thing we wrote over RTL ;-------------------------------------------------------------------------------- @@ -184,6 +184,7 @@ OnInitFileSelect: RTL ;-------------------------------------------------------------------------------- OnLinkDamaged: + JSL.l IncrementDamageTakenCounter_Arb JSL.l FlipperKill JML.l OHKOTimer diff --git a/hooks.asm b/hooks.asm index 414336c..356ddf3 100755 --- a/hooks.asm +++ b/hooks.asm @@ -1079,6 +1079,9 @@ JSL.l InitializeBottles ;================================================================================ ; Agahnim Doors Fix ;-------------------------------------------------------------------------------- +org $099BBA +JSL FlagAgahnimDoor + org $1BBC94 ; <- DBC94 - Bank1B.asm : 201 (LDA $7EF3C5 : AND.w #$000F : CMP.w #$0003 : BCS BRANCH_EPSILON) JSL.l LockAgahnimDoors : BNE Overworld_Entrance_BRANCH_EPSILON : NOP #6 @@ -1526,6 +1529,9 @@ org $1DBAB1 ; <- EBAB1 - sprite_sidenexx.asm : 314 (JSL GetRandomInt : AND.b #$0 JSL.l RNG_Trinexx org $1DBAC3 ; <- EBAC3 - sprite_sidenexx.asm : 323 (JSL GetRandomInt : AND.b #$0F : ADD.b #$0C : STA $02 : STZ $03) JSL.l RNG_Trinexx +;-------------------------------------------------------------------------------- +org $6F9B8 ; <- 379B8 - bank06.asm : 6693 (JSL GetRandomInt : PLY : AND $FA5C, Y : BNE BRANCH_MU) +JSL.l RNG_Enemy_Drops ;================================================================================ ; HUD Changes ;-------------------------------------------------------------------------------- @@ -2766,8 +2772,6 @@ JSL FastTextScroll : NOP org $01FFEE : JSL IncrementDamageTakenCounter_Eight ; overworld pit org $079506 : JSL IncrementDamageTakenCounter_Eight ; underworld pit -org $0780C6 : JSL IncrementDamageTakenCounter_Arb - org $07B0B1 : JSL IncrementMagicUseCounter ;================================================================================ @@ -2786,6 +2790,26 @@ org $0AEEF2 org $008BE5 ; hijack stripes for boss GFX transfer JSL DoDungeonMapBossIcon +;================================================================================ +; Fix quadrant glitch +org $07A879 + JSR SwordSpinQuadrantFix + +org $07F877 ; free rom +SwordSpinQuadrantFix: + LDA.l AllowAccidentalMajorGlitch + BEQ ++ + JMP.w $07E8D9 ; HandleIndoorCameraAndDoors + +++ RTS + +;================================================================================ + +org $01C4B8 : JSL FixJingleGlitch +org $01C536 : JSL FixJingleGlitch +org $01C592 : JSL FixJingleGlitch +org $01C65F : JSL FixJingleGlitch + ;================================================================================ ; Terrorpin AI fix ;-------------------------------------------------------------------------------- diff --git a/msu.asm b/msu.asm index 1ef1897..a6108e9 100644 --- a/msu.asm +++ b/msu.asm @@ -323,10 +323,8 @@ CheckMusicLoadRequest: .load REP #$10 STZ $4200 - STA !REG_SPC_CONTROL - - : CMP !REG_SPC_CONTROL : BNE - ; Wait until mute/unmute command is ACK'ed - STZ !REG_SPC_CONTROL - - : LDA !REG_SPC_CONTROL : BNE - ; Wait until mute/unmute command is completed + - : STA !REG_SPC_CONTROL : CMP !REG_SPC_CONTROL : BNE - ; Wait until mute/unmute command is ACK'ed + - : STZ !REG_SPC_CONTROL : LDA !REG_SPC_CONTROL : BNE - ; Wait until mute/unmute command is completed LDA.b #$81 : STA $4200 LDA !REG_MUSIC_CONTROL_REQUEST : CMP.b #08 : BEQ .done+3 ; No SFX during warp track diff --git a/rngfixes.asm b/rngfixes.asm index 983ffec..f9a880c 100644 --- a/rngfixes.asm +++ b/rngfixes.asm @@ -4,8 +4,7 @@ RigDigRNG: LDA $7FFE01 : CMP.l DiggingGameRNG : !BGE .forceHeart .normalItem - JSL $0DBA71 ; GetRandomInt -RTL + JML GetRandomInt .forceHeart LDA $7FFE00 : BNE .normalItem LDA #$04 @@ -15,7 +14,7 @@ RigChestRNG: JSL.l DecrementChestCounter LDA $04C4 : CMP.l ChestGameRNG : BEQ .forceHeart .normalItem - JSL $0DBA71 ; GetRandomInt + JSL GetRandomInt AND.b #$07 ; restrict values to 0-7 CMP #$07 : BEQ .notHeart JSL.l DecrementItemCounter @@ -30,7 +29,7 @@ RTL JSL.l DecrementItemCounter ;LDA #$00 ; bullshit rupee farming in chest game - JSL $0DBA71 ; GetRandomInt ; spam RNG until we stop getting the prize item + JSL GetRandomInt ; spam RNG until we stop getting the prize item AND.b #$07 ; restrict values to 0-7 CMP #$07 : BNE + ; player got prize item AGAIN LDA.b #$00 ; give them money instead @@ -98,6 +97,11 @@ RNG_Ganon_Extra_Warp: + PLA RTL +RNG_Enemy_Drops: + LDA.l $7EF3C5 : CMP #$01 : BEQ + ; drops are static after uncle pickup & before rescuing zelda + JML GetRandomInt + + + LDA.b #$0F _rng_done: JSL.l GetStaticRNG RTL @@ -143,5 +147,5 @@ dw #$02C0 ; 11 = Agahnim 2 dw #$0300 ; 12 = Agahnim 2 Phantoms dw #$0340 ; 13 = Ganon dw #$0380 ; 14 = Ganon Extra Warp -dw #$03C0 ; 15 = Unused -;-------------------------------------------------------------------------------- \ No newline at end of file +dw #$03C0 ; 15 = Standard Escape Enemy Drops +;-------------------------------------------------------------------------------- diff --git a/stats.asm b/stats.asm index 846355d..d6ae121 100644 --- a/stats.asm +++ b/stats.asm @@ -447,6 +447,7 @@ JMP StatTransitionCounter !UW_MIRROR_COUNTER = "$7EF43B" IncrementUWMirror: PHA + LDA.b #$00 : STA $7F5035 ; bandaid patch bug with mirroring away from text LDA !LOCK_STATS : BNE + LDA $040C : CMP #$FF : BEQ + ; skip if we're in a cave or house LDA !UW_MIRROR_COUNTER : INC : STA !UW_MIRROR_COUNTER diff --git a/stats/creditsnew.asm b/stats/creditsnew.asm index 56d27fc..46173d0 100644 --- a/stats/creditsnew.asm +++ b/stats/creditsnew.asm @@ -1,11 +1,13 @@ ;=================================================================================================== ; LEAVE THIS HERE FOR PHP WRITES ;=================================================================================================== +table "creditscharmapbighi.txt" YourSpriteCreditsHi: db 2 db 55 db " " ; $238002 +table "creditscharmapbiglo.txt" YourSpriteCreditsLo: db 2 db 55 @@ -501,6 +503,15 @@ CreditsLineBlank: %blankline() %blankline() +%smallcredits("WEBSITE LOGO", "green") + +%blankline() + +%bigcredits("PLEASURE") + +%blankline() +%blankline() + %smallcredits("SPECIAL THANKS", "red") %blankline() @@ -568,12 +579,6 @@ CreditsLineBlank: %emptyline() %emptyline() %emptyline() -%emptyline() -%emptyline() -%emptyline() -%emptyline() -%emptyline() -%emptyline() ;=================================================================================================== diff --git a/stats/main.asm b/stats/main.asm index 314de0e..975eb3b 100755 --- a/stats/main.asm +++ b/stats/main.asm @@ -218,7 +218,7 @@ endmacro !ColonOffset = $83 !PeriodOffset = $80 -!BlankTile = $883D +!BlankTile = #$883D RenderCreditsStatCounter: PHB diff --git a/tables.asm b/tables.asm index 8ccb5fb..6766a58 100644 --- a/tables.asm +++ b/tables.asm @@ -1082,8 +1082,15 @@ db $00, $00, $00, $00, $00, $00, $00, $00 org $308350 ; PC 0x180350 ShouldStartatExit: db $00, $00, $00 +;-------------------------------------------------------------------------------- +; $308358 (0x180358) fixes major glitches +; 0x00 - fix +; otherwise dont fix various major glitches +org $308358 +AllowAccidentalMajorGlitch: +db $00 ;================================================================================ -; 0x180350 - 0x1814FF (unused) +; 0x180359 - 0x1814FF (unused) ;================================================================================ ; $309500 (0x181500) - $309FFF (0x181FFF) original 0x39C bytes ; Replacement Ending Sequence Text Data diff --git a/utilities.asm b/utilities.asm index ec90792..7d4e1de 100644 --- a/utilities.asm +++ b/utilities.asm @@ -24,8 +24,7 @@ GetSpriteID: PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT + LDA !MULTIWORLD_SPRITEITEM_PLAYER_ID : BNE + PLA : LDA.l BottleLimitReplacement - JSL.l GetSpriteID - RTL + JMP GetSpriteID + PLA : BRA .normal .server_F0 @@ -59,8 +58,7 @@ RTL LDA !MULTIWORLD_SPRITEITEM_PLAYER_ID : BNE + LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit LDA.l ProgressiveArmorReplacement - JSL.l GetSpriteID - RTL + JMP GetSpriteID + LDA.b #$04 : RTL ++ CMP.b #$FE : BNE ++ ; Progressive Sword @@ -68,8 +66,7 @@ RTL LDA $7EF359 CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit LDA.l ProgressiveSwordReplacement - JSL.l GetSpriteID - RTL + JMP GetSpriteID .skipswordlimit : LDA $7EF359 + : CMP.b #$FF : BNE + ; Swordless LDA.b #$43 : RTL @@ -87,8 +84,7 @@ RTL LDA !PROGRESSIVE_SHIELD : AND #$C0 : LSR #6 CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit LDA.l ProgressiveShieldReplacement - JSL.l GetSpriteID - RTL + JMP GetSpriteID .skipshieldlimit : LDA !PROGRESSIVE_SHIELD : AND #$C0 : LSR #6 + : CMP.b #$00 : BNE + ; No Shield LDA.b #$2D : RTL @@ -101,8 +97,7 @@ RTL LDA $7EF340 : INC : LSR CMP.l ProgressiveBowLimit : !BLT + LDA.l ProgressiveBowReplacement - JSL.l GetSpriteID - RTL + JMP GetSpriteID .skipbowlimit : LDA $7EF340 : INC : LSR + : CMP.b #$00 : BNE + ; No Bow LDA.b #$29 : RTL @@ -187,8 +182,7 @@ GetSpritePalette: .bottle PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT + PLA : LDA.l BottleLimitReplacement - JSL.l GetSpritePalette - RTL + JMP GetSpritePalette + PLA : .notBottle PHX @@ -203,8 +197,7 @@ RTL LDA $7EF359 CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit LDA.l ProgressiveSwordReplacement - JSL.l GetSpritePalette - RTL + JMP GetSpritePalette + : CMP.b #$00 : BNE + ; No Sword LDA.b #$04 : RTL + : CMP.b #$01 : BNE + ; Fighter Sword @@ -217,8 +210,7 @@ RTL LDA !PROGRESSIVE_SHIELD : AND #$C0 : LSR #6 CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit LDA.l ProgressiveShieldReplacement - JSL.l GetSpritePalette - RTL + JMP GetSpritePalette + : CMP.b #$00 : BNE + ; No Shield LDA.b #$04 : RTL + : CMP.b #$01 : BNE + ; Fighter Shield @@ -228,8 +220,7 @@ RTL ++ : CMP.b #$FF : BNE ++ ; Progressive Armor LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit LDA.l ProgressiveArmorReplacement - JSL.l GetSpritePalette - RTL + JMP GetSpritePalette + : CMP.b #$00 : BNE + ; Green Tunic LDA.b #$04 : RTL + ; Everything Else @@ -243,8 +234,7 @@ RTL LDA $7EF340 : INC : LSR CMP.l ProgressiveBowLimit : !BLT + LDA.l ProgressiveBowReplacement - JSL.l GetSpritePalette - RTL + JMP GetSpritePalette + : CMP.b #$00 : BNE + ; No Bow LDA.b #$08 : RTL + ; Any Bow @@ -326,35 +316,37 @@ IsNarrowSprite: LDA.l BottleLimitReplacement JSL.l IsNarrowSprite JMP .done - + : BRA .continue + + : JMP .continue .notBottle CMP.b #$5E : BNE ++ ; Progressive Sword LDA $7EF359 : CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit LDA.l ProgressiveSwordReplacement JSL.l IsNarrowSprite - BRA .done - + : BRA .continue - ++ : CMP.b #$5F : BNE ++ ; Progressive Shield - LDA !PROGRESSIVE_SHIELD : AND #$C0 : BNE + : SEC : BRA .done ; No Shield - LSR #6 : CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit + JMP .done + + : JMP .continue + ++ CMP.b #$5F : BNE ++ ; Progressive Shield + LDA !PROGRESSIVE_SHIELD : AND #$C0 : BNE + : SEC : JMP .done ; No Shield + + : LSR #6 : CMP.l ProgressiveShieldLimit : !BLT .continue LDA.l ProgressiveShieldReplacement JSL.l IsNarrowSprite - BRA .done - + - ;LDA $7EF35A : BNE + : SEC : BRA .done : +; No Shield - BRA .false ; Everything Else + JMP .done ++ CMP.b #$60 : BNE ++ ; Progressive Armor - LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit + LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT .continue LDA.l ProgressiveArmorReplacement JSL.l IsNarrowSprite - BRA .done + JMP .done + ++ CMP.b #$62 : BNE ++ ; RNG Item (Single) - JSL.l GetRNGItemSingle : BRA .continue + JSL.l GetRNGItemSingle : JMP .continue ++ CMP.b #$63 : BNE ++ ; RNG Item (Multi) JSL.l GetRNGItemMulti - ++ - + ++ CMP.b #$64 : BEQ + ; Progressive Bow + CMP.b #$65 : BNE .continue ; Progressive Bow (alt) + + : LDA $7EF340 : INC : LSR + CMP.l ProgressiveBowLimit : !BLT + + LDA.l ProgressiveBowReplacement + JSL.l IsNarrowSprite + JMP .done .continue ;--------