diff --git a/Items/bottle_net.asm b/Items/bottle_net.asm index 20a66e5..774dda1 100644 --- a/Items/bottle_net.asm +++ b/Items/bottle_net.asm @@ -20,29 +20,24 @@ LinkItem_NewBottle: ; Check if the bottle is empty CMP.b #$03 : BCC .empty_bottle - ; Confirm we aren't currently catching - LDA $030D : BNE .empty_bottle + ; Confirm we aren't currently catching + LDA $030D : BNE .empty_bottle - ; If no, prepare and call the LinkItem_Bottles routine - JSR LinkItem_Bottles - BRA .exit + ; If no, prepare and call the LinkItem_Bottles routine + JSR LinkItem_Bottles + BRA .exit -.empty_bottle + .empty_bottle ; Otherwise, prepare and call the LinkItem_BugCatchingNet routine JSR LinkItem_CatchBottle -.exit + .exit RTS } - assert pc() <= $07A249 - pullpc - print " LinkItem_CatchBottle ", pc -; ============================================================================= - pose_id: db $0B, $06, $07, $08, $01, $02, $03, $04, $05, $06 ; up db $01, $02, $03, $04, $05, $06, $07, $08, $01, $02 ; down @@ -59,26 +54,23 @@ pose_offset: LinkItem_CatchBottle: { BIT $3A : BVS .y_press + LDA $6C : BNE .bottle_exit ; (RTS) + JSR Link_CheckNewY_ButtonPress : BCC .bottle_exit ; (RTS) + LDA $2F : LSR A : TAY + LDX pose_offset, Y + LDA.w pose_id, X : STA $0300 + LDA.b #$03 : STA $3D - LDA $6C : BNE .bottle_exit ; (RTS) + STZ $030D, X - JSR Link_CheckNewY_ButtonPress : BCC .bottle_exit ; (RTS) + LDA.b #$10 : STA $037A + LDA.b #$01 : TSB $50 - LDA $2F : LSR A : TAY - LDX pose_offset, Y - LDA.w pose_id, X : STA $0300 - LDA.b #$03 : STA $3D + STZ $2E - STZ $030D, X + LDA.b #$32 : JSR Player_DoSfx2 - LDA.b #$10 : STA $037A - LDA.b #$01 : TSB $50 - - STZ $2E - - LDA.b #$32 : JSR Player_DoSfx2 - -.y_press: + .y_press: JSR $AE65 ; HaltLinkWhenUsingItems LDA $67 : AND.b #$F0 : STA $67 @@ -99,120 +91,114 @@ LinkItem_CatchBottle: LDA $50 : AND.b #$FE : STA $50 LDA.b #$80 : STA $44 : STA $45 -.bottle_exit: -NetExit: + .bottle_exit: + NetExit: RTS } -; ============================================================================= print " LinkItem_Bottles ", pc LinkItem_Bottles: { JSR Link_CheckNewY_ButtonPress : BCC NetExit ; (RTS) + LDA.b $3A : AND.b #$BF : STA.b $3A - LDA.b $3A : AND.b #$BF : STA.b $3A + ; Check if we have a bottle or not + LDA.l $7EF34F : DEC A : TAX - ; Check if we have a bottle or not - LDA.l $7EF34F : DEC A : TAX + LDA.l $7EF35C, X : BEQ NetExit ; (RTS) + CMP.b #$03 : BCC .LinkItem_UselessBottle + CMP.b #$03 : BEQ .LinkItem_RedPotion + CMP.b #$04 : BEQ .LinkItem_GreenPotion + CMP.b #$05 : BEQ .LinkItem_BluePotion + CMP.b #$06 : BEQ .fairy + CMP.b #$09 : BEQ .magic_bean + CMP.b #$0A : BEQ .milk_bottle + BRL .LinkItem_BeeBottle - LDA.l $7EF35C, X : BEQ NetExit ; (RTS) - CMP.b #$03 : BCC .LinkItem_UselessBottle - CMP.b #$03 : BEQ .LinkItem_RedPotion - CMP.b #$04 : BEQ .LinkItem_GreenPotion - CMP.b #$05 : BEQ .LinkItem_BluePotion - CMP.b #$06 : BEQ .fairy - CMP.b #$09 : BEQ .magic_bean - CMP.b #$0A : BEQ .milk_bottle + .milk_bottle + LDA.l $7EF36C : CMP.l $7EF36D : BEQ .LinkItem_UselessBottle + JSL Bottle_DrinkMilk + RTS - BRL .LinkItem_BeeBottle - -.milk_bottle - LDA.l $7EF36C : CMP.l $7EF36D : BEQ .LinkItem_UselessBottle - JSL Bottle_DrinkMilk + .magic_bean + JSL ReleaseMagicBean RTS -.magic_bean - JSL ReleaseMagicBean - RTS + .fairy + BRL .LinkItem_FairyBottle -.fairy - BRL .LinkItem_FairyBottle + .LinkItem_RedPotion + LDA.l $7EF36C : CMP.l $7EF36D : BNE .can_drink_red -.LinkItem_RedPotion - LDA.l $7EF36C : CMP.l $7EF36D : BNE .can_drink_red + .LinkItem_UselessBottle + BRL LinkGoBeep ; BRL $07A955 Investigate -.LinkItem_UselessBottle - BRL LinkGoBeep ; BRL $07A955 Investigate + .can_drink_red + LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301 -.can_drink_red - LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301 + LDA.b #$04 : STA.b $11 + LDA.b $10 : STA.w $010C + LDA.b #$0E : STA.b $10 + LDA.b #$07 : STA.w $0208 - LDA.b #$04 : STA.b $11 - LDA.b $10 : STA.w $010C - LDA.b #$0E : STA.b $10 - LDA.b #$07 : STA.w $0208 + JSL RebuildHUD_long - JSL RebuildHUD_long + RTS - RTS + .LinkItem_GreenPotion + LDA.l $7EF36E : CMP.b #$80 : BNE .can_drink + BRL LinkGoBeep -.LinkItem_GreenPotion - LDA.l $7EF36E : CMP.b #$80 : BNE .can_drink - BRL LinkGoBeep + .can_drink + ; Set the bottle empty + LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301 -.can_drink - ; Set the bottle empty - LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301 + ; submodule ???? + LDA.b #$08 : STA.b $11 + LDA.b $10 : STA.w $010C - ; submodule ???? - LDA.b #$08 : STA.b $11 - LDA.b $10 : STA.w $010C + ; Go to text mode + LDA.b #$0E : STA.b $10 + LDA.b #$07 : STA.w $0208 - ; Go to text mode - LDA.b #$0E : STA.b $10 - LDA.b #$07 : STA.w $0208 + JSL RebuildHUD_long + BRA .bottle_exit - JSL RebuildHUD_long - BRA .bottle_exit + .LinkItem_BluePotion + LDA $7EF36C : CMP $7EF36D : BNE .useBluePotion + LDA $7EF36E : CMP.b #$80 : BNE .useBluePotion + BRL LinkGoBeep ; BRL $07A955 + .useBluePotion + LDA.b #$02 : STA $7EF35C, X : STZ $0301 -.LinkItem_BluePotion - LDA $7EF36C : CMP $7EF36D : BNE .useBluePotion - LDA $7EF36E : CMP.b #$80 : BNE .useBluePotion - BRL LinkGoBeep ; BRL $07A955 + ; more submodule code + LDA.b #$09 : STA.b $11 + LDA.b $10 : STA.w $010C -.useBluePotion - LDA.b #$02 : STA $7EF35C, X : STZ $0301 + ; Go to text mode (?) + LDA.b #$0E : STA.b $10 + LDA.b #$07 : STA.w $0208 - ; more submodule code - LDA.b #$09 : STA.b $11 - LDA.b $10 : STA.w $010C + JSL RebuildHUD_long + BRA .bottle_exit - ; Go to text mode (?) - LDA.b #$0E : STA.b $10 - LDA.b #$07 : STA.w $0208 + .LinkItem_FairyBottle + STZ.w $0301 : LDA.b #$02 : STA.l $7EF35C, X + JSL PlayerItem_SpawnFaerie : BPL .released + BRL LinkGoBeep ; BRL $07A955 + .released + JSL RebuildHUD_long + BRA .bottle_exit - JSL RebuildHUD_long - BRA .bottle_exit + .LinkItem_BeeBottle + STZ.w $0301 + JSL PlayerItem_ReleaseBee : BPL .bee_spawn_success + BRL LinkGoBeep ; BRL $07A955 + .bee_spawn_success + LDA.b #$02 : STA.l $7EF35C, X + JSL RebuildHUD_long -.LinkItem_FairyBottle - STZ.w $0301 : LDA.b #$02 : STA.l $7EF35C, X - JSL PlayerItem_SpawnFaerie : BPL .released - BRL LinkGoBeep ; BRL $07A955 - -.released - JSL RebuildHUD_long - BRA .bottle_exit - -.LinkItem_BeeBottle - STZ.w $0301 - JSL PlayerItem_ReleaseBee : BPL .bee_spawn_success - BRL LinkGoBeep ; BRL $07A955 - -.bee_spawn_success - LDA.b #$02 : STA.l $7EF35C, X - JSL RebuildHUD_long - -.bottle_exit + .bottle_exit RTS } diff --git a/Items/fist_damage.asm b/Items/fist_damage.asm index 7d552d1..f24cd11 100644 --- a/Items/fist_damage.asm +++ b/Items/fist_damage.asm @@ -31,7 +31,7 @@ NOP org $079E67 NOP #$04 -CMP #$FF +CMP #$FF org $09F608 NOP @@ -93,4 +93,4 @@ AND #$10 : BNE + .branchF LDA.b #$00 + -RTL \ No newline at end of file +RTL diff --git a/Items/ice_rod.asm b/Items/ice_rod.asm index 4861aa9..6870940 100644 --- a/Items/ice_rod.asm +++ b/Items/ice_rod.asm @@ -44,7 +44,7 @@ LinkItem_IceRod: TXA STA $7ED004 ; store native x value into ram to regain after code - ; wait for vblank to enable dma transfer + ; wait for vblank to enable dma transfer LDA $4212 : AND #$80 : BEQ $F9 REP #$30 @@ -100,15 +100,13 @@ VramDmaTransfer: { LDA #$007E ; load origin of bytes to transfer (7E/d000) STA $4304 - LDA #$D000 - STA $4302 + LDA #$D000 : STA $4302 SEP #$30 LDA #$18 ; bus STA $4301 LDA #$04 ; transfer 4 bytes STA $4305 - LDA #$01 - STA $4300 + LDA #$01 : STA $4300 STA $420B ; make dma transfer RTS } diff --git a/Items/jump_feather.asm b/Items/jump_feather.asm index 9bfef6c..5c430bf 100644 --- a/Items/jump_feather.asm +++ b/Items/jump_feather.asm @@ -30,16 +30,12 @@ assert pc() <= $07D248 pullpc LinkItem_JumpFeather: { - JSL $07983A ; Reset swim state - LDA $46 : BNE .cantuseit + JSL Link_ResetSwimmingState + LDA $46 : BNE .cant_use_it LDA #$02 : STA $5D ; set link state recoil LDA #$02 : STA $4D ; set jumping state (ledge hop) - - ; Length of the jump - LDA #$20 : STA $46 - - ; Height of the jump - LDA #$24 + LDA #$20 : STA $46 ; length of the jump + LDA #$24 ; Height of the jump ; Set vertical resistance STA $29 @@ -51,25 +47,24 @@ LinkItem_JumpFeather: ; Reset Link movement offsets STZ $31 : STZ $30 - LDA $F4 : AND #$08 : BEQ .noUp - LDA #-8 ; Change that -8 if you want higher speed moving up - STA $27 ; Vertical recoil - .noUp - LDA $F4 : AND #$04 : BEQ .noDown - LDA #8 ; Change that -8 if you want higher speed moving down - STA $27 - .noDown - LDA $F4 : AND #$02 : BEQ .noLeft - LDA #-8 ; Change that -8 if you want higher speed moving left - STA $28 ; Horizontal recoil - .noLeft - LDA $F4 : AND #$01 : BEQ .noRight - LDA #8 ; Change that 8 if you want higher speed moving right - STA $28 - .noRight - - .cantuseit - RTL + LDA $F4 : AND #$08 : BEQ .no_up + LDA #-8 + STA $27 ; Vertical recoil + .no_up + LDA $F4 : AND #$04 : BEQ .no_down + LDA #8 + STA $27 + .no_down + LDA $F4 : AND #$02 : BEQ .no_left + LDA #-8 + STA $28 ; Horizontal recoil + .no_left + LDA $F4 : AND #$01 : BEQ .no_right + LDA #8 + STA $28 + .no_right + .cant_use_it + RTL } ; ========================================================= @@ -79,13 +74,13 @@ LinkItem_JumpFeather: CheckIfJumpingForSpikeDamage: { - PHB : PHK : PLB - ; Check Z pos of Link - LDA $5D : CMP.b #$02 : BEQ .airborne - LDA.w .spike_floor_damage, Y : STA.w $0373 - .airborne - PLB - RTL + PHB : PHK : PLB + ; Check Z pos of Link + LDA $5D : CMP.b #$02 : BEQ .airborne + LDA.w .spike_floor_damage, Y : STA.w $0373 + .airborne + PLB + RTL .spike_floor_damage db $08 ; green diff --git a/Items/magic_rings.asm b/Items/magic_rings.asm index 1fee452..5df90c4 100644 --- a/Items/magic_rings.asm +++ b/Items/magic_rings.asm @@ -159,4 +159,3 @@ pushpc org $07810C JSL MagicRings_CheckForHeart pullpc - diff --git a/Items/portal_rod.asm b/Items/portal_rod.asm index 8d3c0a2..0a7534e 100644 --- a/Items/portal_rod.asm +++ b/Items/portal_rod.asm @@ -146,7 +146,7 @@ Overworld_OperateCameraScroll_Long: JSR $BB90 - PLB + PLB RTL } @@ -165,10 +165,10 @@ pullpc ScrollToPortal: { REP #$20 - + STZ $00 STZ $02 - + LDA $22 : CMP $7EC186 : BEQ .set_x : BCC .x_low DEC $02 DEC A : CMP $7EC186 : BEQ .set_x @@ -185,7 +185,7 @@ ScrollToPortal: .set_x STA $22 - + LDA $20 : CMP $7EC184 : BEQ .set_y : BCC .y_low DEC $00 DEC A : CMP $7EC184 : BEQ .set_y @@ -209,12 +209,12 @@ ScrollToPortal: .delay_advance SEP #$20 - + LDA $00 : STA $30 LDA $02 : STA $31 - + JSL Overworld_OperateCameraScroll_Long ; $13B90 IN ROM - + LDA $0416 : BEQ .exit JSL Overworld_ScrollMap_Long ; $17273 IN ROM .exit @@ -229,46 +229,46 @@ pushpc ; Ancilla_PortalShot: ; { ; LDA $0C54, X : BEQ .traveling_shot - + ; JMP Ancilla_ConsumingFire ; .traveling_shot - + ; LDA $11 : BNE .just_draw - + ; STZ $0385, X - + ; JSR Ancilla_MoveHoriz ; JSR Ancilla_MoveVert - + ; JSR Ancilla_CheckSpriteCollision : BCS .collided - + ; LDA $0C72, X : ORA.b #$08 : STA $0C72, X - + ; JSR Ancilla_CheckTileCollision - + ; PHP - + ; LDA $03E4, X : STA $0385, X - + ; PLP : BCS .collided - + ; LDA $0C72, X : ORA.b #$0C : STA $0C72, X - + ; LDA $028A, X : STA $74 - + ; JSR Ancilla_CheckTileCollision - + ; PHP - + ; LDA $74 : STA $028A, X - + ; PLP : BCC .no_collision ; .collided - + ; INC $0C54, X - + ; ; Check if it's blue or orange portal ; LDA $0C68, X ; CMP.b #$1F @@ -290,23 +290,23 @@ pushpc ; ; CLC : ADC portal creation logic here if necessary ; .no_collision - + ; INC $0C5E, X - + ; LDA $0C72, X : AND.b #$F3 : STA $0C72, X - + ; LDA $0385, X : STA $0333 - + ; AND.b #$F0 : CMP.b #$C0 : BNE .just_draw - + ; LDA $03E4, X : STA $0333 - + ; AND.b #$F0 : CMP.b #$C0 : BNE .just_draw ; .just_draw - + ; JSR PortalShot_Draw - + ; RTS ; } @@ -314,46 +314,46 @@ pushpc ; PortalShot_Draw: ; { ; JSR Ancilla_BoundsCheck - + ; LDA $0280, X : BEQ .default_priority - + ; LDA.b #$30 : TSB $04 ; .default_priority ; LDA $0C5E, X : AND.b #$0C : STA $02 - + ; PHX - + ; LDX.b #$02 ; LDY.b #$00 ; .next_oam_entry ; STX $03 - + ; TXA : ORA $02 : TAX - + ; LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y ; LDA $01 : CLC : ADC .y_offsets, X : INY : STA ($90), Y - + ; LDX $03 - + ; LDA .chr, X : INY : STA ($90), Y ; LDA $04 : ORA.b #$02 : INY : STA ($90), Y - + ; PHY - + ; TYA : LSR #2 : TAY - + ; LDA.b #$00 : STA ($92), Y - + ; PLY : INY - + ; DEX : BPL .next_oam_entry - + ; PLX - + ; RTS ; .x_offsets