Implement always-allowed medallions
This commit is contained in:
@@ -71,15 +71,15 @@ macro DrawBombosPlatform(roomX, roomY, quadX, quadY)
|
|||||||
endMacro
|
endMacro
|
||||||
|
|
||||||
IcePalaceBombosSE:
|
IcePalaceBombosSE:
|
||||||
LDA AllowSwordlessMedallionUse : BNE + : RTL : +
|
LDA AllowSwordlessMedallionUse : CMP #$01 : BEQ + : RTL : +
|
||||||
%DrawBombosPlatform(14, 18, 1, 1)
|
%DrawBombosPlatform(14, 18, 1, 1)
|
||||||
RTL
|
RTL
|
||||||
IcePalaceBombosSW:
|
IcePalaceBombosSW:
|
||||||
LDA AllowSwordlessMedallionUse : BNE + : RTL : +
|
LDA AllowSwordlessMedallionUse : CMP #$01 : BEQ + : RTL : +
|
||||||
%DrawBombosPlatform(14, 18, 0, 1)
|
%DrawBombosPlatform(14, 18, 0, 1)
|
||||||
RTL
|
RTL
|
||||||
IcePalaceBombosNE:
|
IcePalaceBombosNE:
|
||||||
LDA AllowSwordlessMedallionUse : BNE + : RTL : +
|
LDA AllowSwordlessMedallionUse : CMP #$01 : BEQ + : RTL : +
|
||||||
%DrawBombosPlatform(14, 18, 1, 0)
|
%DrawBombosPlatform(14, 18, 1, 0)
|
||||||
RTL
|
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 ; 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 ; 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 ; 11x
|
||||||
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 12x
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 12x
|
||||||
|
|||||||
120
swordswap.asm
120
swordswap.asm
@@ -6,11 +6,11 @@
|
|||||||
;GetFairySword:
|
;GetFairySword:
|
||||||
; CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert single fighter sword to low id one
|
; 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.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
|
; 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 ItemCheck_FairySword : BEQ + : JML.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this
|
||||||
; JSL ItemSet_FairySword ; mark as got
|
; JSL ItemSet_FairySword ; mark as got
|
||||||
; LDA FairySword : STA $0DC0, X ; whichever sword
|
; LDA FairySword : STA $0DC0, X ; whichever sword
|
||||||
; LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose
|
; LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose
|
||||||
;
|
;
|
||||||
;JML.l PyramidFairy_BRANCH_GAMMA
|
;JML.l PyramidFairy_BRANCH_GAMMA
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -146,16 +146,16 @@ GetSmithSword:
|
|||||||
REP #$20 : LDA $7EF360 : CMP #$000A : SEP #$20 : !BGE .buy
|
REP #$20 : LDA $7EF360 : CMP #$000A : SEP #$20 : !BGE .buy
|
||||||
.cant_afford
|
.cant_afford
|
||||||
REP #$10
|
REP #$10
|
||||||
LDA.b #$7A
|
LDA.b #$7A
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
LDA.b #$3C : STA $012E ; error sound
|
LDA.b #$3C : STA $012E ; error sound
|
||||||
SEP #$10
|
SEP #$10
|
||||||
BRA .done
|
BRA .done
|
||||||
|
|
||||||
.buy
|
.buy
|
||||||
LDA.l SmithItem : TAY
|
LDA.l SmithItem : TAY
|
||||||
STZ $02E9 ; Item from NPC
|
STZ $02E9 ; Item from NPC
|
||||||
PHX : JSL Link_ReceiveItem : PLX
|
PHX : JSL Link_ReceiveItem : PLX
|
||||||
|
|
||||||
REP #$20 : LDA $7EF360 : !SUB.w #$000A : STA $7EF360 : SEP #$20 ; Take 10 rupees
|
REP #$20 : LDA $7EF360 : !SUB.w #$000A : STA $7EF360 : SEP #$20 ; Take 10 rupees
|
||||||
@@ -165,50 +165,68 @@ GetSmithSword:
|
|||||||
JML.l Smithy_AlreadyGotSword
|
JML.l Smithy_AlreadyGotSword
|
||||||
;================================================================================
|
;================================================================================
|
||||||
CheckMedallionSword:
|
CheckMedallionSword:
|
||||||
PHB : PHX : PHY
|
LDA.l AllowSwordlessMedallionUse : BEQ .check_sword
|
||||||
LDA.l AllowSwordlessMedallionUse : BNE +++ : JMP + : +++
|
CMP #$01 : BEQ .check_pad
|
||||||
LDA $1B : BEQ .outdoors
|
LDA.b #$02 ; Pretend we have master sword
|
||||||
.indoors
|
RTL
|
||||||
REP #$20 ; set 16-bit accumulator
|
.check_sword
|
||||||
LDA $A0 ; load room ID
|
LDA $7EF359
|
||||||
CMP.w #$000E : BNE ++ : .freezor1
|
RTL
|
||||||
LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord
|
.check_pad
|
||||||
LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord
|
PHB : PHX : PHY
|
||||||
JMP .permit
|
LDA $1B : BEQ .outdoors
|
||||||
++ : CMP.w #$007E : BNE ++ : .freezor2
|
.indoors
|
||||||
LDA $22 : AND.w #$01FF : CMP.w #112-8 : !BLT .normal : CMP.w #112+32-8 : !BGE .normal ; check x-coord
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord
|
LDA $A0 ; load room ID
|
||||||
JMP .permit
|
CMP.w #$000E : BNE + ; freezor1
|
||||||
++ : CMP.w #$00DE : BNE ++ : .kholdstare
|
LDA $22 : AND.w #$01FF ; check x-coord
|
||||||
LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord
|
CMP.w #368-8 : !BLT .normal
|
||||||
LDA $20 : AND.w #$01FF : CMP.w #144-22 : !BLT .normal : CMP.w #144+32-22 : !BGE .normal ; check y-coord
|
CMP.w #368+32-8 : !BGE .normal
|
||||||
BRA .permit
|
LDA $20 : AND.w #$01FF ; check y-coord
|
||||||
++ : .normal
|
CMP.w #400-22 : !BLT .normal
|
||||||
SEP #$20 ; set 8-bit accumulator
|
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
|
BRA .done
|
||||||
.outdoors
|
+ : CMP.b #$47 : BNE +
|
||||||
LDA $8A : CMP.b #$70 : BNE ++
|
LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done
|
||||||
LDA.l MireRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE +
|
LDA $7EF2C7 : AND.b #$20 : BNE .done
|
||||||
LDA $7EF2F0 : AND.b #$20 : BNE +
|
LDA.b #$08 : PHA : PLB ; set data bank to $08
|
||||||
LDA.b #$08 : PHA : PLB ; set data bank to $08
|
LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock
|
||||||
LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire
|
+
|
||||||
BRA +
|
.done
|
||||||
++ : CMP.b #$47 : BNE ++
|
PLY : PLX : PLB
|
||||||
LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE +
|
LDA $7EF359
|
||||||
LDA $7EF2C7 : AND.b #$20 : BNE +
|
RTL
|
||||||
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
|
.permit
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
PLY : PLX : PLB
|
PLY : PLX : PLB
|
||||||
LDA.b #$02 ; Pretend we have master sword
|
LDA.b #$02 ; Pretend we have master sword
|
||||||
RTL
|
RTL
|
||||||
.medallion_type
|
.medallion_type
|
||||||
db #$0F, #$10, #$11
|
db #$0F, #$10, #$11
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ db #$00 ; #$00 = Off (default) - #$01 = On
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308041 ; PC 0x180041
|
org $308041 ; PC 0x180041
|
||||||
AllowSwordlessMedallionUse:
|
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
|
org $308042 ; PC 0x180042
|
||||||
PermitSQFromBosses:
|
PermitSQFromBosses:
|
||||||
|
|||||||
Reference in New Issue
Block a user