-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathancilla_dash_dust.asm
150 lines (97 loc) · 3.02 KB
/
ancilla_dash_dust.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
; ==============================================================================
; $43BF4-$43C91 DATA
pool Ancilla_DashDust:
{
.y_offsets
dw -2, 0, -1
dw -3, -2, 0
dw -3, 0, -1
dw -3, -1, -1
dw -2, -1, -1
dw -2, 0, -1
dw -3, -2, 0
dw -3, 0, -1
dw -3, -1, -1
dw -2, -1, -1
.x_offsets
dw 10, 5, -1
dw 0, 10, 5
dw 0, 5, -1
dw 0, -1, -1
dw 9, -1, -1
dw 10, 5, -1
dw 0, 10, 5
dw 0, 5, -1
dw 0, -1, -1
dw 9, -1, -1
.chr
db $CF, $A9, $FF
db $A9, $DF, $CF
db $CF, $DF, $FF
db $DF, $FF, $FF
db $A9, $FF, $FF
db $CF, $CF, $FF
db $CF, $DF, $CF
db $CF, $DF, $FF
db $DF, $FF, $FF
db $CF, $FF, $FF
.player_relative_offset
dw 0, 0, 4, -4
}
; ==============================================================================
; *$43C92-$43D4B JUMP LOCATION
Ancilla_DashDust:
{
LDA $0C54, X : BEQ .stationary_dust
JSL Ancilla_MotiveDashDust
BRA .return
.stationary_dust
LDA $0C68, X : BNE .delay
LDA.b #$03 : STA $0C68, X
LDA $0C5E, X : INC A : STA $0C5E, X : CMP.b #$05 : BEQ .return
CMP.b #$06 : BNE .delay
STZ $0C4A, X
.return
RTS
.delay
LDA $0C5E, X : CMP.b #$05 : BEQ .return
JSR Ancilla_PrepOamCoord
PHX
LDA $00 : STA $06
LDA $01 : STA $07
LDA $02 : STA $08
LDA $03 : STA $09
LDY $2F
LDA .player_relative_offset+0, Y : STA $0C
LDA .player_relative_offset+1, Y : STA $0D
LDY.b #$00
LDA $0351 : CMP.b #$01 : BNE .not_standing_in_water
LDY.b #$05
.not_standing_in_water
STY $04
LDA $0C5E, X : ADD $04 : STA $04
ASL A : ADD $04 : STA $04
LDA.b #$02 : STA $72
LDY.b #$00
.next_oam_entry
LDX $04
LDA $BC6C, X : CMP.b #$FF : BEQ .skip_oam_entry
TXA : ASL A : TAX
REP #$20
LDA $06 : ADD .y_offsets, X : STA $00
LDA $08 : ADD .x_offsets, X : ADD $0C : STA $02
SEP #$20
JSR Ancilla_SetOam_XY
LDX $04
LDA .chr, X : STA ($90), Y : INY
LDA.b #$04 : ORA $65 : STA ($90), Y : INY
PHY : TYA : SUB.b #$04 : LSR #2 : TAY
LDA.b #$00 : STA ($92), Y
PLY
.skip_oam_entry
INC $04
DEC $72 : BPL .next_oam_entry
PLX
RTS
}
; ==============================================================================