From a7f8bc8d91987e4c4cabc0e798719e0463b435e2 Mon Sep 17 00:00:00 2001 From: Kat Date: Fri, 14 May 2021 13:33:56 -0500 Subject: [PATCH 1/7] Update tables.asm --- tables.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tables.asm b/tables.asm index 4775e81..386cc6c 100644 --- a/tables.asm +++ b/tables.asm @@ -1507,7 +1507,7 @@ dw #9999 ; Rupee Limit ; $7F50C2 - Armor Modifier ; $7F50C3 - Magic Modifier ; $7F50C4 - Light Cone Modifier -; $7F50C5 - Unused +; $7F50C5 - Cucco Storm ; $7F50C6 - Old Man Dash Modifier ; $7F50C7 - Ice Physics Modifier ; $7F50C8 - Infinite Arrows Modifier From 47e52d3fb26a3a3492669f948a2fd81481eca361 Mon Sep 17 00:00:00 2001 From: Kat Date: Fri, 14 May 2021 14:17:11 -0500 Subject: [PATCH 2/7] cucco storm --- cuccostorm.asm | 139 +++++++++++++++++++++++++------------------------ events.asm | 1 + 2 files changed, 71 insertions(+), 69 deletions(-) diff --git a/cuccostorm.asm b/cuccostorm.asm index f21ec1c..b301748 100644 --- a/cuccostorm.asm +++ b/cuccostorm.asm @@ -1,74 +1,75 @@ ;================================================================================ -StartCuccoStorm: - ;STA $FFFFFF - PHA : PHX : PHY : PHP - SEP #$30 ; set 8-bit accumulator & index registers - LDA $1B : BNE .done ; skip if indoors +!CUCCO_STORM = "$7F50C5" +!IS_INDOORS = "$7E001B" +!ENEMY_STATE_TABLE = "$7E0DD0" +!ENEMY_TYPE_TABLE = "$7E0E20" +!ENEMY_AUX1_TABLE = "$7E0DA0" +!ENEMY_AUX2_TABLE = "$7E0DB0" +!ENEMY_DIRECTION_TABLE = "$7E0EB0" +!CUCCO = "#$0B" +!INERT = "#$00" +!INIT = "#$08" +!ALIVE = "#$09" +!CUCCO_ENRAGED = "#$23" +!LINK_POS_Y_LOW = "$20" +!LINK_POS_Y_HIGH = "$21" +!LINK_POS_X_LOW = "$22" +!LINK_POS_X_HIGH = "$23" +!ENEMY_POS_Y_LOW = "$7E0D00" +!ENEMY_POS_X_LOW = "$7E0D10" +!ENEMY_POS_Y_HIGH = "$7E0D20" +!ENEMY_POS_X_HIGH = "$7E0D30" +CuccoStorm: + + SEP #$30 ; set 8-bit accumulator index registers + LDA.l !CUCCO_STORM : BEQ + ; only if storm is on + LDA.b $10 : CMP.b #$09 : BNE + ; only if outdoors + LDA.l !LOOP_FRAMES_LOW : AND.b #$7F : BNE + ; check every 128 frames + + - + ;==== Find a Cucco - LDY.b #$0A - LDA.b #$0B : JSL Sprite_SpawnDynamically_arbitrary : BMI .done ; spawn a chicken - JSL Sprite_SetSpawnedCoords - LDA.b #$24 : STA $0DA0, Y ; turn it into an attack chicken - LDA.b #$01 : STA $0DB0, Y + LDY.b #$FF : PHY ; push "cucco not found" + + LDX.b #$00 : -- : CPX.b #$10 : !BGE .ldone + LDA.w !ENEMY_STATE_TABLE, X : CMP.b !ALIVE : BEQ +++ + ; enemy not found + CMP.b !INERT : BNE ++ + ; log inert enemy slot + PLA : PHX + BRA ++ + +++ + ; found an enemy + LDA.l !ENEMY_TYPE_TABLE, X : CMP.b !CUCCO : BNE ++ + ; it's a cucco + TXY ; record where we found the living cucco in case we don't find any angry ones + LDA.w !ENEMY_AUX1_TABLE, X : CMP.b !CUCCO_ENRAGED : !BLT ++ + PLA : BRA + ; we found an angry cucco, done + ++ : INX : BRA -- : .ldone - .done - PLP : PLY : PLX : PLA -RTL -;================================================================================ -SpawnAngryCucco: - TXA : EOR $1A : AND.b #$0F : ORA $1B : BNE .spawn_delay - - LDA.b #$0B - LDY.b #$0A - - JSL Sprite_SpawnDynamically_arbitrary : BMI .spawn_failed - - PHX - - TYX - - LDA.b #$1E : JSL Sound_SetSfx3PanLong - - PLX - - LDA.b #$01 : STA $0DB0, Y - - PHX - - JSL GetRandomInt : STA $0F : AND.b #$02 : BEQ .vertical_entry_point - - LDA $0F : ADC $E2 : STA $0D10, Y - LDA $E3 : ADC.b #$00 : STA $0D30, Y - - LDA $0F : AND.b #$01 : TAX - - LDA $9F3C, X : ADC $E8 : STA $0D00, Y - LDA $E9 : ADC.b #$00 : STA $0D20, Y - - BRA .set_velocity - -.vertical_entry_point - - LDA $0F : ADC $E8 : STA $0D00, Y - LDA $E9 : ADC.b #$00 : STA $0D20, Y - - LDA $0F : AND.b #$01 : TAX - - LDA $9F3C, X : ADC $E2 : STA $0D10, Y - LDA $E3 : ADC.b #$00 : STA $0D30, Y - -.set_velocity - - TYX - - LDA.b #$20 : JSL Sprite_ApplySpeedTowardsPlayerLong - - PLX - - LDA.b #$30 : JSL Sound_SetSfx2PanLong - -.spawn_failed -.spawn_delay - + ;==== Create a Cucco + + CPY.b #$FF : BNE ++ + ; we didn't find a cucco, so try to create one + PLY + CPY.b #$FF : BEQ + ; fail if no slots found + LDA.b !CUCCO : STA.w !ENEMY_TYPE_TABLE, Y + LDA.b !INIT : STA.w !ENEMY_STATE_TABLE, Y + LDA.b !LINK_POS_Y_LOW : STA.w !ENEMY_POS_Y_LOW, Y + LDA.b !LINK_POS_Y_HIGH : STA.w !ENEMY_POS_Y_HIGH, Y + LDA.b !LINK_POS_X_LOW : STA.w !ENEMY_POS_X_LOW, Y + LDA.b !LINK_POS_X_HIGH : STA.w !ENEMY_POS_X_HIGH, Y + BRA +++ + ++ + PLA + +++ + + ;==== Enrage a Cucco + + LDA.b !CUCCO_ENRAGED : STA.w !ENEMY_AUX1_TABLE, Y ; enrage the cucco + LDA.b #$00 : STA.w !ENEMY_AUX2_TABLE, Y : STA.w !ENEMY_DIRECTION_TABLE, Y + + ;==== + + RTL ;================================================================================ \ No newline at end of file diff --git a/events.asm b/events.asm index 7713938..bf17db1 100644 --- a/events.asm +++ b/events.asm @@ -17,6 +17,7 @@ OnDrawHud: JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter JSL.l NewDrawHud JSL.l SwapSpriteIfNecissary + JSL.l CuccoStorm JSL.l PollService JML.l ReturnFromOnDrawHud ;-------------------------------------------------------------------------------- From ce58e22496358b4e1db9ec501f72e18de7e0dd50 Mon Sep 17 00:00:00 2001 From: aerinon Date: Fri, 14 May 2021 16:50:35 -0600 Subject: [PATCH 3/7] Fix a minor typo that makes Ganon invincible --- goalitem.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/goalitem.asm b/goalitem.asm index b1e8e6e..81351ab 100644 --- a/goalitem.asm +++ b/goalitem.asm @@ -69,7 +69,7 @@ CheckGanonVulnerability: ; 03 = crystals and aga 2 .crystals_and_aga - LDA.l $7EF2DDB : AND.b #$20 : BEQ .fail ; check aga2 first then bleed in + LDA.l $7EF2DB : AND.b #$20 : BEQ .fail ; check aga2 first then bleed in ; 04 = crystals only .crystals From 471a6da9ba1614de04f7fb00f307c11db34a0909 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Tue, 18 May 2021 05:30:23 -0400 Subject: [PATCH 4/7] Sorry, malmo --- pendantcrystalhud.asm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pendantcrystalhud.asm b/pendantcrystalhud.asm index ceaaacd..256b395 100644 --- a/pendantcrystalhud.asm +++ b/pendantcrystalhud.asm @@ -271,10 +271,10 @@ DrawHUDDungeonItems: .dungeon_positions dw 0 ; Hyrule Castle - dw 2 ; Agahnims Tower dw 6 ; Eastern dw 8 ; Desert dw 10 ; Hera + dw 2 ; Agahnims Tower dw 14 ; PoD dw 16 ; Swamp dw 18 ; Skull Woods @@ -286,10 +286,10 @@ DrawHUDDungeonItems: .small_key_x_offset dw $7EF37D-$7EF37D ; Hyrule Castle - dw $7EF380-$7EF37D ; Agahnims Tower dw $7EF37E-$7EF37D ; Eastern dw $7EF37F-$7EF37D ; Desert dw $7EF386-$7EF37D ; Hera + dw $7EF380-$7EF37D ; Agahnims Tower dw $7EF382-$7EF37D ; PoD dw $7EF381-$7EF37D ; Swamp dw $7EF384-$7EF37D ; Skull Woods @@ -302,10 +302,10 @@ DrawHUDDungeonItems: .dungeon_bitmasks dw $4000 ; Hyrule Castle - dw $0800 ; Agahnims Tower dw $2000 ; Eastern dw $1000 ; Desert dw $0020 ; Hera + dw $0800 ; Agahnims Tower dw $0200 ; PoD dw $0400 ; Swamp dw $0080 ; Skull Woods @@ -317,10 +317,10 @@ DrawHUDDungeonItems: .boss_room_ids dw $80*2 ; ; Hyrule Castle (BNC) - dw $20*2 ; ; Agahnim dw $C8*2 ; ; Eastern dw $33*2 ; ; Desert dw $07*2 ; ; Hera + dw $20*2 ; ; Agahnim dw $5A*2 ; ; PoD dw $06*2 ; ; Swamp dw $29*2 ; ; Skull Woods @@ -362,7 +362,7 @@ DrawHUDDungeonItems: -- STA.w $1686,X STA.w $16C6,X STA.w $1706,X - + DEX : DEX : BPL -- @@ -445,7 +445,7 @@ DrawHUDDungeonItems: LDA.w #$2826 LDX.w .dungeon_positions,Y - STA.w $1706,Y + STA.w $1706,X ..skip_boss_kill INY : INY From 869706e50b4963a28f4a3be5fab96d9091c6107b Mon Sep 17 00:00:00 2001 From: cassidy Date: Thu, 20 May 2021 20:32:29 -0400 Subject: [PATCH 5/7] Fix bombs count --- inventory.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inventory.asm b/inventory.asm index aa27b73..7226629 100644 --- a/inventory.asm +++ b/inventory.asm @@ -739,8 +739,8 @@ RTS ;-------------------------------------------------------------------------------- Link_ReceiveItem_HUDRefresh: LDA $7EF343 : BNE + ; skip if we have bombs - LDA $7EF375 : BEQ + ; skip if we are filling no bombs LDA $7EF370 : !ADD.l StartingMaxBombs : BEQ + ; skip if we can't have bombs + LDA $7EF375 : BEQ + ; skip if we are filling no bombs DEC : STA $7EF375 ; decrease bomb fill count LDA.b #$01 : STA $7EF343 ; increase actual bomb count + From 327f08ce35705afe9e6e67670c2c998d300cd52a Mon Sep 17 00:00:00 2001 From: cassidy Date: Sat, 22 May 2021 12:46:35 -0400 Subject: [PATCH 6/7] Revert "Update entrances.asm" This reverts commit f4a336db9e5308f8dae43f40f22b8cbe3e29bf5f. --- entrances.asm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/entrances.asm b/entrances.asm index a76ae17..2b2f171 100644 --- a/entrances.asm +++ b/entrances.asm @@ -4,7 +4,9 @@ ;-------------------------------------------------------------------------------- LockAgahnimDoors: LDA.l AgahnimDoorStyle : AND.w #$00FF - BEQ .exit ; don't need to load 0, because we'd have it if we reached here + BNE + + ;#$0 = Never Locked + LDA.w #$0000 : RTL + : CMP.w #$0001 : BNE + LDA $7EF3C5 : AND.w #$000F : CMP.w #$0002 : !BGE .unlock ; if we rescued zelda, skip JSR.w LockAgahnimDoorsCore : RTL @@ -35,7 +37,7 @@ LockAgahnimDoors: .unlock LDA.w #$0000 ; fallback to never locked -.exit + RTL ;-------------------------------------------------------------------------------- LockAgahnimDoorsCore: @@ -202,14 +204,14 @@ RTL AnimatedEntranceFix: ;when an entrance animation tries to start PHA LDA.l InvertedMode : BEQ + ;If we are in inverted mode - PLA - BIT $8A : BVS ++ ; and in the light world + LDA $8A : AND.b #$40 : BNE + ;and in the light world + PLA STZ $04C6 ; skip it. LDA #$00 RTL + PLA -++ STA $02E4 ;what we wrote over + STA $02E4 ;what we wrote over STA $0FC1 ;what we wrote over STA $0710 ;what we wrote over RTL From c7a4d817c09e93182fbc547e8a13ce104389e0e9 Mon Sep 17 00:00:00 2001 From: aerinon Date: Mon, 24 May 2021 15:12:09 -0600 Subject: [PATCH 7/7] Changes from DR --- doortables.asm | 10 +++++++--- dr_lobby.asm | 15 +++++++-------- drhooks.asm | 2 +- hudadditions.asm | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/doortables.asm b/doortables.asm index 2c0140e..dbbdb3c 100644 --- a/doortables.asm +++ b/doortables.asm @@ -669,6 +669,10 @@ db $07,$07,$02,$02,$02,$02,$07,$07,$07,$20,$20,$07,$20,$20,$20,$07 ;27f300 ; -org $27ff00 -SancDarkWorldFlag: -db 0 +;org $27ff00 + +org $27fff0 +LinksHouseDarkWorld: +dw $ffff +SanctuaryDarkWorld: +dw $ffff \ No newline at end of file diff --git a/dr_lobby.asm b/dr_lobby.asm index 2c1b9c8..1cac9d1 100644 --- a/dr_lobby.asm +++ b/dr_lobby.asm @@ -1,10 +1,9 @@ -CheckDarkWorldSanc: +CheckDarkWorldSpawn: STA $A0 : STA $048E ; what we wrote over - LDA.l InvertedMode : AND #$00FF : BNE + - LDA.l SancDarkWorldFlag : AND #$00FF : BEQ + - SEP #$30 - LDA $A0 : CMP #$12 : BNE ++ - LDA.l $7EF357 : BNE ++ ; moon pearl? - LDA #$17 : STA $5D : INC $02E0 : LDA.b #$40 : STA !DARK_WORLD - ++ REP #$30 + LDA.l DRFlags : AND #$0200 : BEQ + ; skip if the flag isn't set + LDA.l $7EF357 : AND #$00FF : BNE + ; moon pearl? + LDA.l LinksHouseDarkWorld : CMP $A0 : BEQ ++ + LDA.l SanctuaryDarkWorld : CMP $A0 : BNE + + ++ SEP #$30 : LDA #$17 : STA $5D + INC $02E0 : LDA.b #$40 : STA !DARK_WORLD : REP #$30 + RTL diff --git a/drhooks.asm b/drhooks.asm index c4939e9..6739de3 100644 --- a/drhooks.asm +++ b/drhooks.asm @@ -165,7 +165,7 @@ org $08c450 ; <- ancilla_receive_item.asm : 146-148 (STY $5D : STZ $02D8) JSL RetrieveBunnyState : NOP org $02d9ce ; <- Bank02.asm : Dungeon_LoadEntrance 10829 (STA $A0 : STA $048E) -JSL CheckDarkWorldSanc : NOP +JSL CheckDarkWorldSpawn : NOP org $01891e ; <- Bank 01.asm : 991 Dungeon_LoadType2Object (LDA $00 : XBA : AND.w #$00FF) JSL RainPrevention : NOP #2 diff --git a/hudadditions.asm b/hudadditions.asm index f5e4a11..7f9eb34 100644 --- a/hudadditions.asm +++ b/hudadditions.asm @@ -8,7 +8,7 @@ DrHudOverride: HudAdditions: { lda.l DRFlags : and #$0008 : beq ++ - LDA.w #$28A4 : STA !GOAL_DRAW_ADDRESS +; LDA.w #$28A4 : STA !GOAL_DRAW_ADDRESS lda $7EF423 jsr HudHexToDec4DigitCopy LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+2 ; draw 100's digit