diff --git a/roomloading.asm b/roomloading.asm index 29f584d..d545b29 100644 --- a/roomloading.asm +++ b/roomloading.asm @@ -71,15 +71,15 @@ macro DrawBombosPlatform(roomX, roomY, quadX, quadY) endMacro IcePalaceBombosSE: - LDA AllowSwordlessMedallionUse : BNE + : RTL : + + LDA AllowSwordlessMedallionUse : CMP #$01 : BEQ + : RTL : + %DrawBombosPlatform(14, 18, 1, 1) RTL IcePalaceBombosSW: - LDA AllowSwordlessMedallionUse : BNE + : RTL : + + LDA AllowSwordlessMedallionUse : CMP #$01 : BEQ + : RTL : + %DrawBombosPlatform(14, 18, 0, 1) RTL IcePalaceBombosNE: - LDA AllowSwordlessMedallionUse : BNE + : RTL : + + LDA AllowSwordlessMedallionUse : CMP #$01 : BEQ + : RTL : + %DrawBombosPlatform(14, 18, 1, 0) RTL @@ -165,4 +165,4 @@ RoomCallbackTable: db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Fx db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 10x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 11x - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 12x \ No newline at end of file + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 12x diff --git a/swordswap.asm b/swordswap.asm index bfea58f..7dbd635 100644 --- a/swordswap.asm +++ b/swordswap.asm @@ -6,11 +6,11 @@ ;GetFairySword: ; CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert single fighter sword to low id one ; CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert safe master sword to normal one -; CMP #$04 : !BLT + : JML.l PyramidFairy_BRANCH_IOTA : + ; for any sword, incl newer -; JSL ItemCheck_FairySword : BEQ + : JML.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this +; CMP #$04 : !BLT + : JML.l PyramidFairy_BRANCH_IOTA : + ; for any sword, incl newer +; JSL ItemCheck_FairySword : BEQ + : JML.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this ; JSL ItemSet_FairySword ; mark as got -; LDA FairySword : STA $0DC0, X ; whichever sword -; LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose +; LDA FairySword : STA $0DC0, X ; whichever sword +; LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose ; ;JML.l PyramidFairy_BRANCH_GAMMA ;================================================================================ @@ -146,16 +146,16 @@ GetSmithSword: REP #$20 : LDA $7EF360 : CMP #$000A : SEP #$20 : !BGE .buy .cant_afford REP #$10 - LDA.b #$7A - LDY.b #$01 - JSL.l Sprite_ShowMessageUnconditional + LDA.b #$7A + LDY.b #$01 + JSL.l Sprite_ShowMessageUnconditional LDA.b #$3C : STA $012E ; error sound SEP #$10 BRA .done .buy - LDA.l SmithItem : TAY - STZ $02E9 ; Item from NPC + LDA.l SmithItem : TAY + STZ $02E9 ; Item from NPC PHX : JSL Link_ReceiveItem : PLX REP #$20 : LDA $7EF360 : !SUB.w #$000A : STA $7EF360 : SEP #$20 ; Take 10 rupees @@ -165,50 +165,68 @@ GetSmithSword: JML.l Smithy_AlreadyGotSword ;================================================================================ CheckMedallionSword: - PHB : PHX : PHY - LDA.l AllowSwordlessMedallionUse : BNE +++ : JMP + : +++ - LDA $1B : BEQ .outdoors - .indoors - REP #$20 ; set 16-bit accumulator - LDA $A0 ; load room ID - CMP.w #$000E : BNE ++ : .freezor1 - LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord - LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord - JMP .permit - ++ : CMP.w #$007E : BNE ++ : .freezor2 - LDA $22 : AND.w #$01FF : CMP.w #112-8 : !BLT .normal : CMP.w #112+32-8 : !BGE .normal ; check x-coord - LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord - JMP .permit - ++ : CMP.w #$00DE : BNE ++ : .kholdstare - LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord - LDA $20 : AND.w #$01FF : CMP.w #144-22 : !BLT .normal : CMP.w #144+32-22 : !BGE .normal ; check y-coord - BRA .permit - ++ : .normal - SEP #$20 ; set 8-bit accumulator + LDA.l AllowSwordlessMedallionUse : BEQ .check_sword + CMP #$01 : BEQ .check_pad + LDA.b #$02 ; Pretend we have master sword + RTL + .check_sword + LDA $7EF359 + RTL + .check_pad + PHB : PHX : PHY + LDA $1B : BEQ .outdoors + .indoors + REP #$20 ; set 16-bit accumulator + LDA $A0 ; load room ID + CMP.w #$000E : BNE + ; freezor1 + LDA $22 : AND.w #$01FF ; check x-coord + CMP.w #368-8 : !BLT .normal + CMP.w #368+32-8 : !BGE .normal + LDA $20 : AND.w #$01FF ; check y-coord + CMP.w #400-22 : !BLT .normal + CMP.w #400+32-22 : !BGE .normal + JMP .permit + + : CMP.w #$007E : BNE + ; freezor2 + LDA $22 : AND.w #$01FF ; check x-coord + CMP.w #112-8 : !BLT .normal + CMP.w #112+32-8 : !BGE .normal + LDA $20 : AND.w #$01FF ; check y-coord + CMP.w #400-22 : !BLT .normal + CMP.w #400+32-22 : !BGE .normal + JMP .permit + + : CMP.w #$00DE : BNE + ; kholdstare + LDA $22 : AND.w #$01FF ; check x-coord + CMP.w #368-8 : !BLT .normal + CMP.w #368+32-8 : !BGE .normal + LDA $20 : AND.w #$01FF ; check y-coord + CMP.w #144-22 : !BLT .normal + CMP.w #144+32-22 : !BGE .normal + BRA .permit + + : .normal + SEP #$20 ; set 8-bit accumulator + BRA .done + .outdoors + LDA $8A : CMP.b #$70 : BNE + + LDA.l MireRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done + LDA $7EF2F0 : AND.b #$20 : BNE .done + LDA.b #$08 : PHA : PLB ; set data bank to $08 + LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire BRA .done - .outdoors - LDA $8A : CMP.b #$70 : BNE ++ - LDA.l MireRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE + - LDA $7EF2F0 : AND.b #$20 : BNE + - LDA.b #$08 : PHA : PLB ; set data bank to $08 - LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire - BRA + - ++ : CMP.b #$47 : BNE ++ - LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE + - LDA $7EF2C7 : AND.b #$20 : BNE + - LDA.b #$08 : PHA : PLB ; set data bank to $08 - LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock - ++ - .done - + - PLY : PLX : PLB - LDA $7EF359 -RTL + + : CMP.b #$47 : BNE + + LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done + LDA $7EF2C7 : AND.b #$20 : BNE .done + LDA.b #$08 : PHA : PLB ; set data bank to $08 + LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock + + + .done + PLY : PLX : PLB + LDA $7EF359 + RTL .permit - SEP #$20 ; set 8-bit accumulator - PLY : PLX : PLB - LDA.b #$02 ; Pretend we have master sword -RTL + SEP #$20 ; set 8-bit accumulator + PLY : PLX : PLB + LDA.b #$02 ; Pretend we have master sword + RTL .medallion_type db #$0F, #$10, #$11 ;================================================================================ diff --git a/tables.asm b/tables.asm index b26436f..cb45301 100644 --- a/tables.asm +++ b/tables.asm @@ -167,7 +167,7 @@ db #$00 ; #$00 = Off (default) - #$01 = On ;-------------------------------------------------------------------------------- org $308041 ; PC 0x180041 AllowSwordlessMedallionUse: -db #$00 ; #$00 = Off (default) - #$01 = Medallion Pads - #$02 = Always (Not Implemented) +db #$00 ; #$00 = Off (default) - #$01 = Medallion Pads - #$02 = Always ;-------------------------------------------------------------------------------- org $308042 ; PC 0x180042 PermitSQFromBosses: