aboutsummaryrefslogtreecommitdiff
path: root/animations/laser.gbasm
blob: a3536d75ee6c0467d5cac403d68ca4338b49fc49 (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
126
127
128
129
130
Set_E_Skip_display:
	LD E, $01
RET

Laser_Animation:
	INC HL

	LD E, $00

	LD A, (HL+)
	ADD $80
	LD D, A
	LD A, $mem_viewport_x
	LD B, A
	SUB $82
	CP D
	CALL NC, =Set_E_Skip_display
	ADD $0e
	CP D
	CALL C, =Set_E_Skip_display
	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
	CALL NC, =Set_E_Skip_display
	ADD $0d
	CP D
	CALL C, =Set_E_Skip_display
	LD A, D
	SUB $80
	SUB C
	AND $0f
	SWAP A
	ADD $06
	LD C, A

	LD A, E
	LD $tmp_var_1, A

	LD A, (HL)
	SUB $02
	JP C, =End_animation
	LD E, A
	LD (HL), A

	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, $tmp_var_1
	CP $01
	RET Z

	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, $vram_animation_index+4
	LD (HL+), A
	LD A, $00
	LD (HL+), A

	LD A, L
	LD $mem_oam_buffer_low, A

	POP HL
	RET