summaryrefslogtreecommitdiff
path: root/libmeidogte/inline_s.h
blob: 08e5c3858ad345f9fbad69f2806c6617faa0fa98 (plain) (blame)
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
# Inline GTE macros for GNU assembler (as).
#
# 2019 Meido-Tek Productions
#

.macro nRTPS
	nop
	nop
	cop2 0x0180001
.endm

.macro nRTPT
	nop
	nop
	cop2 0x0280030
.endm

.macro nNCLIP
	nop
	nop
	cop2 0x1400006
.endm
	
.macro nAVSZ3
	nop
	nop
	cop2 0x158002D
.endm
	
.macro nAVSZ4
	nop
	nop
	cop2 0x168002E
.endm

.macro nMVMVA sf mx v cv lm
	nop
	nop
	cop2	0x0400012|(\sf<<19)|(\mx<<17)|(\v<<15)|(\cv<<13)|(\lm<<10)
.endm
	
.macro nSQR sf
	nop
	nop
	cop2	0x0A00428|(\sf<<19)
.endm
	
.macro nnOP sf lm	# extra n to prevent conflict with the nop opcode
	nop
	nop
	cop2	0x170000C|(\sf<<19)|(\lm<<10)
.endm
	
.macro nNCS
	nop
	nop
	cop2	0x0C8041E
.endm
	
.macro nNCT
	nop
	nop
	cop2	0x0D80420
.endm
	
.macro nNCCS
	nop
	nop
	cop2	0x108041B
.endm
	
.macro nNCCT
	nop
	nop
	cop2	0x118043F
.endm
	
.macro nNCDS
	nop
	nop
	cop2	0x0E80413
.endm
	
.macro nNCDT
	nop
	nop
	cop2	0x0F80416
.endm
	
.macro nCC
	nop
	nop
	cop2	0x138041C
.endm
	
.macro nCDP
	nop
	nop
	cop2	0x1280414
.endm
	
.macro nDCPL
	nop
	nop
	cop2	0x0680029
.endm
	
.macro nDPCS
	nop
	nop
	cop2	0x0780010
.endm
	
.macro nDPCT
	nop
	nop
	cop2	0x0180001
.endm

.macro nINTPL
	nop
	nop
	cop2	0x0980011
.endm

.macro nGPF sf
	nop
	nop
	cop2	0x190003D|(\sf<<19)
.endm
	
.macro nGPL sf
	nop
	nop
	cop2	0x1A0003E|(\sf<<19)
.endm
	
#
# Macros without leading nops (for optimized usage)
#
.macro RTPS
	cop2 0x0180001
.endm

.macro RTPT
	cop2 0x0280030
.endm

.macro NCLIP
	cop2 0x1400006
.endm
	
.macro AVSZ3
	cop2 0x158002D
.endm
	
.macro AVSZ4
	cop2 0x168002E
.endm

.macro MVMVA sf mx v cv lm
	cop2	0x0400012|(\sf<<19)|(\mx<<17)|(\v<<15)|(\cv<<13)|(\lm<<10)
.endm
	
.macro SQR sf
	cop2	0x0A00428|(\sf<<19)
.endm
	
.macro OP sf lm
	cop2	0x170000C|(\sf<<19)|(\lm<<10)
.endm
	
.macro NCS
	cop2	0x0C8041E
.endm
	
.macro NCT
	cop2	0x0D80420
.endm
	
.macro NCCS
	cop2	0x108041B
.endm
	
.macro NCCT
	cop2	0x118043F
.endm
	
.macro NCDS
	cop2	0x0E80413
.endm
	
.macro NCDT
	cop2	0x0F80416
.endm
	
.macro CC
	cop2	0x138041C
.endm
	
.macro CDP
	cop2	0x1280414
.endm
	
.macro DCPL
	cop2	0x0680029
.endm
	
.macro DPCS
	cop2	0x0780010
.endm
	
.macro DPCT
	cop2	0x0180001
.endm

.macro INTPL
	cop2	0x0980011
.endm

.macro GPF sf
	cop2	0x190003D|(\sf<<19)
.endm

.macro GPL sf
	cop2	0x1A0003E|(\sf<<19)
.endm