Merged in DR v1.4.1.6

This commit is contained in:
codemann8
2024-02-23 10:57:24 -06:00
235 changed files with 30100 additions and 17937 deletions

View File

@@ -2,40 +2,40 @@
; Randomize Flute Dig Item
;--------------------------------------------------------------------------------
SpawnHauntedGroveItem:
LDA $8A : CMP.b #$2A : BEQ + : RTL : + ; Skip if not the haunted grove
LDA $1B : BEQ + : RTL : + ; Skip if indoors
LDA.b OverworldIndex : CMP.b #$2A : BEQ + : RTL : + ; Skip if not the haunted grove
LDA.b IndoorsFlag : BEQ + : RTL : + ; Skip if indoors
LDA.l HauntedGroveItem_Player : STA !MULTIWORLD_SPRITEITEM_PLAYER_ID
%GetPossiblyEncryptedItem(HauntedGroveItem, HeartPieceOutdoorValues)
; todo - how does this work now?
LDA.l HauntedGroveItem_Player : STA.l !MULTIWORLD_SPRITEITEM_PLAYER_ID
LDA.b #$EB
STA $7FFE00
STA.l MiniGameTime
JSL Sprite_SpawnDynamically
LDA.b #$01 : STA.w !SPRITE_REDRAW, Y
LDA.b #$01 : STA.w SprRedrawFlag, Y
LDX.b #$00
LDA $2F : CMP.b #$04 : BEQ + : INX : +
LDA.b LinkDirection : CMP.b #$04 : BEQ + : INX : +
LDA.l .x_speeds, X : STA $0D50, Y
LDA.l .x_speeds, X : STA.w SpriteVelocityX, Y
LDA.b #$00 : STA $0D40, Y
LDA.b #$18 : STA $0F80, Y
LDA.b #$FF : STA $0B58, Y
LDA.b #$30 : STA $0F10, Y
LDA.b #$00 : STA.w SpriteVelocityY, Y
LDA.b #$18 : STA.w SpriteVelocityZ, Y
LDA.b #$FF : STA.w EnemyStunTimer, Y
LDA.b #$30 : STA.w SpriteTimerE, Y
LDA $22 : !ADD.l .x_offsets, X
AND.b #$F0 : STA $0D10, Y
LDA $23 : ADC.b #$00 : STA $0D30, Y
LDA.b LinkPosX : !ADD.l .x_offsets, X
AND.b #$F0 : STA.w SpritePosXLow, Y
LDA.b LinkPosX+1 : ADC.b #$00 : STA.w SpritePosXHigh, Y
LDA $20 : !ADD.b #$16 : AND.b #$F0 : STA $0D00, Y
LDA $21 : ADC.b #$00 : STA $0D20, Y
LDA.b LinkPosY : !ADD.b #$16 : AND.b #$F0 : STA.w SpritePosYLow, Y
LDA.b LinkPosY+1 : ADC.b #$00 : STA.w SpritePosYHigh, Y
LDA.b #$00 : STA $0F20, Y
LDA.b #$00 : STA.w SpriteLayer, Y
TYX
LDX $8A ; haunted grove (208D0A)
LDA OverworldEventDataWRAM, X : AND.b #$40 : BNE +
LDX.b OverworldIndex ; haunted grove (208D0A)
LDA.l OverworldEventDataWRAM, X : AND.b #$40 : BNE +
LDA.b #$1B : JSL Sound_SetSfx3PanLong
+
RTL
@@ -54,33 +54,32 @@ RTL
}
;--------------------------------------------------------------------------------
FluteBoy:
LDA $10 : CMP.b #$1A : BEQ +
LDA.b #$01 : STA $0FDD
JML.l FluteBoy_Abort
LDA.b GameMode : CMP.b #$1A : BEQ +
LDA.b #$01 : STA.w $0FDD
JML FluteBoy_Abort
+
LDA $0D80, X : CMP.b #$03 ; thing we wrote over
JML.l FluteBoy_Continue
LDA.w SpriteActivity, X : CMP.b #$03 ; thing we wrote over
JML FluteBoy_Continue
;--------------------------------------------------------------------------------
FreeDuckCheck:
LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BNE .skipInvertedCheck
LDA.l InvertedMode : BEQ .done
.skipInvertedCheck
LDA FluteEquipment : CMP.b #$03 : BEQ .done ; flute is already active
LDA.l FluteEquipment : CMP.b #$03 : BEQ .done ; flute is already active
; check the area, is it #$18 = 30?
LDA $8A : CMP.b #$18 : BNE .done
LDA.b OverworldIndex : CMP.b #$18 : BNE .done
REP #$20
; Y coordinate boundaries for setting it off.
LDA $20
LDA.b LinkPosY
CMP.w #$0760 : BCC .done
CMP.w #$07E0 : BCS .done
; do if( (Ycoord >= 0x0760) && (Ycoord < 0x07e0
LDA $22
LDA.b LinkPosX
CMP.w #$01CF : BCC .done
CMP.w #$0230 : BCS .done
@@ -89,7 +88,7 @@ FreeDuckCheck:
SEP #$20
; Apparently a special Overworld mode for doing this?
LDA.b #$2D : STA $11
LDA.b #$2D : STA.b GameSubMode
; Trigger the sequence to start the weathervane explosion.
LDY.b #$00
@@ -99,12 +98,12 @@ FreeDuckCheck:
BRA .skipSong
.done
SEP #$20
LDA.b #$80 : STA $03F0 ; thing we wrote over, load flute timer
LDA.b #$80 : STA.w FluteTimer ; thing we wrote over
LDA.b #$13
RTL
.skipSong
SEP #$20
LDA.b #$80 : STA $03F0 ; thing we wrote over, load flute timer
LDA.b #$80 : STA.w FluteTimer ; thing we wrote over
LDA.b #$00
RTL
;--------------------------------------------------------------------------------