151 lines
1.9 KiB
NASM
151 lines
1.9 KiB
NASM
SelectFirstFluteSpot:
|
|
LDA.l FluteBitfield
|
|
CMP.b #$FF
|
|
BNE +
|
|
RTL
|
|
+ LDA.b #$07
|
|
STA.w FluteSelection
|
|
.try_next
|
|
LDA.w FluteSelection
|
|
INC A
|
|
AND.b #$07
|
|
STA.w FluteSelection
|
|
TAX
|
|
|
|
LDA.l FluteBitfield
|
|
AND.l FluteMenuNumbers_bits, X
|
|
BNE .try_next
|
|
RTL
|
|
|
|
SelectFluteNext:
|
|
LDA.l FluteBitfield
|
|
CMP.b #$FF
|
|
BEQ InvalidBeep
|
|
|
|
.try_next
|
|
LDA.w FluteSelection
|
|
INC A
|
|
AND.b #$07
|
|
STA.w FluteSelection
|
|
TAX
|
|
|
|
LDA.l FluteBitfield
|
|
AND.l FluteMenuNumbers_bits, X
|
|
BNE .try_next
|
|
|
|
LDA.b #$20
|
|
STA.w $012F
|
|
RTL
|
|
|
|
SelectFlutePrev:
|
|
LDA.l FluteBitfield
|
|
CMP.b #$FF
|
|
BEQ InvalidBeep
|
|
|
|
.try_next
|
|
LDA.w FluteSelection
|
|
DEC A
|
|
AND.b #$07
|
|
STA.w FluteSelection
|
|
TAX
|
|
|
|
LDA.l FluteBitfield
|
|
AND.l FluteMenuNumbers_bits, X
|
|
BNE .try_next
|
|
|
|
LDA.b #$20
|
|
STA.w $012F
|
|
RTL
|
|
|
|
InvalidBeep:
|
|
LDA.b #$3C
|
|
STA.w $012E
|
|
RTL
|
|
|
|
SetFluteSpotPalette:
|
|
XBA
|
|
LDA.l FluteBitfield
|
|
AND.l FluteMenuNumbers_bits, X
|
|
BNE .disabled
|
|
.enabled
|
|
XBA
|
|
STA.b $0C
|
|
BRA .done
|
|
.disabled
|
|
LDA.b #$30
|
|
STA.b $0C
|
|
.done
|
|
LDA.b #$00
|
|
STA.b $0B
|
|
RTL
|
|
|
|
MaybeMarkFluteSpotVisited:
|
|
; don't ever allow the portal in desert/mire to be marked visited
|
|
CMP.b #$30 : BEQ .done
|
|
CMP.b #$70 : BEQ .done
|
|
|
|
LDX.b #$0E
|
|
.next
|
|
CMP.l $02E849, X
|
|
BEQ .mark
|
|
DEX : DEX
|
|
BPL .next
|
|
BRA .done
|
|
|
|
.mark
|
|
TXA
|
|
LSR A
|
|
TAX
|
|
LDA.l FluteMenuNumbers_bits, X
|
|
EOR.b #$FF
|
|
AND.l FluteBitfield
|
|
STA.l FluteBitfield
|
|
|
|
.done
|
|
RTL
|
|
|
|
CheckEnterOverworld:
|
|
LDA.l $7EC213
|
|
STA.b $8A ; what we wrote over
|
|
SEP #$20
|
|
JSL MaybeMarkFluteSpotVisited
|
|
REP #$20
|
|
RTL
|
|
|
|
CheckTransitionOverworld:
|
|
STA.b $8A
|
|
STA.w $040A ; what we wrote over
|
|
JML MaybeMarkFluteSpotVisited
|
|
|
|
CheckFlute:
|
|
LDA.l FluteBitfield
|
|
AND.w #$00FF
|
|
BNE .pseudo
|
|
.real
|
|
LDA.w #$0003
|
|
BRA .done
|
|
.pseudo
|
|
LDA.w #$0002
|
|
.done
|
|
RTS
|
|
|
|
DrawFluteIcon:
|
|
AND.w #$00FF
|
|
CMP.w #$0002
|
|
BCC +
|
|
JSR CheckFlute
|
|
+
|
|
STA.b $02
|
|
RTL
|
|
|
|
CheckFluteInHUD:
|
|
LDA.l EquipmentWRAM-1, X
|
|
AND.w #$00FF ; what we wrote over
|
|
CPX.w #$000D
|
|
BNE +
|
|
CMP.w #$0002
|
|
BCC +
|
|
JSR CheckFlute
|
|
+
|
|
RTL
|