Trolls
This commit is contained in:
220
trolls.asm
Normal file
220
trolls.asm
Normal file
@@ -0,0 +1,220 @@
|
||||
IFrameData:
|
||||
db $00, $10, $20
|
||||
CalcIFrames:
|
||||
LDA.l ArmorEquipment
|
||||
PHX : TAX
|
||||
LDA.l MaximumHealth : LSR #3
|
||||
CLC : ADC.l IFrameData, X
|
||||
EOR.b #$FF
|
||||
CLC : ADC.b #$3E
|
||||
PLX
|
||||
STA.w $031F
|
||||
RTL
|
||||
|
||||
SetBombTimer:
|
||||
JSL GetRandomInt
|
||||
STA.w $039F, X
|
||||
RTL
|
||||
|
||||
SetDashTimer:
|
||||
JSL GetRandomInt
|
||||
AND.b #$1F
|
||||
STA.w $0374
|
||||
JSL GetRandomInt
|
||||
AND.b #$0F
|
||||
CLC : ADC.w $0374
|
||||
STA.w $0374
|
||||
RTL
|
||||
|
||||
ProcessFlute:
|
||||
LDA.b $1B
|
||||
BNE .play_and_leave ; indoors
|
||||
LDA.b $10
|
||||
CMP.b #$0B
|
||||
BEQ .play_and_leave ; special overworld
|
||||
JSL GetRandomInt
|
||||
BIT #$08
|
||||
BNE .cucco
|
||||
.normal
|
||||
LDA.b $8A
|
||||
AND.b #$40
|
||||
BNE .play_and_leave ; dark world
|
||||
JSR PlayDuck
|
||||
SEC : RTL ; light world; play duck sound and resume normal behavior
|
||||
.cucco
|
||||
JSR PlayCluck ; outdoors; play cucco sound
|
||||
LDA.b #$01
|
||||
STA.l !CUCCO_STORM ; turn on cucco storm
|
||||
CLC : RTL ; do not summon duck
|
||||
.play_and_leave
|
||||
JSR PlayDuck
|
||||
CLC : RTL
|
||||
|
||||
PlayDuck:
|
||||
LDA.b #$13
|
||||
STA.w $0CF8
|
||||
JSL Sound_SetSfxPanWithPlayerCoords
|
||||
ORA.w $0CF8
|
||||
STA.w $012E
|
||||
RTS
|
||||
|
||||
PlayCluck:
|
||||
LDA.b #$30
|
||||
STA.w $0CF8
|
||||
JSL Sound_SetSfxPanWithPlayerCoords
|
||||
ORA.w $0CF8
|
||||
STA.w $012E
|
||||
RTS
|
||||
|
||||
FluteMap:
|
||||
LDA.b #$00
|
||||
STA.l !CUCCO_STORM ; turn off cuccos
|
||||
LDA.b #$0E
|
||||
STA.b $10
|
||||
RTL
|
||||
|
||||
UseShovel:
|
||||
LDA.b $1B
|
||||
BEQ .normal
|
||||
.indoors
|
||||
REP #$20
|
||||
LDA.w #$0200
|
||||
STA.w $03F5
|
||||
SEP #$20
|
||||
CLC
|
||||
RTL
|
||||
.normal
|
||||
LDA.l $07A310
|
||||
STA.b $3D
|
||||
STZ.w $030D
|
||||
STZ.w $0300
|
||||
SEC
|
||||
RTL
|
||||
|
||||
BunnyThrowPot:
|
||||
LDA.b $A0 : CMP.b #$0D : BNE .throw
|
||||
LDA.b $A1 : CMP.b #$00 : BEQ .no_throw
|
||||
.throw
|
||||
LDA.b #$02
|
||||
JSL $068156
|
||||
LDA.b $3B
|
||||
AND.b #$7F
|
||||
STA.b $3B
|
||||
.no_throw
|
||||
RTL
|
||||
|
||||
SwordSwingDelay:
|
||||
LDA.l SwordEquipment : CMP.b #$02 : !BLT .normal
|
||||
CMP.b #$FF : BEQ .normal
|
||||
CPX.b #$04 : BEQ .section_4
|
||||
CPX.b #$05 : BEQ .section_5
|
||||
CPX.b #$06 : BNE .normal
|
||||
.section_6
|
||||
LDA.l SwordEquipment : CMP.b #$04 : !BGE .normal
|
||||
BRA .add_one
|
||||
.section_5
|
||||
LDA.l SwordEquipment : CMP.b #$02 : !BGE .normal
|
||||
BRA .add_one
|
||||
.section_4
|
||||
LDA.l SwordEquipment : CMP.b #$03 : !BGE .normal
|
||||
.add_one
|
||||
LDA.l $079CAF, X
|
||||
STA.b $3D
|
||||
INC
|
||||
RTL
|
||||
.normal
|
||||
LDA.l $079CAF, X
|
||||
STA.b $3D
|
||||
RTL
|
||||
|
||||
MaybeRecoil:
|
||||
LDA.w $0E20, Y
|
||||
CMP.b #$09 ; skip recoil on the giant 'dorm
|
||||
BEQ .done
|
||||
LDA.l $088E75, X
|
||||
STA.w $0F40, Y
|
||||
LDA.l $088E79, X
|
||||
STA.w $0F30, Y
|
||||
.done
|
||||
RTL
|
||||
|
||||
MaybeRecoil2:
|
||||
LDA.w $0E20, X
|
||||
CMP.b #$09
|
||||
BEQ .moldorm
|
||||
LDA.b $00
|
||||
EOR.b #$FF
|
||||
INC
|
||||
STA.w $0F30, X
|
||||
LDA.b $01
|
||||
EOR.b #$FF
|
||||
INC
|
||||
STA.w $0F40, X
|
||||
RTL
|
||||
.moldorm ; skip recoil on the giant 'dorm and unstun
|
||||
STZ.w $0B58, X
|
||||
STZ.w $0D90, X
|
||||
RTL
|
||||
|
||||
CheckMoldormRepel:
|
||||
CMP.b #$09
|
||||
BNE .not_moldorm
|
||||
LDA.w $0D90, X
|
||||
BEQ .repel
|
||||
LDA.w $0B58, X
|
||||
BEQ .repel
|
||||
.no_repel
|
||||
LDA.b #$01
|
||||
SEC : RTL
|
||||
.repel
|
||||
LDA.b #$00
|
||||
SEC : RTL
|
||||
.not_moldorm
|
||||
CLC : RTL
|
||||
|
||||
CheckMushroom:
|
||||
PHP
|
||||
SEP #$20
|
||||
LDA.l InventoryTracking
|
||||
AND.b #$20
|
||||
BEQ +
|
||||
PLP : SEC : RTL
|
||||
+ PLP : CLC : RTL
|
||||
|
||||
AgaDecision:
|
||||
LDA.b $A0
|
||||
CMP.b #$20
|
||||
BNE .aga2
|
||||
JSL RNG_Agahnim1
|
||||
AND.b #$04
|
||||
STA.w $0E30, X
|
||||
CMP.b #$04
|
||||
RTL
|
||||
.aga2
|
||||
STZ.w $0E30, X
|
||||
CMP.b #$04
|
||||
RTL
|
||||
|
||||
CheckInfiniteBombs:
|
||||
LDA.l InfiniteBombsModifier : BNE .yes
|
||||
LDA.b $A0
|
||||
CMP.b #$90
|
||||
BEQ .yes
|
||||
.no
|
||||
LDA.b #$00
|
||||
RTL
|
||||
.yes
|
||||
LDA.b #$01
|
||||
RTL
|
||||
|
||||
CheckInfiniteBombs16:
|
||||
LDA.l InfiniteBombsModifier : AND.w #$00FF : BNE .yes
|
||||
LDA.b $A0 : AND.w #$00FF
|
||||
CMP.w #$0090
|
||||
BEQ .yes
|
||||
.no
|
||||
LDA.w #$0000
|
||||
RTL
|
||||
.yes
|
||||
LDA.w #$0001
|
||||
RTL
|
||||
Reference in New Issue
Block a user