aboutsummaryrefslogtreecommitdiff
path: root/animations/laser.gbasm
blob: 5c70eafd6c4030f08bfe30f1a0bbf10f2135832b (plain)
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
Laser_Animation:
	INC HL

	LD A, (HL+)
	ADD $80
	LD D, A
	LD A, $mem_viewport_x
	LD B, A
	SUB $82
	CP D
	RET NC
	ADD $0e
	CP D
	RET C
	LD A, D
	SUB $80
	SUB B
	AND $0f
	SWAP A
	LD B, A

	LD A, (HL+)
	ADD $80
	LD D, A
	LD A, $mem_viewport_y
	LD C, A
	SUB $82
	CP D
	RET NC
	ADD $0d
	CP D
	RET C
	LD A, D
	SUB $80
	SUB C
	AND $0f
	SWAP A
	ADD $06
	LD C, A

	LD E, (HL)
	DEC E
	DEC E
	CP E
	JP C, =.End_animation
	LD (HL), E

	DEC HL
	DEC HL
	DEC HL
	LD A, (HL+)
	SWAP A
	SRA A
	SRA A
	AND $03
	INC A
	LD D, A

	LD A, $04
	ADD B
	LD B, A

	LD A, $04
	ADD C
	LD C, A

	LD A, $0f
	AND E
	CP $00
	JR NZ =.Skip_move_animation_tile

	PUSH BC

	LD B, (HL)
	INC HL
	LD C, (HL)

	LD A, $01
	.ADD_A_TO_DIRECTION_BC

	LD (HL), C
	DEC HL
	LD (HL), B

	POP BC

	.Skip_move_animation_tile:

	LD A, $0f
	AND E
	CPL
	INC A
	ADD $0f
	
	.ADD_A_TO_DIRECTION_BC

	.ADD_MOVING_ANIMATION_OFFSET

	PUSH HL
	LD HL, $mem_oam_buffer
	LD A, $mem_oam_buffer_low
	LD L, A

	LD A, C
	LD (HL+), A

	LD A, B
	LD (HL+), A
	LD A, $64
	LD (HL+), A
	LD A, $00
	LD (HL+), A

	LD A, L
	LD $mem_oam_buffer_low, A

	POP HL
	RET

	.End_animation:
	LD A, L
	AND $fc
	LD L, A
	LD (HL), $00
	RET